UNPKG

4.37 MBJavaScriptView Raw
1/**
2 * @ag-grid-community/all-modules - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
3 * @version v27.3.0
4 * @link https://www.ag-grid.com/
5 * @license MIT
6 */
7// @ag-grid-community/all-modules v27.3.0
8define("agGrid", [], function() { return /******/ (function(modules) { // webpackBootstrap
9/******/ // The module cache
10/******/ var installedModules = {};
11/******/
12/******/ // The require function
13/******/ function __webpack_require__(moduleId) {
14/******/
15/******/ // Check if module is in cache
16/******/ if(installedModules[moduleId]) {
17/******/ return installedModules[moduleId].exports;
18/******/ }
19/******/ // Create a new module (and put it into the cache)
20/******/ var module = installedModules[moduleId] = {
21/******/ i: moduleId,
22/******/ l: false,
23/******/ exports: {}
24/******/ };
25/******/
26/******/ // Execute the module function
27/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
28/******/
29/******/ // Flag the module as loaded
30/******/ module.l = true;
31/******/
32/******/ // Return the exports of the module
33/******/ return module.exports;
34/******/ }
35/******/
36/******/
37/******/ // expose the modules object (__webpack_modules__)
38/******/ __webpack_require__.m = modules;
39/******/
40/******/ // expose the module cache
41/******/ __webpack_require__.c = installedModules;
42/******/
43/******/ // define getter function for harmony exports
44/******/ __webpack_require__.d = function(exports, name, getter) {
45/******/ if(!__webpack_require__.o(exports, name)) {
46/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
47/******/ }
48/******/ };
49/******/
50/******/ // define __esModule on exports
51/******/ __webpack_require__.r = function(exports) {
52/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
53/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
54/******/ }
55/******/ Object.defineProperty(exports, '__esModule', { value: true });
56/******/ };
57/******/
58/******/ // create a fake namespace object
59/******/ // mode & 1: value is a module id, require it
60/******/ // mode & 2: merge all properties of value into the ns
61/******/ // mode & 4: return value when already ns object
62/******/ // mode & 8|1: behave like require
63/******/ __webpack_require__.t = function(value, mode) {
64/******/ if(mode & 1) value = __webpack_require__(value);
65/******/ if(mode & 8) return value;
66/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
67/******/ var ns = Object.create(null);
68/******/ __webpack_require__.r(ns);
69/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
70/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
71/******/ return ns;
72/******/ };
73/******/
74/******/ // getDefaultExport function for compatibility with non-harmony modules
75/******/ __webpack_require__.n = function(module) {
76/******/ var getter = module && module.__esModule ?
77/******/ function getDefault() { return module['default']; } :
78/******/ function getModuleExports() { return module; };
79/******/ __webpack_require__.d(getter, 'a', getter);
80/******/ return getter;
81/******/ };
82/******/
83/******/ // Object.prototype.hasOwnProperty.call
84/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
85/******/
86/******/ // __webpack_public_path__
87/******/ __webpack_require__.p = "";
88/******/
89/******/
90/******/ // Load entry module and return exports
91/******/ return __webpack_require__(__webpack_require__.s = 0);
92/******/ })
93/************************************************************************/
94/******/ ([
95/* 0 */
96/***/ (function(module, exports, __webpack_require__) {
97
98/**
99 * AUTOMATICALLY GENERATED FILE, DO NOT EDIT MANUALLY!
100 * Update this file by running `lerna run webpack-updater` in the monorepo root folder.
101 */
102var ClientSideRowModelModule = __webpack_require__(1);
103var GridCoreModule = __webpack_require__(3);
104var CsvExportModule = __webpack_require__(259);
105var InfiniteRowModelModule = __webpack_require__(269);
106var agGrid = __webpack_require__(274);
107Object.keys(agGrid).forEach(function(key) {
108 exports[key] = agGrid[key];
109});
110agGrid.ModuleRegistry.register(ClientSideRowModelModule.ClientSideRowModelModule);
111agGrid.ModuleRegistry.register(CsvExportModule.CsvExportModule);
112agGrid.ModuleRegistry.register(InfiniteRowModelModule.InfiniteRowModelModule);
113__webpack_require__(275);
114__webpack_require__(279);
115__webpack_require__(281);
116__webpack_require__(283);
117__webpack_require__(285);
118__webpack_require__(287);
119__webpack_require__(289);
120__webpack_require__(291);
121__webpack_require__(293);
122__webpack_require__(295);
123__webpack_require__(297);
124__webpack_require__(299);
125__webpack_require__(301);
126__webpack_require__(303);
127
128/***/ }),
129/* 1 */
130/***/ (function(module, __webpack_exports__, __webpack_require__) {
131
132"use strict";
133__webpack_require__.r(__webpack_exports__);
134/* harmony import */ var _clientSideRowModelModule__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
135/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ClientSideRowModelModule", function() { return _clientSideRowModelModule__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelModule"]; });
136
137
138
139
140/***/ }),
141/* 2 */
142/***/ (function(module, __webpack_exports__, __webpack_require__) {
143
144"use strict";
145__webpack_require__.r(__webpack_exports__);
146/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ClientSideRowModelModule", function() { return ClientSideRowModelModule; });
147/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
148/* harmony import */ var _clientSideRowModel_clientSideRowModel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(251);
149/* harmony import */ var _clientSideRowModel_filterStage__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(253);
150/* harmony import */ var _clientSideRowModel_sortStage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(254);
151/* harmony import */ var _clientSideRowModel_flattenStage__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(255);
152/* harmony import */ var _clientSideRowModel_sortService__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(256);
153/* harmony import */ var _clientSideRowModel_filterService__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(257);
154/* harmony import */ var _clientSideRowModel_immutableService__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(258);
155
156
157
158
159
160
161
162
163var ClientSideRowModelModule = {
164 moduleName: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ModuleNames"].ClientSideRowModelModule,
165 beans: [_clientSideRowModel_filterStage__WEBPACK_IMPORTED_MODULE_2__["FilterStage"], _clientSideRowModel_sortStage__WEBPACK_IMPORTED_MODULE_3__["SortStage"], _clientSideRowModel_flattenStage__WEBPACK_IMPORTED_MODULE_4__["FlattenStage"], _clientSideRowModel_sortService__WEBPACK_IMPORTED_MODULE_5__["SortService"], _clientSideRowModel_filterService__WEBPACK_IMPORTED_MODULE_6__["FilterService"], _clientSideRowModel_immutableService__WEBPACK_IMPORTED_MODULE_7__["ImmutableService"]],
166 rowModels: { clientSide: _clientSideRowModel_clientSideRowModel__WEBPACK_IMPORTED_MODULE_1__["ClientSideRowModel"] }
167};
168
169
170/***/ }),
171/* 3 */
172/***/ (function(module, __webpack_exports__, __webpack_require__) {
173
174"use strict";
175__webpack_require__.r(__webpack_exports__);
176/* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var _columns_columnFactory__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5);
177/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColumnFactory", function() { return _columns_columnFactory__WEBPACK_IMPORTED_MODULE_0__["ColumnFactory"]; });
178
179/* harmony import */ var _columns_columnModel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(22);
180/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColumnModel", function() { return _columns_columnModel__WEBPACK_IMPORTED_MODULE_1__["ColumnModel"]; });
181
182/* harmony import */ var _columns_columnKeyCreator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(6);
183/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColumnKeyCreator", function() { return _columns_columnKeyCreator__WEBPACK_IMPORTED_MODULE_2__["ColumnKeyCreator"]; });
184
185/* harmony import */ var _columns_columnUtils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(28);
186/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColumnUtils", function() { return _columns_columnUtils__WEBPACK_IMPORTED_MODULE_3__["ColumnUtils"]; });
187
188/* harmony import */ var _columns_displayedGroupCreator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(29);
189/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DisplayedGroupCreator", function() { return _columns_displayedGroupCreator__WEBPACK_IMPORTED_MODULE_4__["DisplayedGroupCreator"]; });
190
191/* harmony import */ var _columns_groupInstanceIdCreator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(25);
192/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GroupInstanceIdCreator", function() { return _columns_groupInstanceIdCreator__WEBPACK_IMPORTED_MODULE_5__["GroupInstanceIdCreator"]; });
193
194/* harmony import */ var _components_componentUtil__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(30);
195/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ComponentUtil", function() { return _components_componentUtil__WEBPACK_IMPORTED_MODULE_6__["ComponentUtil"]; });
196
197/* harmony import */ var _components_agStackComponentsRegistry__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(32);
198/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgStackComponentsRegistry", function() { return _components_agStackComponentsRegistry__WEBPACK_IMPORTED_MODULE_7__["AgStackComponentsRegistry"]; });
199
200/* harmony import */ var _components_colDefUtil__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(33);
201/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColDefUtil", function() { return _components_colDefUtil__WEBPACK_IMPORTED_MODULE_8__["ColDefUtil"]; });
202
203/* harmony import */ var _components_framework_userComponentRegistry__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(34);
204/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "UserComponentRegistry", function() { return _components_framework_userComponentRegistry__WEBPACK_IMPORTED_MODULE_9__["UserComponentRegistry"]; });
205
206/* harmony import */ var _components_framework_userComponentFactory__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(102);
207/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "UserComponentFactory", function() { return _components_framework_userComponentFactory__WEBPACK_IMPORTED_MODULE_10__["UserComponentFactory"]; });
208
209/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(20);
210/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BeanStub", function() { return _context_beanStub__WEBPACK_IMPORTED_MODULE_11__["BeanStub"]; });
211
212/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(12);
213/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Context", function() { return _context_context__WEBPACK_IMPORTED_MODULE_12__["Context"]; });
214
215/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Autowired", function() { return _context_context__WEBPACK_IMPORTED_MODULE_12__["Autowired"]; });
216
217/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PostConstruct", function() { return _context_context__WEBPACK_IMPORTED_MODULE_12__["PostConstruct"]; });
218
219/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PreConstruct", function() { return _context_context__WEBPACK_IMPORTED_MODULE_12__["PreConstruct"]; });
220
221/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Optional", function() { return _context_context__WEBPACK_IMPORTED_MODULE_12__["Optional"]; });
222
223/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Bean", function() { return _context_context__WEBPACK_IMPORTED_MODULE_12__["Bean"]; });
224
225/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Qualifier", function() { return _context_context__WEBPACK_IMPORTED_MODULE_12__["Qualifier"]; });
226
227/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PreDestroy", function() { return _context_context__WEBPACK_IMPORTED_MODULE_12__["PreDestroy"]; });
228
229/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(57);
230/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "QuerySelector", function() { return _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_13__["QuerySelector"]; });
231
232/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RefSelector", function() { return _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_13__["RefSelector"]; });
233
234/* harmony import */ var _interfaces_iExcelCreator__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(105);
235/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ExcelFactoryMode", function() { return _interfaces_iExcelCreator__WEBPACK_IMPORTED_MODULE_14__["ExcelFactoryMode"]; });
236
237/* harmony import */ var _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(97);
238/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragAndDropService", function() { return _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_15__["DragAndDropService"]; });
239
240/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragSourceType", function() { return _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_15__["DragSourceType"]; });
241
242/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HorizontalDirection", function() { return _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_15__["HorizontalDirection"]; });
243
244/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VerticalDirection", function() { return _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_15__["VerticalDirection"]; });
245
246/* harmony import */ var _dragAndDrop_dragService__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(106);
247/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragService", function() { return _dragAndDrop_dragService__WEBPACK_IMPORTED_MODULE_16__["DragService"]; });
248
249/* harmony import */ var _entities_column__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(10);
250/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Column", function() { return _entities_column__WEBPACK_IMPORTED_MODULE_17__["Column"]; });
251
252/* harmony import */ var _entities_columnGroup__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(9);
253/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColumnGroup", function() { return _entities_columnGroup__WEBPACK_IMPORTED_MODULE_18__["ColumnGroup"]; });
254
255/* harmony import */ var _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(8);
256/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ProvidedColumnGroup", function() { return _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_19__["ProvidedColumnGroup"]; });
257
258/* harmony import */ var _entities_rowNode__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(94);
259/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowNode", function() { return _entities_rowNode__WEBPACK_IMPORTED_MODULE_20__["RowNode"]; });
260
261/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowHighlightPosition", function() { return _entities_rowNode__WEBPACK_IMPORTED_MODULE_20__["RowHighlightPosition"]; });
262
263/* harmony import */ var _filter_filterManager__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(107);
264/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "FilterManager", function() { return _filter_filterManager__WEBPACK_IMPORTED_MODULE_21__["FilterManager"]; });
265
266/* harmony import */ var _filter_provided_providedFilter__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(62);
267/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ProvidedFilter", function() { return _filter_provided_providedFilter__WEBPACK_IMPORTED_MODULE_22__["ProvidedFilter"]; });
268
269/* harmony import */ var _filter_provided_simpleFilter__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(60);
270/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SimpleFilter", function() { return _filter_provided_simpleFilter__WEBPACK_IMPORTED_MODULE_23__["SimpleFilter"]; });
271
272/* harmony import */ var _filter_provided_scalarFilter__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(72);
273/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ScalarFilter", function() { return _filter_provided_scalarFilter__WEBPACK_IMPORTED_MODULE_24__["ScalarFilter"]; });
274
275/* harmony import */ var _filter_provided_number_numberFilter__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(76);
276/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NumberFilter", function() { return _filter_provided_number_numberFilter__WEBPACK_IMPORTED_MODULE_25__["NumberFilter"]; });
277
278/* harmony import */ var _filter_provided_text_textFilter__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(79);
279/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TextFilter", function() { return _filter_provided_text_textFilter__WEBPACK_IMPORTED_MODULE_26__["TextFilter"]; });
280
281/* harmony import */ var _filter_provided_date_dateFilter__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(58);
282/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DateFilter", function() { return _filter_provided_date_dateFilter__WEBPACK_IMPORTED_MODULE_27__["DateFilter"]; });
283
284/* harmony import */ var _filter_provided_text_textFloatingFilter__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(80);
285/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TextFloatingFilter", function() { return _filter_provided_text_textFloatingFilter__WEBPACK_IMPORTED_MODULE_28__["TextFloatingFilter"]; });
286
287/* harmony import */ var _headerRendering_cells_floatingFilter_headerFilterCellComp__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(108);
288/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderFilterCellComp", function() { return _headerRendering_cells_floatingFilter_headerFilterCellComp__WEBPACK_IMPORTED_MODULE_29__["HeaderFilterCellComp"]; });
289
290/* harmony import */ var _filter_floating_floatingFilterMapper__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(104);
291/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "FloatingFilterMapper", function() { return _filter_floating_floatingFilterMapper__WEBPACK_IMPORTED_MODULE_30__["FloatingFilterMapper"]; });
292
293/* harmony import */ var _gridBodyComp_gridBodyComp__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(110);
294/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridBodyComp", function() { return _gridBodyComp_gridBodyComp__WEBPACK_IMPORTED_MODULE_31__["GridBodyComp"]; });
295
296/* harmony import */ var _gridBodyComp_gridBodyCtrl__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(114);
297/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridBodyCtrl", function() { return _gridBodyComp_gridBodyCtrl__WEBPACK_IMPORTED_MODULE_32__["GridBodyCtrl"]; });
298
299/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowAnimationCssClasses", function() { return _gridBodyComp_gridBodyCtrl__WEBPACK_IMPORTED_MODULE_32__["RowAnimationCssClasses"]; });
300
301/* harmony import */ var _gridBodyComp_scrollVisibleService__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(137);
302/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ScrollVisibleService", function() { return _gridBodyComp_scrollVisibleService__WEBPACK_IMPORTED_MODULE_33__["ScrollVisibleService"]; });
303
304/* harmony import */ var _gridBodyComp_mouseEventService__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(138);
305/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MouseEventService", function() { return _gridBodyComp_mouseEventService__WEBPACK_IMPORTED_MODULE_34__["MouseEventService"]; });
306
307/* harmony import */ var _gridBodyComp_navigationService__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(139);
308/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NavigationService", function() { return _gridBodyComp_navigationService__WEBPACK_IMPORTED_MODULE_35__["NavigationService"]; });
309
310/* harmony import */ var _gridBodyComp_rowContainer_rowContainerComp__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(140);
311/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowContainerComp", function() { return _gridBodyComp_rowContainer_rowContainerComp__WEBPACK_IMPORTED_MODULE_36__["RowContainerComp"]; });
312
313/* harmony import */ var _gridBodyComp_rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(118);
314/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowContainerName", function() { return _gridBodyComp_rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_37__["RowContainerName"]; });
315
316/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowContainerCtrl", function() { return _gridBodyComp_rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_37__["RowContainerCtrl"]; });
317
318/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowContainerType", function() { return _gridBodyComp_rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_37__["RowContainerType"]; });
319
320/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getRowContainerTypeForName", function() { return _gridBodyComp_rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_37__["getRowContainerTypeForName"]; });
321
322/* harmony import */ var _headerRendering_columnDrag_bodyDropPivotTarget__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(144);
323/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BodyDropPivotTarget", function() { return _headerRendering_columnDrag_bodyDropPivotTarget__WEBPACK_IMPORTED_MODULE_38__["BodyDropPivotTarget"]; });
324
325/* harmony import */ var _headerRendering_columnDrag_bodyDropTarget__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(145);
326/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BodyDropTarget", function() { return _headerRendering_columnDrag_bodyDropTarget__WEBPACK_IMPORTED_MODULE_39__["BodyDropTarget"]; });
327
328/* harmony import */ var _headerRendering_cells_cssClassApplier__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(147);
329/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CssClassApplier", function() { return _headerRendering_cells_cssClassApplier__WEBPACK_IMPORTED_MODULE_40__["CssClassApplier"]; });
330
331/* harmony import */ var _headerRendering_rowContainer_headerRowContainerComp__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(148);
332/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderRowContainerComp", function() { return _headerRendering_rowContainer_headerRowContainerComp__WEBPACK_IMPORTED_MODULE_41__["HeaderRowContainerComp"]; });
333
334/* harmony import */ var _headerRendering_gridHeaderComp__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(167);
335/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridHeaderComp", function() { return _headerRendering_gridHeaderComp__WEBPACK_IMPORTED_MODULE_42__["GridHeaderComp"]; });
336
337/* harmony import */ var _headerRendering_gridHeaderCtrl__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(168);
338/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridHeaderCtrl", function() { return _headerRendering_gridHeaderCtrl__WEBPACK_IMPORTED_MODULE_43__["GridHeaderCtrl"]; });
339
340/* harmony import */ var _headerRendering_row_headerRowComp__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(149);
341/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderRowComp", function() { return _headerRendering_row_headerRowComp__WEBPACK_IMPORTED_MODULE_44__["HeaderRowComp"]; });
342
343/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderRowType", function() { return _headerRendering_row_headerRowComp__WEBPACK_IMPORTED_MODULE_44__["HeaderRowType"]; });
344
345/* harmony import */ var _headerRendering_row_headerRowCtrl__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(153);
346/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderRowCtrl", function() { return _headerRendering_row_headerRowCtrl__WEBPACK_IMPORTED_MODULE_45__["HeaderRowCtrl"]; });
347
348/* harmony import */ var _headerRendering_cells_column_headerCellCtrl__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(160);
349/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderCellCtrl", function() { return _headerRendering_cells_column_headerCellCtrl__WEBPACK_IMPORTED_MODULE_46__["HeaderCellCtrl"]; });
350
351/* harmony import */ var _headerRendering_cells_floatingFilter_headerFilterCellCtrl__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(154);
352/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderFilterCellCtrl", function() { return _headerRendering_cells_floatingFilter_headerFilterCellCtrl__WEBPACK_IMPORTED_MODULE_47__["HeaderFilterCellCtrl"]; });
353
354/* harmony import */ var _headerRendering_cells_columnGroup_headerGroupCellCtrl__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(164);
355/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderGroupCellCtrl", function() { return _headerRendering_cells_columnGroup_headerGroupCellCtrl__WEBPACK_IMPORTED_MODULE_48__["HeaderGroupCellCtrl"]; });
356
357/* harmony import */ var _headerRendering_cells_abstractCell_abstractHeaderCellCtrl__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(155);
358/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AbstractHeaderCellCtrl", function() { return _headerRendering_cells_abstractCell_abstractHeaderCellCtrl__WEBPACK_IMPORTED_MODULE_49__["AbstractHeaderCellCtrl"]; });
359
360/* harmony import */ var _headerRendering_rowContainer_headerRowContainerCtrl__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(152);
361/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderRowContainerCtrl", function() { return _headerRendering_rowContainer_headerRowContainerCtrl__WEBPACK_IMPORTED_MODULE_50__["HeaderRowContainerCtrl"]; });
362
363/* harmony import */ var _headerRendering_common_horizontalResizeService__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(170);
364/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HorizontalResizeService", function() { return _headerRendering_common_horizontalResizeService__WEBPACK_IMPORTED_MODULE_51__["HorizontalResizeService"]; });
365
366/* harmony import */ var _headerRendering_columnDrag_moveColumnFeature__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(146);
367/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MoveColumnFeature", function() { return _headerRendering_columnDrag_moveColumnFeature__WEBPACK_IMPORTED_MODULE_52__["MoveColumnFeature"]; });
368
369/* harmony import */ var _headerRendering_cells_column_standardMenu__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(171);
370/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "StandardMenuFactory", function() { return _headerRendering_cells_column_standardMenu__WEBPACK_IMPORTED_MODULE_53__["StandardMenuFactory"]; });
371
372/* harmony import */ var _layout_tabbedLayout__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(172);
373/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TabbedLayout", function() { return _layout_tabbedLayout__WEBPACK_IMPORTED_MODULE_54__["TabbedLayout"]; });
374
375/* harmony import */ var _misc_simpleHttpRequest__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(173);
376/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "simpleHttpRequest", function() { return _misc_simpleHttpRequest__WEBPACK_IMPORTED_MODULE_55__["simpleHttpRequest"]; });
377
378/* harmony import */ var _misc_resizeObserverService__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(174);
379/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ResizeObserverService", function() { return _misc_resizeObserverService__WEBPACK_IMPORTED_MODULE_56__["ResizeObserverService"]; });
380
381/* harmony import */ var _misc_animationFrameService__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(175);
382/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AnimationFrameService", function() { return _misc_animationFrameService__WEBPACK_IMPORTED_MODULE_57__["AnimationFrameService"]; });
383
384/* harmony import */ var _rendering_cellEditors_largeTextCellEditor__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(84);
385/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "LargeTextCellEditor", function() { return _rendering_cellEditors_largeTextCellEditor__WEBPACK_IMPORTED_MODULE_58__["LargeTextCellEditor"]; });
386
387/* harmony import */ var _rendering_cellEditors_popupEditorWrapper__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(143);
388/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PopupEditorWrapper", function() { return _rendering_cellEditors_popupEditorWrapper__WEBPACK_IMPORTED_MODULE_59__["PopupEditorWrapper"]; });
389
390/* harmony import */ var _rendering_cellEditors_popupSelectCellEditor__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(86);
391/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PopupSelectCellEditor", function() { return _rendering_cellEditors_popupSelectCellEditor__WEBPACK_IMPORTED_MODULE_60__["PopupSelectCellEditor"]; });
392
393/* harmony import */ var _rendering_cellEditors_popupTextCellEditor__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(88);
394/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PopupTextCellEditor", function() { return _rendering_cellEditors_popupTextCellEditor__WEBPACK_IMPORTED_MODULE_61__["PopupTextCellEditor"]; });
395
396/* harmony import */ var _rendering_cellEditors_selectCellEditor__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(87);
397/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SelectCellEditor", function() { return _rendering_cellEditors_selectCellEditor__WEBPACK_IMPORTED_MODULE_62__["SelectCellEditor"]; });
398
399/* harmony import */ var _rendering_cellEditors_textCellEditor__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(89);
400/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TextCellEditor", function() { return _rendering_cellEditors_textCellEditor__WEBPACK_IMPORTED_MODULE_63__["TextCellEditor"]; });
401
402/* harmony import */ var _rendering_beans__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(128);
403/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Beans", function() { return _rendering_beans__WEBPACK_IMPORTED_MODULE_64__["Beans"]; });
404
405/* harmony import */ var _rendering_cellRenderers_animateShowChangeCellRenderer__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(90);
406/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AnimateShowChangeCellRenderer", function() { return _rendering_cellRenderers_animateShowChangeCellRenderer__WEBPACK_IMPORTED_MODULE_65__["AnimateShowChangeCellRenderer"]; });
407
408/* harmony import */ var _rendering_cellRenderers_animateSlideCellRenderer__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(91);
409/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AnimateSlideCellRenderer", function() { return _rendering_cellRenderers_animateSlideCellRenderer__WEBPACK_IMPORTED_MODULE_66__["AnimateSlideCellRenderer"]; });
410
411/* harmony import */ var _rendering_cellRenderers_groupCellRenderer__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(92);
412/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GroupCellRenderer", function() { return _rendering_cellRenderers_groupCellRenderer__WEBPACK_IMPORTED_MODULE_67__["GroupCellRenderer"]; });
413
414/* harmony import */ var _rendering_cellRenderers_groupCellRendererCtrl__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(93);
415/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GroupCellRendererCtrl", function() { return _rendering_cellRenderers_groupCellRendererCtrl__WEBPACK_IMPORTED_MODULE_68__["GroupCellRendererCtrl"]; });
416
417/* harmony import */ var _rendering_features_setLeftFeature__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(158);
418/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SetLeftFeature", function() { return _rendering_features_setLeftFeature__WEBPACK_IMPORTED_MODULE_69__["SetLeftFeature"]; });
419
420/* harmony import */ var _rendering_features_positionableFeature__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(176);
421/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PositionableFeature", function() { return _rendering_features_positionableFeature__WEBPACK_IMPORTED_MODULE_70__["PositionableFeature"]; });
422
423/* harmony import */ var _rendering_autoWidthCalculator__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(177);
424/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AutoWidthCalculator", function() { return _rendering_autoWidthCalculator__WEBPACK_IMPORTED_MODULE_71__["AutoWidthCalculator"]; });
425
426/* harmony import */ var _rendering_checkboxSelectionComponent__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(95);
427/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CheckboxSelectionComponent", function() { return _rendering_checkboxSelectionComponent__WEBPACK_IMPORTED_MODULE_72__["CheckboxSelectionComponent"]; });
428
429/* harmony import */ var _rendering_cell_cellComp__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(142);
430/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CellComp", function() { return _rendering_cell_cellComp__WEBPACK_IMPORTED_MODULE_73__["CellComp"]; });
431
432/* harmony import */ var _rendering_cell_cellCtrl__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(121);
433/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CellCtrl", function() { return _rendering_cell_cellCtrl__WEBPACK_IMPORTED_MODULE_74__["CellCtrl"]; });
434
435/* harmony import */ var _rendering_row_rowCtrl__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(120);
436/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowCtrl", function() { return _rendering_row_rowCtrl__WEBPACK_IMPORTED_MODULE_75__["RowCtrl"]; });
437
438/* harmony import */ var _rendering_rowRenderer__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(178);
439/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowRenderer", function() { return _rendering_rowRenderer__WEBPACK_IMPORTED_MODULE_76__["RowRenderer"]; });
440
441/* harmony import */ var _rendering_valueFormatterService__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(179);
442/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ValueFormatterService", function() { return _rendering_valueFormatterService__WEBPACK_IMPORTED_MODULE_77__["ValueFormatterService"]; });
443
444/* harmony import */ var _pinnedRowModel_pinnedRowModel__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(180);
445/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PinnedRowModel", function() { return _pinnedRowModel_pinnedRowModel__WEBPACK_IMPORTED_MODULE_78__["PinnedRowModel"]; });
446
447/* harmony import */ var _interfaces_serverSideTransaction__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(181);
448/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ServerSideTransactionResultStatus", function() { return _interfaces_serverSideTransaction__WEBPACK_IMPORTED_MODULE_79__["ServerSideTransactionResultStatus"]; });
449
450/* harmony import */ var _utils_changedPath__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(182);
451/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ChangedPath", function() { return _utils_changedPath__WEBPACK_IMPORTED_MODULE_80__["ChangedPath"]; });
452
453/* harmony import */ var _rowNodeCache_rowNodeBlock__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(183);
454/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowNodeBlock", function() { return _rowNodeCache_rowNodeBlock__WEBPACK_IMPORTED_MODULE_81__["RowNodeBlock"]; });
455
456/* harmony import */ var _rowNodeCache_rowNodeBlockLoader__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(184);
457/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowNodeBlockLoader", function() { return _rowNodeCache_rowNodeBlockLoader__WEBPACK_IMPORTED_MODULE_82__["RowNodeBlockLoader"]; });
458
459/* harmony import */ var _pagination_paginationProxy__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(185);
460/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PaginationProxy", function() { return _pagination_paginationProxy__WEBPACK_IMPORTED_MODULE_83__["PaginationProxy"]; });
461
462/* harmony import */ var _interfaces_iClientSideRowModel__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(157);
463/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ClientSideRowModelSteps", function() { return _interfaces_iClientSideRowModel__WEBPACK_IMPORTED_MODULE_84__["ClientSideRowModelSteps"]; });
464
465/* harmony import */ var _styling_stylingService__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(186);
466/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "StylingService", function() { return _styling_stylingService__WEBPACK_IMPORTED_MODULE_85__["StylingService"]; });
467
468/* harmony import */ var _styling_layoutFeature__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(111);
469/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "LayoutCssClasses", function() { return _styling_layoutFeature__WEBPACK_IMPORTED_MODULE_86__["LayoutCssClasses"]; });
470
471/* harmony import */ var _widgets_agAbstractField__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(67);
472/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgAbstractField", function() { return _widgets_agAbstractField__WEBPACK_IMPORTED_MODULE_87__["AgAbstractField"]; });
473
474/* harmony import */ var _widgets_agCheckbox__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(163);
475/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgCheckbox", function() { return _widgets_agCheckbox__WEBPACK_IMPORTED_MODULE_88__["AgCheckbox"]; });
476
477/* harmony import */ var _widgets_agRadioButton__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(187);
478/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgRadioButton", function() { return _widgets_agRadioButton__WEBPACK_IMPORTED_MODULE_89__["AgRadioButton"]; });
479
480/* harmony import */ var _widgets_agToggleButton__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(188);
481/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgToggleButton", function() { return _widgets_agToggleButton__WEBPACK_IMPORTED_MODULE_90__["AgToggleButton"]; });
482
483/* harmony import */ var _widgets_agInputTextField__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(189);
484/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgInputTextField", function() { return _widgets_agInputTextField__WEBPACK_IMPORTED_MODULE_91__["AgInputTextField"]; });
485
486/* harmony import */ var _widgets_agInputTextArea__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(190);
487/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgInputTextArea", function() { return _widgets_agInputTextArea__WEBPACK_IMPORTED_MODULE_92__["AgInputTextArea"]; });
488
489/* harmony import */ var _widgets_agInputNumberField__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(191);
490/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgInputNumberField", function() { return _widgets_agInputNumberField__WEBPACK_IMPORTED_MODULE_93__["AgInputNumberField"]; });
491
492/* harmony import */ var _widgets_agInputRange__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(192);
493/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgInputRange", function() { return _widgets_agInputRange__WEBPACK_IMPORTED_MODULE_94__["AgInputRange"]; });
494
495/* harmony import */ var _widgets_agSelect__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(66);
496/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgSelect", function() { return _widgets_agSelect__WEBPACK_IMPORTED_MODULE_95__["AgSelect"]; });
497
498/* harmony import */ var _widgets_agSlider__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(193);
499/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgSlider", function() { return _widgets_agSlider__WEBPACK_IMPORTED_MODULE_96__["AgSlider"]; });
500
501/* harmony import */ var _widgets_agAngleSelect__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(194);
502/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgAngleSelect", function() { return _widgets_agAngleSelect__WEBPACK_IMPORTED_MODULE_97__["AgAngleSelect"]; });
503
504/* harmony import */ var _widgets_agColorPicker__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(195);
505/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgColorPicker", function() { return _widgets_agColorPicker__WEBPACK_IMPORTED_MODULE_98__["AgColorPicker"]; });
506
507/* harmony import */ var _widgets_agGroupComponent__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(199);
508/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgGroupComponent", function() { return _widgets_agGroupComponent__WEBPACK_IMPORTED_MODULE_99__["AgGroupComponent"]; });
509
510/* harmony import */ var _widgets_agMenuItemComponent__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(200);
511/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgMenuItemComponent", function() { return _widgets_agMenuItemComponent__WEBPACK_IMPORTED_MODULE_100__["AgMenuItemComponent"]; });
512
513/* harmony import */ var _widgets_agMenuList__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(201);
514/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgMenuList", function() { return _widgets_agMenuList__WEBPACK_IMPORTED_MODULE_101__["AgMenuList"]; });
515
516/* harmony import */ var _widgets_agMenuPanel__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(204);
517/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgMenuPanel", function() { return _widgets_agMenuPanel__WEBPACK_IMPORTED_MODULE_102__["AgMenuPanel"]; });
518
519/* harmony import */ var _widgets_agDialog__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__(197);
520/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgDialog", function() { return _widgets_agDialog__WEBPACK_IMPORTED_MODULE_103__["AgDialog"]; });
521
522/* harmony import */ var _widgets_agPanel__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__(198);
523/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgPanel", function() { return _widgets_agPanel__WEBPACK_IMPORTED_MODULE_104__["AgPanel"]; });
524
525/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__(36);
526/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Component", function() { return _widgets_component__WEBPACK_IMPORTED_MODULE_105__["Component"]; });
527
528/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CssClassManager", function() { return _widgets_component__WEBPACK_IMPORTED_MODULE_105__["CssClassManager"]; });
529
530/* harmony import */ var _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__(64);
531/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ManagedFocusFeature", function() { return _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_106__["ManagedFocusFeature"]; });
532
533/* harmony import */ var _widgets_tabGuardComp__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__(202);
534/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TabGuardComp", function() { return _widgets_tabGuardComp__WEBPACK_IMPORTED_MODULE_107__["TabGuardComp"]; });
535
536/* harmony import */ var _widgets_tabGuardCtrl__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__(203);
537/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TabGuardCtrl", function() { return _widgets_tabGuardCtrl__WEBPACK_IMPORTED_MODULE_108__["TabGuardCtrl"]; });
538
539/* harmony import */ var _widgets_popupComponent__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__(85);
540/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PopupComponent", function() { return _widgets_popupComponent__WEBPACK_IMPORTED_MODULE_109__["PopupComponent"]; });
541
542/* harmony import */ var _widgets_popupService__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__(205);
543/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PopupService", function() { return _widgets_popupService__WEBPACK_IMPORTED_MODULE_110__["PopupService"]; });
544
545/* harmony import */ var _widgets_touchListener__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__(82);
546/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TouchListener", function() { return _widgets_touchListener__WEBPACK_IMPORTED_MODULE_111__["TouchListener"]; });
547
548/* harmony import */ var _widgets_virtualList__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__(207);
549/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VirtualList", function() { return _widgets_virtualList__WEBPACK_IMPORTED_MODULE_112__["VirtualList"]; });
550
551/* harmony import */ var _interfaces_IRangeService__WEBPACK_IMPORTED_MODULE_113__ = __webpack_require__(123);
552/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CellRangeType", function() { return _interfaces_IRangeService__WEBPACK_IMPORTED_MODULE_113__["CellRangeType"]; });
553
554/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SelectionHandleType", function() { return _interfaces_IRangeService__WEBPACK_IMPORTED_MODULE_113__["SelectionHandleType"]; });
555
556/* harmony import */ var _autoScrollService__WEBPACK_IMPORTED_MODULE_114__ = __webpack_require__(117);
557/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AutoScrollService", function() { return _autoScrollService__WEBPACK_IMPORTED_MODULE_114__["AutoScrollService"]; });
558
559/* harmony import */ var _vanillaFrameworkOverrides__WEBPACK_IMPORTED_MODULE_115__ = __webpack_require__(208);
560/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VanillaFrameworkOverrides", function() { return _vanillaFrameworkOverrides__WEBPACK_IMPORTED_MODULE_115__["VanillaFrameworkOverrides"]; });
561
562/* harmony import */ var _cellNavigationService__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__(209);
563/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CellNavigationService", function() { return _cellNavigationService__WEBPACK_IMPORTED_MODULE_116__["CellNavigationService"]; });
564
565/* harmony import */ var _alignedGridsService__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__(210);
566/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AlignedGridsService", function() { return _alignedGridsService__WEBPACK_IMPORTED_MODULE_117__["AlignedGridsService"]; });
567
568/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__(15);
569/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Constants", function() { return _constants_constants__WEBPACK_IMPORTED_MODULE_118__["Constants"]; });
570
571/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__(65);
572/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "KeyCode", function() { return _constants_keyCode__WEBPACK_IMPORTED_MODULE_119__["KeyCode"]; });
573
574/* harmony import */ var _grid__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(211);
575/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Grid", function() { return _grid__WEBPACK_IMPORTED_MODULE_120__["Grid"]; });
576
577/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridCoreCreator", function() { return _grid__WEBPACK_IMPORTED_MODULE_120__["GridCoreCreator"]; });
578
579/* harmony import */ var _gridApi__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(156);
580/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridApi", function() { return _gridApi__WEBPACK_IMPORTED_MODULE_121__["GridApi"]; });
581
582/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__(24);
583/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Events", function() { return _eventKeys__WEBPACK_IMPORTED_MODULE_122__["Events"]; });
584
585/* harmony import */ var _focusService__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(206);
586/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "FocusService", function() { return _focusService__WEBPACK_IMPORTED_MODULE_123__["FocusService"]; });
587
588/* harmony import */ var _functions__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(248);
589/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defaultGroupComparator", function() { return _functions__WEBPACK_IMPORTED_MODULE_124__["defaultGroupComparator"]; });
590
591/* harmony import */ var _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(112);
592/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridOptionsWrapper", function() { return _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_125__["GridOptionsWrapper"]; });
593
594/* harmony import */ var _eventService__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(11);
595/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EventService", function() { return _eventService__WEBPACK_IMPORTED_MODULE_126__["EventService"]; });
596
597/* harmony import */ var _rowNodes_selectableService__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(231);
598/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SelectableService", function() { return _rowNodes_selectableService__WEBPACK_IMPORTED_MODULE_127__["SelectableService"]; });
599
600/* harmony import */ var _rowNodes_rowNodeSorter__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(241);
601/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowNodeSorter", function() { return _rowNodes_rowNodeSorter__WEBPACK_IMPORTED_MODULE_128__["RowNodeSorter"]; });
602
603/* harmony import */ var _ctrlsService__WEBPACK_IMPORTED_MODULE_129__ = __webpack_require__(242);
604/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CtrlsService", function() { return _ctrlsService__WEBPACK_IMPORTED_MODULE_129__["CtrlsService"]; });
605
606/* harmony import */ var _gridComp_gridComp__WEBPACK_IMPORTED_MODULE_130__ = __webpack_require__(218);
607/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridComp", function() { return _gridComp_gridComp__WEBPACK_IMPORTED_MODULE_130__["GridComp"]; });
608
609/* harmony import */ var _gridComp_gridCtrl__WEBPACK_IMPORTED_MODULE_131__ = __webpack_require__(219);
610/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridCtrl", function() { return _gridComp_gridCtrl__WEBPACK_IMPORTED_MODULE_131__["GridCtrl"]; });
611
612/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_132__ = __webpack_require__(217);
613/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Logger", function() { return _logger__WEBPACK_IMPORTED_MODULE_132__["Logger"]; });
614
615/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "LoggerFactory", function() { return _logger__WEBPACK_IMPORTED_MODULE_132__["LoggerFactory"]; });
616
617/* harmony import */ var _selectionService__WEBPACK_IMPORTED_MODULE_133__ = __webpack_require__(212);
618/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SelectionService", function() { return _selectionService__WEBPACK_IMPORTED_MODULE_133__["SelectionService"]; });
619
620/* harmony import */ var _sortController__WEBPACK_IMPORTED_MODULE_134__ = __webpack_require__(220);
621/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SortController", function() { return _sortController__WEBPACK_IMPORTED_MODULE_134__["SortController"]; });
622
623/* harmony import */ var _templateService__WEBPACK_IMPORTED_MODULE_135__ = __webpack_require__(216);
624/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TemplateService", function() { return _templateService__WEBPACK_IMPORTED_MODULE_135__["TemplateService"]; });
625
626/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_136__ = __webpack_require__(37);
627/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Color", function() { return _utils__WEBPACK_IMPORTED_MODULE_136__["Color"]; });
628
629/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stringToArray", function() { return _utils__WEBPACK_IMPORTED_MODULE_136__["stringToArray"]; });
630
631/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "_", function() { return _utils__WEBPACK_IMPORTED_MODULE_136__["_"]; });
632
633/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NumberSequence", function() { return _utils__WEBPACK_IMPORTED_MODULE_136__["NumberSequence"]; });
634
635/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgPromiseStatus", function() { return _utils__WEBPACK_IMPORTED_MODULE_136__["AgPromiseStatus"]; });
636
637/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgPromise", function() { return _utils__WEBPACK_IMPORTED_MODULE_136__["AgPromise"]; });
638
639/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Timer", function() { return _utils__WEBPACK_IMPORTED_MODULE_136__["Timer"]; });
640
641/* harmony import */ var _valueService_valueService__WEBPACK_IMPORTED_MODULE_137__ = __webpack_require__(214);
642/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ValueService", function() { return _valueService_valueService__WEBPACK_IMPORTED_MODULE_137__["ValueService"]; });
643
644/* harmony import */ var _valueService_valueCache__WEBPACK_IMPORTED_MODULE_138__ = __webpack_require__(225);
645/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ValueCache", function() { return _valueService_valueCache__WEBPACK_IMPORTED_MODULE_138__["ValueCache"]; });
646
647/* harmony import */ var _valueService_expressionService__WEBPACK_IMPORTED_MODULE_139__ = __webpack_require__(215);
648/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ExpressionService", function() { return _valueService_expressionService__WEBPACK_IMPORTED_MODULE_139__["ExpressionService"]; });
649
650/* harmony import */ var _entities_cellPosition__WEBPACK_IMPORTED_MODULE_140__ = __webpack_require__(235);
651/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CellPositionUtils", function() { return _entities_cellPosition__WEBPACK_IMPORTED_MODULE_140__["CellPositionUtils"]; });
652
653/* harmony import */ var _entities_rowPosition__WEBPACK_IMPORTED_MODULE_141__ = __webpack_require__(234);
654/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowPositionUtils", function() { return _entities_rowPosition__WEBPACK_IMPORTED_MODULE_141__["RowPositionUtils"]; });
655
656/* harmony import */ var _headerRendering_common_headerPosition__WEBPACK_IMPORTED_MODULE_142__ = __webpack_require__(238);
657/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderPositionUtils", function() { return _headerRendering_common_headerPosition__WEBPACK_IMPORTED_MODULE_142__["HeaderPositionUtils"]; });
658
659/* harmony import */ var _headerRendering_common_headerNavigationService__WEBPACK_IMPORTED_MODULE_143__ = __webpack_require__(169);
660/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderNavigationService", function() { return _headerRendering_common_headerNavigationService__WEBPACK_IMPORTED_MODULE_143__["HeaderNavigationService"]; });
661
662/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderNavigationDirection", function() { return _headerRendering_common_headerNavigationService__WEBPACK_IMPORTED_MODULE_143__["HeaderNavigationDirection"]; });
663
664/* harmony import */ var _propertyKeys__WEBPACK_IMPORTED_MODULE_144__ = __webpack_require__(31);
665/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PropertyKeys", function() { return _propertyKeys__WEBPACK_IMPORTED_MODULE_144__["PropertyKeys"]; });
666
667/* harmony import */ var _columns_columnApi__WEBPACK_IMPORTED_MODULE_145__ = __webpack_require__(213);
668/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColumnApi", function() { return _columns_columnApi__WEBPACK_IMPORTED_MODULE_145__["ColumnApi"]; });
669
670/* harmony import */ var _components_framework_frameworkComponentWrapper__WEBPACK_IMPORTED_MODULE_146__ = __webpack_require__(249);
671/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BaseComponentWrapper", function() { return _components_framework_frameworkComponentWrapper__WEBPACK_IMPORTED_MODULE_146__["BaseComponentWrapper"]; });
672
673/* harmony import */ var _environment__WEBPACK_IMPORTED_MODULE_147__ = __webpack_require__(229);
674/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Environment", function() { return _environment__WEBPACK_IMPORTED_MODULE_147__["Environment"]; });
675
676/* harmony import */ var _widgets_customTooltipFeature__WEBPACK_IMPORTED_MODULE_148__ = __webpack_require__(56);
677/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CustomTooltipFeature", function() { return _widgets_customTooltipFeature__WEBPACK_IMPORTED_MODULE_148__["CustomTooltipFeature"]; });
678
679/* harmony import */ var _interfaces_iSparklineCellRendererParams__WEBPACK_IMPORTED_MODULE_149__ = __webpack_require__(250);
680/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BarColumnLabelPlacement", function() { return _interfaces_iSparklineCellRendererParams__WEBPACK_IMPORTED_MODULE_149__["BarColumnLabelPlacement"]; });
681
682/* harmony import */ var _modules_moduleNames__WEBPACK_IMPORTED_MODULE_150__ = __webpack_require__(16);
683/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ModuleNames", function() { return _modules_moduleNames__WEBPACK_IMPORTED_MODULE_150__["ModuleNames"]; });
684
685/* harmony import */ var _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_151__ = __webpack_require__(17);
686/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ModuleRegistry", function() { return _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_151__["ModuleRegistry"]; });
687
688/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_152__ = __webpack_require__(23);
689/* empty/unused harmony star reexport *//**
690 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
691 * @version v27.3.0
692 * @link https://www.ag-grid.com/
693 * @license MIT
694 */
695var globalObj = typeof global === 'undefined' ? {} : global;
696globalObj.HTMLElement = typeof HTMLElement === 'undefined' ? {} : HTMLElement;
697globalObj.HTMLButtonElement = typeof HTMLButtonElement === 'undefined' ? {} : HTMLButtonElement;
698globalObj.HTMLSelectElement = typeof HTMLSelectElement === 'undefined' ? {} : HTMLSelectElement;
699globalObj.HTMLInputElement = typeof HTMLInputElement === 'undefined' ? {} : HTMLInputElement;
700globalObj.Node = typeof Node === 'undefined' ? {} : Node;
701globalObj.MouseEvent = typeof MouseEvent === 'undefined' ? {} : MouseEvent;
702// columns
703
704
705
706
707
708
709// components
710
711
712
713
714
715// context
716
717
718
719// excel
720
721// dragAndDrop
722
723
724// entities
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739// gridPanel
740
741
742
743
744
745// rowContainer
746
747
748// headerRendering
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765// layout
766
767// misc
768
769
770
771
772
773
774
775
776
777// rendering / cellRenderers
778
779
780
781
782
783// features
784
785
786// rendering
787
788
789
790
791
792
793
794// row models
795
796
797
798
799
800
801
802//styling
803
804
805// widgets
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832// range
833
834// root
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870// sparklines
871
872
873
874// events
875
876
877
878
879/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(4)))
880
881/***/ }),
882/* 4 */
883/***/ (function(module, exports) {
884
885var g;
886
887// This works in non-strict mode
888g = (function() {
889 return this;
890})();
891
892try {
893 // This works if eval is allowed (see CSP)
894 g = g || new Function("return this")();
895} catch (e) {
896 // This works if the window reference is available
897 if (typeof window === "object") g = window;
898}
899
900// g can still be undefined, but nothing to do about it...
901// We return undefined, instead of nothing here, so it's
902// easier to handle this case. if(!global) { ...}
903
904module.exports = g;
905
906
907/***/ }),
908/* 5 */
909/***/ (function(module, __webpack_exports__, __webpack_require__) {
910
911"use strict";
912__webpack_require__.r(__webpack_exports__);
913/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColumnFactory", function() { return ColumnFactory; });
914/* harmony import */ var _columnKeyCreator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6);
915/* harmony import */ var _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8);
916/* harmony import */ var _entities_column__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10);
917/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12);
918/* harmony import */ var _entities_defaultColumnTypes__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(19);
919/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(20);
920/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(15);
921/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(13);
922/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(7);
923/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(18);
924/**
925 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
926 * @version v27.3.0
927 * @link https://www.ag-grid.com/
928 * @license MIT
929 */
930var __extends = (undefined && undefined.__extends) || (function () {
931 var extendStatics = function (d, b) {
932 extendStatics = Object.setPrototypeOf ||
933 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
934 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
935 return extendStatics(d, b);
936 };
937 return function (d, b) {
938 extendStatics(d, b);
939 function __() { this.constructor = d; }
940 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
941 };
942})();
943var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
944 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
945 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
946 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
947 return c > 3 && r && Object.defineProperty(target, key, r), r;
948};
949var __param = (undefined && undefined.__param) || function (paramIndex, decorator) {
950 return function (target, key) { decorator(target, key, paramIndex); }
951};
952
953
954
955
956
957
958
959
960
961
962// takes ColDefs and ColGroupDefs and turns them into Columns and OriginalGroups
963var ColumnFactory = /** @class */ (function (_super) {
964 __extends(ColumnFactory, _super);
965 function ColumnFactory() {
966 return _super !== null && _super.apply(this, arguments) || this;
967 }
968 ColumnFactory.prototype.setBeans = function (loggerFactory) {
969 this.logger = loggerFactory.create('ColumnFactory');
970 };
971 ColumnFactory.prototype.createColumnTree = function (defs, primaryColumns, existingTree) {
972 // column key creator dishes out unique column id's in a deterministic way,
973 // so if we have two grids (that could be master/slave) with same column definitions,
974 // then this ensures the two grids use identical id's.
975 var columnKeyCreator = new _columnKeyCreator__WEBPACK_IMPORTED_MODULE_0__["ColumnKeyCreator"]();
976 var _a = this.extractExistingTreeData(existingTree), existingCols = _a.existingCols, existingGroups = _a.existingGroups, existingColKeys = _a.existingColKeys;
977 columnKeyCreator.addExistingKeys(existingColKeys);
978 // create am unbalanced tree that maps the provided definitions
979 var unbalancedTree = this.recursivelyCreateColumns(defs, 0, primaryColumns, existingCols, columnKeyCreator, existingGroups);
980 var treeDept = this.findMaxDept(unbalancedTree, 0);
981 this.logger.log('Number of levels for grouped columns is ' + treeDept);
982 var columnTree = this.balanceColumnTree(unbalancedTree, 0, treeDept, columnKeyCreator);
983 var deptFirstCallback = function (child, parent) {
984 if (child instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"]) {
985 child.setupExpandable();
986 }
987 // we set the original parents at the end, rather than when we go along, as balancing the tree
988 // adds extra levels into the tree. so we can only set parents when balancing is done.
989 child.setOriginalParent(parent);
990 };
991 this.columnUtils.depthFirstOriginalTreeSearch(null, columnTree, deptFirstCallback);
992 return {
993 columnTree: columnTree,
994 treeDept: treeDept
995 };
996 };
997 ColumnFactory.prototype.extractExistingTreeData = function (existingTree) {
998 var existingCols = [];
999 var existingGroups = [];
1000 var existingColKeys = [];
1001 if (existingTree) {
1002 this.columnUtils.depthFirstOriginalTreeSearch(null, existingTree, function (item) {
1003 if (item instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"]) {
1004 var group = item;
1005 existingGroups.push(group);
1006 }
1007 else {
1008 var col = item;
1009 existingColKeys.push(col.getId());
1010 existingCols.push(col);
1011 }
1012 });
1013 }
1014 return { existingCols: existingCols, existingGroups: existingGroups, existingColKeys: existingColKeys };
1015 };
1016 ColumnFactory.prototype.createForAutoGroups = function (autoGroupCols, gridBalancedTree) {
1017 var _this = this;
1018 return autoGroupCols.map(function (col) { return _this.createAutoGroupTreeItem(gridBalancedTree, col); });
1019 };
1020 ColumnFactory.prototype.createAutoGroupTreeItem = function (balancedColumnTree, column) {
1021 var dept = this.findDepth(balancedColumnTree);
1022 // at the end, this will be the top of the tree item.
1023 var nextChild = column;
1024 for (var i = dept - 1; i >= 0; i--) {
1025 var autoGroup = new _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"](null, "FAKE_PATH_" + column.getId() + "}_" + i, true, i);
1026 this.context.createBean(autoGroup);
1027 autoGroup.setChildren([nextChild]);
1028 nextChild.setOriginalParent(autoGroup);
1029 nextChild = autoGroup;
1030 }
1031 // at this point, the nextChild is the top most item in the tree
1032 return nextChild;
1033 };
1034 ColumnFactory.prototype.findDepth = function (balancedColumnTree) {
1035 var dept = 0;
1036 var pointer = balancedColumnTree;
1037 while (pointer && pointer[0] && pointer[0] instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"]) {
1038 dept++;
1039 pointer = pointer[0].getChildren();
1040 }
1041 return dept;
1042 };
1043 ColumnFactory.prototype.balanceColumnTree = function (unbalancedTree, currentDept, columnDept, columnKeyCreator) {
1044 var result = [];
1045 // go through each child, for groups, recurse a level deeper,
1046 // for columns we need to pad
1047 for (var i = 0; i < unbalancedTree.length; i++) {
1048 var child = unbalancedTree[i];
1049 if (child instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"]) {
1050 // child is a group, all we do is go to the next level of recursion
1051 var originalGroup = child;
1052 var newChildren = this.balanceColumnTree(originalGroup.getChildren(), currentDept + 1, columnDept, columnKeyCreator);
1053 originalGroup.setChildren(newChildren);
1054 result.push(originalGroup);
1055 }
1056 else {
1057 // child is a column - so here we add in the padded column groups if needed
1058 var firstPaddedGroup = void 0;
1059 var currentPaddedGroup = void 0;
1060 // this for loop will NOT run any loops if no padded column groups are needed
1061 for (var j = columnDept - 1; j >= currentDept; j--) {
1062 var newColId = columnKeyCreator.getUniqueKey(null, null);
1063 var colGroupDefMerged = this.createMergedColGroupDef(null);
1064 var paddedGroup = new _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"](colGroupDefMerged, newColId, true, currentDept);
1065 this.context.createBean(paddedGroup);
1066 if (currentPaddedGroup) {
1067 currentPaddedGroup.setChildren([paddedGroup]);
1068 }
1069 currentPaddedGroup = paddedGroup;
1070 if (!firstPaddedGroup) {
1071 firstPaddedGroup = currentPaddedGroup;
1072 }
1073 }
1074 // likewise this if statement will not run if no padded groups
1075 if (firstPaddedGroup && currentPaddedGroup) {
1076 result.push(firstPaddedGroup);
1077 var hasGroups = unbalancedTree.some(function (leaf) { return leaf instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"]; });
1078 if (hasGroups) {
1079 currentPaddedGroup.setChildren([child]);
1080 continue;
1081 }
1082 else {
1083 currentPaddedGroup.setChildren(unbalancedTree);
1084 break;
1085 }
1086 }
1087 result.push(child);
1088 }
1089 }
1090 return result;
1091 };
1092 ColumnFactory.prototype.findMaxDept = function (treeChildren, dept) {
1093 var maxDeptThisLevel = dept;
1094 for (var i = 0; i < treeChildren.length; i++) {
1095 var abstractColumn = treeChildren[i];
1096 if (abstractColumn instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"]) {
1097 var originalGroup = abstractColumn;
1098 var newDept = this.findMaxDept(originalGroup.getChildren(), dept + 1);
1099 if (maxDeptThisLevel < newDept) {
1100 maxDeptThisLevel = newDept;
1101 }
1102 }
1103 }
1104 return maxDeptThisLevel;
1105 };
1106 ColumnFactory.prototype.recursivelyCreateColumns = function (defs, level, primaryColumns, existingColsCopy, columnKeyCreator, existingGroups) {
1107 var _this = this;
1108 return (defs || []).map(function (def) {
1109 if (_this.isColumnGroup(def)) {
1110 return _this.createColumnGroup(primaryColumns, def, level, existingColsCopy, columnKeyCreator, existingGroups);
1111 }
1112 else {
1113 return _this.createColumn(primaryColumns, def, existingColsCopy, columnKeyCreator);
1114 }
1115 });
1116 };
1117 ColumnFactory.prototype.createColumnGroup = function (primaryColumns, colGroupDef, level, existingColumns, columnKeyCreator, existingGroups) {
1118 var colGroupDefMerged = this.createMergedColGroupDef(colGroupDef);
1119 var groupId = columnKeyCreator.getUniqueKey(colGroupDefMerged.groupId || null, null);
1120 var providedGroup = new _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"](colGroupDefMerged, groupId, false, level);
1121 this.context.createBean(providedGroup);
1122 var existingGroup = this.findExistingGroup(colGroupDef, existingGroups);
1123 // make sure we remove, so if user provided duplicate id, then we don't have more than
1124 // one column instance for colDef with common id
1125 if (existingGroup) {
1126 Object(_utils_array__WEBPACK_IMPORTED_MODULE_9__["removeFromArray"])(existingGroups, existingGroup);
1127 }
1128 if (existingGroup && existingGroup.isExpanded()) {
1129 providedGroup.setExpanded(true);
1130 }
1131 var children = this.recursivelyCreateColumns(colGroupDefMerged.children, level + 1, primaryColumns, existingColumns, columnKeyCreator, existingGroups);
1132 providedGroup.setChildren(children);
1133 return providedGroup;
1134 };
1135 ColumnFactory.prototype.createMergedColGroupDef = function (colGroupDef) {
1136 var colGroupDefMerged = {};
1137 Object.assign(colGroupDefMerged, this.gridOptionsWrapper.getDefaultColGroupDef());
1138 Object.assign(colGroupDefMerged, colGroupDef);
1139 this.checkForDeprecatedItems(colGroupDefMerged);
1140 return colGroupDefMerged;
1141 };
1142 ColumnFactory.prototype.createColumn = function (primaryColumns, colDef, existingColsCopy, columnKeyCreator) {
1143 var colDefMerged = this.mergeColDefs(colDef);
1144 this.checkForDeprecatedItems(colDefMerged);
1145 // see if column already exists
1146 var column = this.findExistingColumn(colDef, existingColsCopy);
1147 // make sure we remove, so if user provided duplicate id, then we don't have more than
1148 // one column instance for colDef with common id
1149 if (existingColsCopy && column) {
1150 Object(_utils_array__WEBPACK_IMPORTED_MODULE_9__["removeFromArray"])(existingColsCopy, column);
1151 }
1152 if (!column) {
1153 // no existing column, need to create one
1154 var colId = columnKeyCreator.getUniqueKey(colDefMerged.colId, colDefMerged.field);
1155 column = new _entities_column__WEBPACK_IMPORTED_MODULE_2__["Column"](colDefMerged, colDef, colId, primaryColumns);
1156 this.context.createBean(column);
1157 }
1158 else {
1159 column.setColDef(colDefMerged, colDef);
1160 this.applyColumnState(column, colDefMerged);
1161 }
1162 return column;
1163 };
1164 ColumnFactory.prototype.applyColumnState = function (column, colDef) {
1165 // flex
1166 var flex = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_8__["attrToNumber"])(colDef.flex);
1167 if (flex !== undefined) {
1168 column.setFlex(flex);
1169 }
1170 // width - we only set width if column is not flexing
1171 var noFlexThisCol = column.getFlex() <= 0;
1172 if (noFlexThisCol) {
1173 // both null and undefined means we skip, as it's not possible to 'clear' width (a column must have a width)
1174 var width = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_8__["attrToNumber"])(colDef.width);
1175 if (width != null) {
1176 column.setActualWidth(width);
1177 }
1178 else {
1179 // otherwise set the width again, in case min or max width has changed,
1180 // and width needs to be adjusted.
1181 var widthBeforeUpdate = column.getActualWidth();
1182 column.setActualWidth(widthBeforeUpdate);
1183 }
1184 }
1185 // sort - anything but undefined will set sort, thus null or empty string will clear the sort
1186 if (colDef.sort !== undefined) {
1187 if (colDef.sort == _constants_constants__WEBPACK_IMPORTED_MODULE_6__["Constants"].SORT_ASC || colDef.sort == _constants_constants__WEBPACK_IMPORTED_MODULE_6__["Constants"].SORT_DESC) {
1188 column.setSort(colDef.sort);
1189 }
1190 else {
1191 column.setSort(undefined);
1192 }
1193 }
1194 // sorted at - anything but undefined, thus null will clear the sortIndex
1195 var sortIndex = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_8__["attrToNumber"])(colDef.sortIndex);
1196 if (sortIndex !== undefined) {
1197 column.setSortIndex(sortIndex);
1198 }
1199 // hide - anything but undefined, thus null will clear the hide
1200 var hide = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_8__["attrToBoolean"])(colDef.hide);
1201 if (hide !== undefined) {
1202 column.setVisible(!hide);
1203 }
1204 // pinned - anything but undefined, thus null or empty string will remove pinned
1205 if (colDef.pinned !== undefined) {
1206 column.setPinned(colDef.pinned);
1207 }
1208 };
1209 ColumnFactory.prototype.findExistingColumn = function (newColDef, existingColsCopy) {
1210 return (existingColsCopy || []).find(function (existingCol) {
1211 var existingColDef = existingCol.getUserProvidedColDef();
1212 if (!existingColDef) {
1213 return false;
1214 }
1215 var newHasId = newColDef.colId != null;
1216 var newHasField = newColDef.field != null;
1217 if (newHasId) {
1218 return existingCol.getId() === newColDef.colId;
1219 }
1220 if (newHasField) {
1221 return existingColDef.field === newColDef.field;
1222 }
1223 // if no id or field present, then try object equivalence.
1224 if (existingColDef === newColDef) {
1225 return true;
1226 }
1227 return false;
1228 });
1229 };
1230 ColumnFactory.prototype.findExistingGroup = function (newGroupDef, existingGroups) {
1231 return existingGroups.find(function (existingGroup) {
1232 var existingDef = existingGroup.getColGroupDef();
1233 if (!existingDef) {
1234 return false;
1235 }
1236 var newHasId = newGroupDef.groupId != null;
1237 if (newHasId) {
1238 return existingGroup.getId() === newGroupDef.groupId;
1239 }
1240 return false;
1241 });
1242 };
1243 ColumnFactory.prototype.mergeColDefs = function (colDef) {
1244 // start with empty merged definition
1245 var colDefMerged = {};
1246 // merge properties from default column definitions
1247 var defaultColDef = this.gridOptionsWrapper.getDefaultColDef();
1248 Object(_utils_object__WEBPACK_IMPORTED_MODULE_7__["mergeDeep"])(colDefMerged, defaultColDef, false, true);
1249 // merge properties from column type properties
1250 var columnType = colDef.type;
1251 if (!columnType) {
1252 columnType = defaultColDef && defaultColDef.type;
1253 }
1254 // if type of both colDef and defaultColDef, then colDef gets preference
1255 if (columnType) {
1256 this.assignColumnTypes(columnType, colDefMerged);
1257 }
1258 // merge properties from column definitions
1259 Object(_utils_object__WEBPACK_IMPORTED_MODULE_7__["mergeDeep"])(colDefMerged, colDef, false, true);
1260 return colDefMerged;
1261 };
1262 ColumnFactory.prototype.assignColumnTypes = function (type, colDefMerged) {
1263 var typeKeys = [];
1264 if (type instanceof Array) {
1265 var invalidArray = type.some(function (a) { return typeof a !== 'string'; });
1266 if (invalidArray) {
1267 console.warn("AG Grid: if colDef.type is supplied an array it should be of type 'string[]'");
1268 }
1269 else {
1270 typeKeys = type;
1271 }
1272 }
1273 else if (typeof type === 'string') {
1274 typeKeys = type.split(',');
1275 }
1276 else {
1277 console.warn("AG Grid: colDef.type should be of type 'string' | 'string[]'");
1278 return;
1279 }
1280 // merge user defined with default column types
1281 var allColumnTypes = Object.assign({}, _entities_defaultColumnTypes__WEBPACK_IMPORTED_MODULE_4__["DefaultColumnTypes"]);
1282 var userTypes = this.gridOptionsWrapper.getColumnTypes() || {};
1283 Object(_utils_object__WEBPACK_IMPORTED_MODULE_7__["iterateObject"])(userTypes, function (key, value) {
1284 if (key in allColumnTypes) {
1285 console.warn("AG Grid: the column type '" + key + "' is a default column type and cannot be overridden.");
1286 }
1287 else {
1288 allColumnTypes[key] = value;
1289 }
1290 });
1291 typeKeys.forEach(function (t) {
1292 var typeColDef = allColumnTypes[t.trim()];
1293 if (typeColDef) {
1294 Object(_utils_object__WEBPACK_IMPORTED_MODULE_7__["mergeDeep"])(colDefMerged, typeColDef, false, true);
1295 }
1296 else {
1297 console.warn("AG Grid: colDef.type '" + t + "' does not correspond to defined gridOptions.columnTypes");
1298 }
1299 });
1300 };
1301 ColumnFactory.prototype.checkForDeprecatedItems = function (colDef) {
1302 if (colDef) {
1303 var colDefNoType = colDef; // take out the type, so we can access attributes not defined in the type
1304 if (colDefNoType.group !== undefined) {
1305 console.warn('AG Grid: colDef.group is invalid, please check documentation on how to do grouping as it changed in version 3');
1306 }
1307 if (colDefNoType.headerGroup !== undefined) {
1308 console.warn('AG Grid: colDef.headerGroup is invalid, please check documentation on how to do grouping as it changed in version 3');
1309 }
1310 if (colDefNoType.headerGroupShow !== undefined) {
1311 console.warn('AG Grid: colDef.headerGroupShow is invalid, should be columnGroupShow, please check documentation on how to do grouping as it changed in version 3');
1312 }
1313 if (colDefNoType.suppressRowGroup !== undefined) {
1314 console.warn('AG Grid: colDef.suppressRowGroup is deprecated, please use colDef.type instead');
1315 }
1316 if (colDefNoType.suppressAggregation !== undefined) {
1317 console.warn('AG Grid: colDef.suppressAggregation is deprecated, please use colDef.type instead');
1318 }
1319 if (colDefNoType.suppressRowGroup || colDefNoType.suppressAggregation) {
1320 console.warn('AG Grid: colDef.suppressAggregation and colDef.suppressRowGroup are deprecated, use allowRowGroup, allowPivot and allowValue instead');
1321 }
1322 if (colDefNoType.displayName) {
1323 console.warn("AG Grid: Found displayName " + colDefNoType.displayName + ", please use headerName instead, displayName is deprecated.");
1324 colDefNoType.headerName = colDefNoType.displayName;
1325 }
1326 }
1327 };
1328 // if object has children, we assume it's a group
1329 ColumnFactory.prototype.isColumnGroup = function (abstractColDef) {
1330 return abstractColDef.children !== undefined;
1331 };
1332 __decorate([
1333 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Autowired"])('columnUtils')
1334 ], ColumnFactory.prototype, "columnUtils", void 0);
1335 __decorate([
1336 __param(0, Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Qualifier"])('loggerFactory'))
1337 ], ColumnFactory.prototype, "setBeans", null);
1338 ColumnFactory = __decorate([
1339 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Bean"])('columnFactory')
1340 ], ColumnFactory);
1341 return ColumnFactory;
1342}(_context_beanStub__WEBPACK_IMPORTED_MODULE_5__["BeanStub"]));
1343
1344
1345
1346
1347
1348/***/ }),
1349/* 6 */
1350/***/ (function(module, __webpack_exports__, __webpack_require__) {
1351
1352"use strict";
1353__webpack_require__.r(__webpack_exports__);
1354/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColumnKeyCreator", function() { return ColumnKeyCreator; });
1355/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
1356/**
1357 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
1358 * @version v27.3.0
1359 * @link https://www.ag-grid.com/
1360 * @license MIT
1361 */
1362// class returns a unique id to use for the column. it checks the existing columns, and if the requested
1363// id is already taken, it will start appending numbers until it gets a unique id.
1364// eg, if the col field is 'name', it will try ids: {name, name_1, name_2...}
1365// if no field or id provided in the col, it will try the ids of natural numbers
1366
1367var ColumnKeyCreator = /** @class */ (function () {
1368 function ColumnKeyCreator() {
1369 this.existingKeys = {};
1370 }
1371 ColumnKeyCreator.prototype.addExistingKeys = function (keys) {
1372 for (var i = 0; i < keys.length; i++) {
1373 this.existingKeys[keys[i]] = true;
1374 }
1375 };
1376 ColumnKeyCreator.prototype.getUniqueKey = function (colId, colField) {
1377 // in case user passed in number for colId, convert to string
1378 colId = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_0__["toStringOrNull"])(colId);
1379 var count = 0;
1380 while (true) {
1381 var idToTry = void 0;
1382 if (colId) {
1383 idToTry = colId;
1384 if (count !== 0) {
1385 idToTry += '_' + count;
1386 }
1387 }
1388 else if (colField) {
1389 idToTry = colField;
1390 if (count !== 0) {
1391 idToTry += '_' + count;
1392 }
1393 }
1394 else {
1395 idToTry = '' + count;
1396 }
1397 if (!this.existingKeys[idToTry]) {
1398 this.existingKeys[idToTry] = true;
1399 return idToTry;
1400 }
1401 count++;
1402 }
1403 };
1404 return ColumnKeyCreator;
1405}());
1406
1407
1408
1409
1410
1411/***/ }),
1412/* 7 */
1413/***/ (function(module, __webpack_exports__, __webpack_require__) {
1414
1415"use strict";
1416__webpack_require__.r(__webpack_exports__);
1417/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "makeNull", function() { return makeNull; });
1418/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "exists", function() { return exists; });
1419/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "missing", function() { return missing; });
1420/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "missingOrEmpty", function() { return missingOrEmpty; });
1421/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toStringOrNull", function() { return toStringOrNull; });
1422/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "attrToNumber", function() { return attrToNumber; });
1423/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "attrToBoolean", function() { return attrToBoolean; });
1424/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "attrToString", function() { return attrToString; });
1425/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "referenceCompare", function() { return referenceCompare; });
1426/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "jsonEquals", function() { return jsonEquals; });
1427/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defaultComparator", function() { return defaultComparator; });
1428/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "values", function() { return values; });
1429/**
1430 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
1431 * @version v27.3.0
1432 * @link https://www.ag-grid.com/
1433 * @license MIT
1434 */
1435/**
1436 * If value is undefined, null or blank, returns null, otherwise returns the value
1437 * @param {T} value
1438 * @returns {T | null}
1439 */
1440function makeNull(value) {
1441 if (value == null || value === '') {
1442 return null;
1443 }
1444 return value;
1445}
1446function exists(value, allowEmptyString) {
1447 if (allowEmptyString === void 0) { allowEmptyString = false; }
1448 return value != null && (value !== '' || allowEmptyString);
1449}
1450function missing(value) {
1451 return !exists(value);
1452}
1453function missingOrEmpty(value) {
1454 return value == null || value.length === 0;
1455}
1456function toStringOrNull(value) {
1457 return value != null && typeof value.toString === 'function' ? value.toString() : null;
1458}
1459// for parsing html attributes, where we want empty strings and missing attributes to be undefined
1460function attrToNumber(value) {
1461 if (value === undefined) {
1462 // undefined or empty means ignore the value
1463 return;
1464 }
1465 if (value === null || value === '') {
1466 // null or blank means clear
1467 return null;
1468 }
1469 if (typeof value === 'number') {
1470 return isNaN(value) ? undefined : value;
1471 }
1472 var valueParsed = parseInt(value, 10);
1473 return isNaN(valueParsed) ? undefined : valueParsed;
1474}
1475// for parsing html attributes, where we want empty strings and missing attributes to be undefined
1476function attrToBoolean(value) {
1477 if (value === undefined) {
1478 // undefined or empty means ignore the value
1479 return;
1480 }
1481 if (value === null || value === '') {
1482 // null means clear
1483 return false;
1484 }
1485 if (typeof value === 'boolean') {
1486 // if simple boolean, return the boolean
1487 return value;
1488 }
1489 // if equal to the string 'true' (ignoring case) then return true
1490 return (/true/i).test(value);
1491}
1492// for parsing html attributes, where we want empty strings and missing attributes to be undefined
1493function attrToString(value) {
1494 if (value == null || value === '') {
1495 return;
1496 }
1497 return value;
1498}
1499/** @deprecated */
1500function referenceCompare(left, right) {
1501 if (left == null && right == null) {
1502 return true;
1503 }
1504 if (left == null && right != null) {
1505 return false;
1506 }
1507 if (left != null && right == null) {
1508 return false;
1509 }
1510 return left === right;
1511}
1512function jsonEquals(val1, val2) {
1513 var val1Json = val1 ? JSON.stringify(val1) : null;
1514 var val2Json = val2 ? JSON.stringify(val2) : null;
1515 return val1Json === val2Json;
1516}
1517function defaultComparator(valueA, valueB, accentedCompare) {
1518 if (accentedCompare === void 0) { accentedCompare = false; }
1519 var valueAMissing = valueA == null;
1520 var valueBMissing = valueB == null;
1521 // this is for aggregations sum and avg, where the result can be a number that is wrapped.
1522 // if we didn't do this, then the toString() value would be used, which would result in
1523 // the strings getting used instead of the numbers.
1524 if (valueA && valueA.toNumber) {
1525 valueA = valueA.toNumber();
1526 }
1527 if (valueB && valueB.toNumber) {
1528 valueB = valueB.toNumber();
1529 }
1530 if (valueAMissing && valueBMissing) {
1531 return 0;
1532 }
1533 if (valueAMissing) {
1534 return -1;
1535 }
1536 if (valueBMissing) {
1537 return 1;
1538 }
1539 function doQuickCompare(a, b) {
1540 return (a > b ? 1 : (a < b ? -1 : 0));
1541 }
1542 if (typeof valueA !== 'string') {
1543 return doQuickCompare(valueA, valueB);
1544 }
1545 if (!accentedCompare) {
1546 return doQuickCompare(valueA, valueB);
1547 }
1548 try {
1549 // using local compare also allows chinese comparisons
1550 return valueA.localeCompare(valueB);
1551 }
1552 catch (e) {
1553 // if something wrong with localeCompare, eg not supported
1554 // by browser, then just continue with the quick one
1555 return doQuickCompare(valueA, valueB);
1556 }
1557}
1558function values(object) {
1559 if (object instanceof Set || object instanceof Map) {
1560 var arr_1 = [];
1561 object.forEach(function (value) { return arr_1.push(value); });
1562 return arr_1;
1563 }
1564 return Object.values(object);
1565}
1566
1567
1568
1569
1570/***/ }),
1571/* 8 */
1572/***/ (function(module, __webpack_exports__, __webpack_require__) {
1573
1574"use strict";
1575__webpack_require__.r(__webpack_exports__);
1576/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ProvidedColumnGroup", function() { return ProvidedColumnGroup; });
1577/* harmony import */ var _columnGroup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9);
1578/* harmony import */ var _column__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10);
1579/* harmony import */ var _eventService__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(11);
1580/**
1581 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
1582 * @version v27.3.0
1583 * @link https://www.ag-grid.com/
1584 * @license MIT
1585 */
1586
1587
1588
1589var ProvidedColumnGroup = /** @class */ (function () {
1590 function ProvidedColumnGroup(colGroupDef, groupId, padding, level) {
1591 this.localEventService = new _eventService__WEBPACK_IMPORTED_MODULE_2__["EventService"]();
1592 this.expandable = false;
1593 this.colGroupDef = colGroupDef;
1594 this.groupId = groupId;
1595 this.expanded = !!colGroupDef && !!colGroupDef.openByDefault;
1596 this.padding = padding;
1597 this.level = level;
1598 }
1599 ProvidedColumnGroup.prototype.setOriginalParent = function (originalParent) {
1600 this.originalParent = originalParent;
1601 };
1602 ProvidedColumnGroup.prototype.getOriginalParent = function () {
1603 return this.originalParent;
1604 };
1605 ProvidedColumnGroup.prototype.getLevel = function () {
1606 return this.level;
1607 };
1608 ProvidedColumnGroup.prototype.isVisible = function () {
1609 // return true if at least one child is visible
1610 if (this.children) {
1611 return this.children.some(function (child) { return child.isVisible(); });
1612 }
1613 return false;
1614 };
1615 ProvidedColumnGroup.prototype.isPadding = function () {
1616 return this.padding;
1617 };
1618 ProvidedColumnGroup.prototype.setExpanded = function (expanded) {
1619 this.expanded = expanded === undefined ? false : expanded;
1620 var event = {
1621 type: ProvidedColumnGroup.EVENT_EXPANDED_CHANGED
1622 };
1623 this.localEventService.dispatchEvent(event);
1624 };
1625 ProvidedColumnGroup.prototype.isExpandable = function () {
1626 return this.expandable;
1627 };
1628 ProvidedColumnGroup.prototype.isExpanded = function () {
1629 return this.expanded;
1630 };
1631 ProvidedColumnGroup.prototype.getGroupId = function () {
1632 return this.groupId;
1633 };
1634 ProvidedColumnGroup.prototype.getId = function () {
1635 return this.getGroupId();
1636 };
1637 ProvidedColumnGroup.prototype.setChildren = function (children) {
1638 this.children = children;
1639 };
1640 ProvidedColumnGroup.prototype.getChildren = function () {
1641 return this.children;
1642 };
1643 ProvidedColumnGroup.prototype.getColGroupDef = function () {
1644 return this.colGroupDef;
1645 };
1646 ProvidedColumnGroup.prototype.getLeafColumns = function () {
1647 var result = [];
1648 this.addLeafColumns(result);
1649 return result;
1650 };
1651 ProvidedColumnGroup.prototype.addLeafColumns = function (leafColumns) {
1652 if (!this.children) {
1653 return;
1654 }
1655 this.children.forEach(function (child) {
1656 if (child instanceof _column__WEBPACK_IMPORTED_MODULE_1__["Column"]) {
1657 leafColumns.push(child);
1658 }
1659 else if (child instanceof ProvidedColumnGroup) {
1660 child.addLeafColumns(leafColumns);
1661 }
1662 });
1663 };
1664 ProvidedColumnGroup.prototype.getColumnGroupShow = function () {
1665 var colGroupDef = this.colGroupDef;
1666 if (!colGroupDef) {
1667 return;
1668 }
1669 return colGroupDef.columnGroupShow;
1670 };
1671 // need to check that this group has at least one col showing when both expanded and contracted.
1672 // if not, then we don't allow expanding and contracting on this group
1673 ProvidedColumnGroup.prototype.setupExpandable = function () {
1674 var _this = this;
1675 this.setExpandable();
1676 // note - we should be removing this event listener
1677 this.getLeafColumns().forEach(function (col) { return col.addEventListener(_column__WEBPACK_IMPORTED_MODULE_1__["Column"].EVENT_VISIBLE_CHANGED, _this.onColumnVisibilityChanged.bind(_this)); });
1678 };
1679 ProvidedColumnGroup.prototype.setExpandable = function () {
1680 if (this.isPadding()) {
1681 return;
1682 }
1683 // want to make sure the group doesn't disappear when it's open
1684 var atLeastOneShowingWhenOpen = false;
1685 // want to make sure the group doesn't disappear when it's closed
1686 var atLeastOneShowingWhenClosed = false;
1687 // want to make sure the group has something to show / hide
1688 var atLeastOneChangeable = false;
1689 var children = this.findChildrenRemovingPadding();
1690 for (var i = 0, j = children.length; i < j; i++) {
1691 var abstractColumn = children[i];
1692 if (!abstractColumn.isVisible()) {
1693 continue;
1694 }
1695 // if the abstractColumn is a grid generated group, there will be no colDef
1696 var headerGroupShow = abstractColumn.getColumnGroupShow();
1697 if (headerGroupShow === _columnGroup__WEBPACK_IMPORTED_MODULE_0__["ColumnGroup"].HEADER_GROUP_SHOW_OPEN) {
1698 atLeastOneShowingWhenOpen = true;
1699 atLeastOneChangeable = true;
1700 }
1701 else if (headerGroupShow === _columnGroup__WEBPACK_IMPORTED_MODULE_0__["ColumnGroup"].HEADER_GROUP_SHOW_CLOSED) {
1702 atLeastOneShowingWhenClosed = true;
1703 atLeastOneChangeable = true;
1704 }
1705 else {
1706 atLeastOneShowingWhenOpen = true;
1707 atLeastOneShowingWhenClosed = true;
1708 }
1709 }
1710 var expandable = atLeastOneShowingWhenOpen && atLeastOneShowingWhenClosed && atLeastOneChangeable;
1711 if (this.expandable !== expandable) {
1712 this.expandable = expandable;
1713 var event_1 = {
1714 type: ProvidedColumnGroup.EVENT_EXPANDABLE_CHANGED
1715 };
1716 this.localEventService.dispatchEvent(event_1);
1717 }
1718 };
1719 ProvidedColumnGroup.prototype.findChildrenRemovingPadding = function () {
1720 var res = [];
1721 var process = function (items) {
1722 items.forEach(function (item) {
1723 // if padding, we add this children instead of the padding
1724 var skipBecausePadding = item instanceof ProvidedColumnGroup && item.isPadding();
1725 if (skipBecausePadding) {
1726 process(item.children);
1727 }
1728 else {
1729 res.push(item);
1730 }
1731 });
1732 };
1733 process(this.children);
1734 return res;
1735 };
1736 ProvidedColumnGroup.prototype.onColumnVisibilityChanged = function () {
1737 this.setExpandable();
1738 };
1739 ProvidedColumnGroup.prototype.addEventListener = function (eventType, listener) {
1740 this.localEventService.addEventListener(eventType, listener);
1741 };
1742 ProvidedColumnGroup.prototype.removeEventListener = function (eventType, listener) {
1743 this.localEventService.removeEventListener(eventType, listener);
1744 };
1745 ProvidedColumnGroup.EVENT_EXPANDED_CHANGED = 'expandedChanged';
1746 ProvidedColumnGroup.EVENT_EXPANDABLE_CHANGED = 'expandableChanged';
1747 return ProvidedColumnGroup;
1748}());
1749
1750
1751
1752
1753
1754/***/ }),
1755/* 9 */
1756/***/ (function(module, __webpack_exports__, __webpack_require__) {
1757
1758"use strict";
1759__webpack_require__.r(__webpack_exports__);
1760/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColumnGroup", function() { return ColumnGroup; });
1761/* harmony import */ var _column__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
1762/* harmony import */ var _eventService__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(11);
1763/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
1764/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(18);
1765/**
1766 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
1767 * @version v27.3.0
1768 * @link https://www.ag-grid.com/
1769 * @license MIT
1770 */
1771var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
1772 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
1773 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
1774 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
1775 return c > 3 && r && Object.defineProperty(target, key, r), r;
1776};
1777
1778
1779
1780
1781var ColumnGroup = /** @class */ (function () {
1782 function ColumnGroup(providedColumnGroup, groupId, instanceId, pinned) {
1783 // depends on the open/closed state of the group, only displaying columns are stored here
1784 this.displayedChildren = [];
1785 this.localEventService = new _eventService__WEBPACK_IMPORTED_MODULE_1__["EventService"]();
1786 this.groupId = groupId;
1787 this.instanceId = instanceId;
1788 this.providedColumnGroup = providedColumnGroup;
1789 this.pinned = pinned;
1790 }
1791 // this is static, a it is used outside of this class
1792 ColumnGroup.createUniqueId = function (groupId, instanceId) {
1793 return groupId + '_' + instanceId;
1794 };
1795 // as the user is adding and removing columns, the groups are recalculated.
1796 // this reset clears out all children, ready for children to be added again
1797 ColumnGroup.prototype.reset = function () {
1798 this.parent = null;
1799 this.children = null;
1800 this.displayedChildren = null;
1801 };
1802 ColumnGroup.prototype.getParent = function () {
1803 return this.parent;
1804 };
1805 ColumnGroup.prototype.setParent = function (parent) {
1806 this.parent = parent;
1807 };
1808 ColumnGroup.prototype.getUniqueId = function () {
1809 return ColumnGroup.createUniqueId(this.groupId, this.instanceId);
1810 };
1811 ColumnGroup.prototype.isEmptyGroup = function () {
1812 return this.displayedChildren.length === 0;
1813 };
1814 ColumnGroup.prototype.isMoving = function () {
1815 var allLeafColumns = this.getProvidedColumnGroup().getLeafColumns();
1816 if (!allLeafColumns || allLeafColumns.length === 0) {
1817 return false;
1818 }
1819 return allLeafColumns.every(function (col) { return col.isMoving(); });
1820 };
1821 ColumnGroup.prototype.checkLeft = function () {
1822 // first get all children to setLeft, as it impacts our decision below
1823 this.displayedChildren.forEach(function (child) {
1824 if (child instanceof ColumnGroup) {
1825 child.checkLeft();
1826 }
1827 });
1828 // set our left based on first displayed column
1829 if (this.displayedChildren.length > 0) {
1830 if (this.gridOptionsWrapper.isEnableRtl()) {
1831 var lastChild = Object(_utils_array__WEBPACK_IMPORTED_MODULE_3__["last"])(this.displayedChildren);
1832 var lastChildLeft = lastChild.getLeft();
1833 this.setLeft(lastChildLeft);
1834 }
1835 else {
1836 var firstChildLeft = this.displayedChildren[0].getLeft();
1837 this.setLeft(firstChildLeft);
1838 }
1839 }
1840 else {
1841 // this should never happen, as if we have no displayed columns, then
1842 // this groups should not even exist.
1843 this.setLeft(null);
1844 }
1845 };
1846 ColumnGroup.prototype.getLeft = function () {
1847 return this.left;
1848 };
1849 ColumnGroup.prototype.getOldLeft = function () {
1850 return this.oldLeft;
1851 };
1852 ColumnGroup.prototype.setLeft = function (left) {
1853 this.oldLeft = left;
1854 if (this.left !== left) {
1855 this.left = left;
1856 this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_LEFT_CHANGED));
1857 }
1858 };
1859 ColumnGroup.prototype.getPinned = function () {
1860 return this.pinned;
1861 };
1862 ColumnGroup.prototype.createAgEvent = function (type) {
1863 return { type: type };
1864 };
1865 ColumnGroup.prototype.addEventListener = function (eventType, listener) {
1866 this.localEventService.addEventListener(eventType, listener);
1867 };
1868 ColumnGroup.prototype.removeEventListener = function (eventType, listener) {
1869 this.localEventService.removeEventListener(eventType, listener);
1870 };
1871 ColumnGroup.prototype.getGroupId = function () {
1872 return this.groupId;
1873 };
1874 ColumnGroup.prototype.getInstanceId = function () {
1875 return this.instanceId;
1876 };
1877 ColumnGroup.prototype.isChildInThisGroupDeepSearch = function (wantedChild) {
1878 var result = false;
1879 this.children.forEach(function (foundChild) {
1880 if (wantedChild === foundChild) {
1881 result = true;
1882 }
1883 if (foundChild instanceof ColumnGroup) {
1884 if (foundChild.isChildInThisGroupDeepSearch(wantedChild)) {
1885 result = true;
1886 }
1887 }
1888 });
1889 return result;
1890 };
1891 ColumnGroup.prototype.getActualWidth = function () {
1892 var groupActualWidth = 0;
1893 if (this.displayedChildren) {
1894 this.displayedChildren.forEach(function (child) {
1895 groupActualWidth += child.getActualWidth();
1896 });
1897 }
1898 return groupActualWidth;
1899 };
1900 ColumnGroup.prototype.isResizable = function () {
1901 if (!this.displayedChildren) {
1902 return false;
1903 }
1904 // if at least one child is resizable, then the group is resizable
1905 var result = false;
1906 this.displayedChildren.forEach(function (child) {
1907 if (child.isResizable()) {
1908 result = true;
1909 }
1910 });
1911 return result;
1912 };
1913 ColumnGroup.prototype.getMinWidth = function () {
1914 var result = 0;
1915 this.displayedChildren.forEach(function (groupChild) {
1916 result += groupChild.getMinWidth() || 0;
1917 });
1918 return result;
1919 };
1920 ColumnGroup.prototype.addChild = function (child) {
1921 if (!this.children) {
1922 this.children = [];
1923 }
1924 this.children.push(child);
1925 };
1926 ColumnGroup.prototype.getDisplayedChildren = function () {
1927 return this.displayedChildren;
1928 };
1929 ColumnGroup.prototype.getLeafColumns = function () {
1930 var result = [];
1931 this.addLeafColumns(result);
1932 return result;
1933 };
1934 ColumnGroup.prototype.getDisplayedLeafColumns = function () {
1935 var result = [];
1936 this.addDisplayedLeafColumns(result);
1937 return result;
1938 };
1939 // why two methods here doing the same thing?
1940 ColumnGroup.prototype.getDefinition = function () {
1941 return this.providedColumnGroup.getColGroupDef();
1942 };
1943 ColumnGroup.prototype.getColGroupDef = function () {
1944 return this.providedColumnGroup.getColGroupDef();
1945 };
1946 ColumnGroup.prototype.isPadding = function () {
1947 return this.providedColumnGroup.isPadding();
1948 };
1949 ColumnGroup.prototype.isExpandable = function () {
1950 return this.providedColumnGroup.isExpandable();
1951 };
1952 ColumnGroup.prototype.isExpanded = function () {
1953 return this.providedColumnGroup.isExpanded();
1954 };
1955 ColumnGroup.prototype.setExpanded = function (expanded) {
1956 this.providedColumnGroup.setExpanded(expanded);
1957 };
1958 ColumnGroup.prototype.addDisplayedLeafColumns = function (leafColumns) {
1959 this.displayedChildren.forEach(function (child) {
1960 if (child instanceof _column__WEBPACK_IMPORTED_MODULE_0__["Column"]) {
1961 leafColumns.push(child);
1962 }
1963 else if (child instanceof ColumnGroup) {
1964 child.addDisplayedLeafColumns(leafColumns);
1965 }
1966 });
1967 };
1968 ColumnGroup.prototype.addLeafColumns = function (leafColumns) {
1969 this.children.forEach(function (child) {
1970 if (child instanceof _column__WEBPACK_IMPORTED_MODULE_0__["Column"]) {
1971 leafColumns.push(child);
1972 }
1973 else if (child instanceof ColumnGroup) {
1974 child.addLeafColumns(leafColumns);
1975 }
1976 });
1977 };
1978 ColumnGroup.prototype.getChildren = function () {
1979 return this.children;
1980 };
1981 ColumnGroup.prototype.getColumnGroupShow = function () {
1982 return this.providedColumnGroup.getColumnGroupShow();
1983 };
1984 ColumnGroup.prototype.getProvidedColumnGroup = function () {
1985 return this.providedColumnGroup;
1986 };
1987 /** @deprecated getOriginalColumnGroup is deprecated, use getOriginalColumnGroup. */
1988 ColumnGroup.prototype.getOriginalColumnGroup = function () {
1989 console.warn('AG Grid: columnGroup.getOriginalColumnGroup() is deprecated due to a method rename, use columnGroup.getProvidedColumnGroup() instead');
1990 return this.getProvidedColumnGroup();
1991 };
1992 ColumnGroup.prototype.getPaddingLevel = function () {
1993 var parent = this.getParent();
1994 if (!this.isPadding() || !parent || !parent.isPadding()) {
1995 return 0;
1996 }
1997 return 1 + parent.getPaddingLevel();
1998 };
1999 ColumnGroup.prototype.calculateDisplayedColumns = function () {
2000 var _this = this;
2001 // clear out last time we calculated
2002 this.displayedChildren = [];
2003 // find the column group that is controlling expandable. this is relevant when we have padding (empty)
2004 // groups, where the expandable is actually the first parent that is not a padding group.
2005 var parentWithExpansion = this;
2006 while (parentWithExpansion != null && parentWithExpansion.isPadding()) {
2007 parentWithExpansion = parentWithExpansion.getParent();
2008 }
2009 var isExpandable = parentWithExpansion ? parentWithExpansion.providedColumnGroup.isExpandable() : false;
2010 // it not expandable, everything is visible
2011 if (!isExpandable) {
2012 this.displayedChildren = this.children;
2013 this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED));
2014 return;
2015 }
2016 // Add cols based on columnGroupShow
2017 // Note - the below also adds padding groups, these are always added because they never have
2018 // colDef.columnGroupShow set.
2019 this.children.forEach(function (child) {
2020 // never add empty groups
2021 var emptyGroup = child instanceof ColumnGroup && (!child.displayedChildren || !child.displayedChildren.length);
2022 if (emptyGroup) {
2023 return;
2024 }
2025 var headerGroupShow = child.getColumnGroupShow();
2026 switch (headerGroupShow) {
2027 case ColumnGroup.HEADER_GROUP_SHOW_OPEN:
2028 // when set to open, only show col if group is open
2029 if (parentWithExpansion.providedColumnGroup.isExpanded()) {
2030 _this.displayedChildren.push(child);
2031 }
2032 break;
2033 case ColumnGroup.HEADER_GROUP_SHOW_CLOSED:
2034 // when set to open, only show col if group is open
2035 if (!parentWithExpansion.providedColumnGroup.isExpanded()) {
2036 _this.displayedChildren.push(child);
2037 }
2038 break;
2039 default:
2040 _this.displayedChildren.push(child);
2041 break;
2042 }
2043 });
2044 this.localEventService.dispatchEvent(this.createAgEvent(ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED));
2045 };
2046 ColumnGroup.HEADER_GROUP_SHOW_OPEN = 'open';
2047 ColumnGroup.HEADER_GROUP_SHOW_CLOSED = 'closed';
2048 ColumnGroup.EVENT_LEFT_CHANGED = 'leftChanged';
2049 ColumnGroup.EVENT_DISPLAYED_CHILDREN_CHANGED = 'displayedChildrenChanged';
2050 __decorate([
2051 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('gridOptionsWrapper')
2052 ], ColumnGroup.prototype, "gridOptionsWrapper", void 0);
2053 return ColumnGroup;
2054}());
2055
2056
2057
2058
2059
2060/***/ }),
2061/* 10 */
2062/***/ (function(module, __webpack_exports__, __webpack_require__) {
2063
2064"use strict";
2065__webpack_require__.r(__webpack_exports__);
2066/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Column", function() { return Column; });
2067/* harmony import */ var _eventService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11);
2068/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
2069/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
2070/* harmony import */ var _modules_moduleNames__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(16);
2071/* harmony import */ var _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(17);
2072/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7);
2073/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(14);
2074/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(13);
2075/**
2076 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
2077 * @version v27.3.0
2078 * @link https://www.ag-grid.com/
2079 * @license MIT
2080 */
2081var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2082 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2083 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2084 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2085 return c > 3 && r && Object.defineProperty(target, key, r), r;
2086};
2087
2088
2089
2090
2091
2092
2093
2094
2095var instanceIdSequence = 0;
2096// Wrapper around a user provide column definition. The grid treats the column definition as ready only.
2097// This class contains all the runtime information about a column, plus some logic (the definition has no logic).
2098// This class implements both interfaces ColumnGroupChild and ProvidedColumnGroupChild as the class can
2099// appear as a child of either the original tree or the displayed tree. However the relevant group classes
2100// for each type only implements one, as each group can only appear in it's associated tree (eg ProvidedColumnGroup
2101// can only appear in OriginalColumn tree).
2102var Column = /** @class */ (function () {
2103 function Column(colDef, userProvidedColDef, colId, primary) {
2104 // used by React (and possibly other frameworks) as key for rendering
2105 this.instanceId = instanceIdSequence++;
2106 this.moving = false;
2107 this.menuVisible = false;
2108 this.filterActive = false;
2109 this.eventService = new _eventService__WEBPACK_IMPORTED_MODULE_0__["EventService"]();
2110 this.rowGroupActive = false;
2111 this.pivotActive = false;
2112 this.aggregationActive = false;
2113 this.colDef = colDef;
2114 this.userProvidedColDef = userProvidedColDef;
2115 this.colId = colId;
2116 this.primary = primary;
2117 this.setState(colDef);
2118 }
2119 Column.prototype.getInstanceId = function () {
2120 return this.instanceId;
2121 };
2122 Column.prototype.setState = function (colDef) {
2123 // sort
2124 if (colDef.sort !== undefined) {
2125 if (colDef.sort === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].SORT_ASC || colDef.sort === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].SORT_DESC) {
2126 this.sort = colDef.sort;
2127 }
2128 }
2129 else {
2130 if (colDef.initialSort === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].SORT_ASC || colDef.initialSort === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].SORT_DESC) {
2131 this.sort = colDef.initialSort;
2132 }
2133 }
2134 // sortIndex
2135 var sortIndex = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["attrToNumber"])(colDef.sortIndex);
2136 var initialSortIndex = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["attrToNumber"])(colDef.initialSortIndex);
2137 if (sortIndex !== undefined) {
2138 if (sortIndex !== null) {
2139 this.sortIndex = sortIndex;
2140 }
2141 }
2142 else {
2143 if (initialSortIndex !== null) {
2144 this.sortIndex = initialSortIndex;
2145 }
2146 }
2147 // hide
2148 var hide = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["attrToBoolean"])(colDef.hide);
2149 var initialHide = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["attrToBoolean"])(colDef.initialHide);
2150 if (hide !== undefined) {
2151 this.visible = !hide;
2152 }
2153 else {
2154 this.visible = !initialHide;
2155 }
2156 // pinned
2157 if (colDef.pinned !== undefined) {
2158 this.setPinned(colDef.pinned);
2159 }
2160 else {
2161 this.setPinned(colDef.initialPinned);
2162 }
2163 // flex
2164 var flex = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["attrToNumber"])(colDef.flex);
2165 var initialFlex = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["attrToNumber"])(colDef.initialFlex);
2166 if (flex !== undefined) {
2167 this.flex = flex;
2168 }
2169 else if (initialFlex !== undefined) {
2170 this.flex = initialFlex;
2171 }
2172 };
2173 // gets called when user provides an alternative colDef, eg
2174 Column.prototype.setColDef = function (colDef, userProvidedColDef) {
2175 this.colDef = colDef;
2176 this.userProvidedColDef = userProvidedColDef;
2177 this.initMinAndMaxWidths();
2178 this.initDotNotation();
2179 };
2180 /**
2181 * Returns the column definition provided by the application.
2182 * This may not be correct, as items can be superseded by default column options.
2183 * However it's useful for comparison, eg to know which application column definition matches that column.
2184 */
2185 Column.prototype.getUserProvidedColDef = function () {
2186 return this.userProvidedColDef;
2187 };
2188 Column.prototype.setParent = function (parent) {
2189 this.parent = parent;
2190 };
2191 /** Returns the parent column group, if column grouping is active. */
2192 Column.prototype.getParent = function () {
2193 return this.parent;
2194 };
2195 Column.prototype.setOriginalParent = function (originalParent) {
2196 this.originalParent = originalParent;
2197 };
2198 Column.prototype.getOriginalParent = function () {
2199 return this.originalParent;
2200 };
2201 // this is done after constructor as it uses gridOptionsWrapper
2202 Column.prototype.initialise = function () {
2203 this.initMinAndMaxWidths();
2204 this.resetActualWidth('gridInitializing');
2205 this.initDotNotation();
2206 this.validate();
2207 };
2208 Column.prototype.initDotNotation = function () {
2209 var suppressDotNotation = this.gridOptionsWrapper.isSuppressFieldDotNotation();
2210 this.fieldContainsDots = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["exists"])(this.colDef.field) && this.colDef.field.indexOf('.') >= 0 && !suppressDotNotation;
2211 this.tooltipFieldContainsDots = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["exists"])(this.colDef.tooltipField) && this.colDef.tooltipField.indexOf('.') >= 0 && !suppressDotNotation;
2212 };
2213 Column.prototype.initMinAndMaxWidths = function () {
2214 var colDef = this.colDef;
2215 this.minWidth = this.columnUtils.calculateColMinWidth(colDef);
2216 this.maxWidth = this.columnUtils.calculateColMaxWidth(colDef);
2217 };
2218 Column.prototype.resetActualWidth = function (source) {
2219 if (source === void 0) { source = 'api'; }
2220 var initialWidth = this.columnUtils.calculateColInitialWidth(this.colDef);
2221 this.setActualWidth(initialWidth, source, true);
2222 };
2223 Column.prototype.isEmptyGroup = function () {
2224 return false;
2225 };
2226 Column.prototype.isRowGroupDisplayed = function (colId) {
2227 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["missing"])(this.colDef) || Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["missing"])(this.colDef.showRowGroup)) {
2228 return false;
2229 }
2230 var showingAllGroups = this.colDef.showRowGroup === true;
2231 var showingThisGroup = this.colDef.showRowGroup === colId;
2232 return showingAllGroups || showingThisGroup;
2233 };
2234 /** Returns `true` if column is a primary column, `false` if secondary. Secondary columns are used for pivoting. */
2235 Column.prototype.isPrimary = function () {
2236 return this.primary;
2237 };
2238 /** Returns `true` if column filtering is allowed. */
2239 Column.prototype.isFilterAllowed = function () {
2240 // filter defined means it's a string, class or true.
2241 // if its false, null or undefined then it's false.
2242 var filterDefined = !!this.colDef.filter || !!this.colDef.filterFramework;
2243 return filterDefined;
2244 };
2245 Column.prototype.isFieldContainsDots = function () {
2246 return this.fieldContainsDots;
2247 };
2248 Column.prototype.isTooltipFieldContainsDots = function () {
2249 return this.tooltipFieldContainsDots;
2250 };
2251 Column.prototype.validate = function () {
2252 var colDefAny = this.colDef;
2253 function warnOnce(msg, key, obj) {
2254 Object(_utils_function__WEBPACK_IMPORTED_MODULE_6__["doOnce"])(function () {
2255 if (obj) {
2256 console.warn(msg, obj);
2257 }
2258 else {
2259 Object(_utils_function__WEBPACK_IMPORTED_MODULE_6__["doOnce"])(function () { return console.warn(msg); }, key);
2260 }
2261 }, key);
2262 }
2263 var usingCSRM = this.gridOptionsWrapper.isRowModelDefault();
2264 if (usingCSRM && !_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_4__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_3__["ModuleNames"].RowGroupingModule)) {
2265 var rowGroupingItems = ['enableRowGroup', 'rowGroup', 'rowGroupIndex', 'enablePivot', 'enableValue', 'pivot', 'pivotIndex', 'aggFunc'];
2266 rowGroupingItems.forEach(function (item) {
2267 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["exists"])(colDefAny[item])) {
2268 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_4__["ModuleRegistry"].isPackageBased()) {
2269 warnOnce("AG Grid: " + item + " is only valid in ag-grid-enterprise, your column definition should not have " + item, 'ColumnRowGroupingMissing' + item);
2270 }
2271 else {
2272 warnOnce("AG Grid: " + item + " is only valid with AG Grid Enterprise Module " + _modules_moduleNames__WEBPACK_IMPORTED_MODULE_3__["ModuleNames"].RowGroupingModule + " - your column definition should not have " + item, 'ColumnRowGroupingMissing' + item);
2273 }
2274 }
2275 });
2276 }
2277 if (!_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_4__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_3__["ModuleNames"].RichSelectModule)) {
2278 if (this.colDef.cellEditor === 'agRichSelect') {
2279 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_4__["ModuleRegistry"].isPackageBased()) {
2280 warnOnce("AG Grid: " + this.colDef.cellEditor + " can only be used with ag-grid-enterprise", 'ColumnRichSelectMissing');
2281 }
2282 else {
2283 warnOnce("AG Grid: " + this.colDef.cellEditor + " can only be used with AG Grid Enterprise Module " + _modules_moduleNames__WEBPACK_IMPORTED_MODULE_3__["ModuleNames"].RichSelectModule, 'ColumnRichSelectMissing');
2284 }
2285 }
2286 }
2287 if (this.gridOptionsWrapper.isTreeData()) {
2288 var itemsNotAllowedWithTreeData = ['rowGroup', 'rowGroupIndex', 'pivot', 'pivotIndex'];
2289 itemsNotAllowedWithTreeData.forEach(function (item) {
2290 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["exists"])(colDefAny[item])) {
2291 warnOnce("AG Grid: " + item + " is not possible when doing tree data, your column definition should not have " + item, 'TreeDataCannotRowGroup');
2292 }
2293 });
2294 }
2295 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["exists"])(this.colDef.width) && typeof this.colDef.width !== 'number') {
2296 warnOnce('AG Grid: colDef.width should be a number, not ' + typeof this.colDef.width, 'ColumnCheck_asdfawef');
2297 }
2298 if (colDefAny.pinnedRowCellRenderer) {
2299 warnOnce('AG Grid: pinnedRowCellRenderer no longer exists, use cellRendererSelector if you want a different Cell Renderer for pinned rows. Check params.node.rowPinned. This was an unfortunate (but necessary) change we had to do to allow future plans we have of re-skinng the data grid in frameworks such as React, Angular and Vue. See https://www.ag-grid.com/javascript-grid/cell-rendering/#many-renderers-one-column', 'colDef.pinnedRowCellRenderer-deprecated');
2300 }
2301 if (colDefAny.pinnedRowCellRendererParams) {
2302 warnOnce('AG Grid: pinnedRowCellRenderer no longer exists, use cellRendererSelector if you want a different Cell Renderer for pinned rows. Check params.node.rowPinned. This was an unfortunate (but necessary) change we had to do to allow future plans we have of re-skinng the data grid in frameworks such as React, Angular and Vue. See https://www.ag-grid.com/javascript-grid/cell-rendering/#many-renderers-one-column', 'colDef.pinnedRowCellRenderer-deprecated');
2303 }
2304 if (colDefAny.pinnedRowCellRendererFramework) {
2305 warnOnce('AG Grid: pinnedRowCellRenderer no longer exists, use cellRendererSelector if you want a different Cell Renderer for pinned rows. Check params.node.rowPinned. This was an unfortunate (but necessary) change we had to do to allow future plans we have of re-skinng the data grid in frameworks such as React, Angular and Vue. See https://www.ag-grid.com/javascript-grid/cell-rendering/#many-renderers-one-column', 'colDef.pinnedRowCellRenderer-deprecated');
2306 }
2307 if (colDefAny.pinnedRowValueGetter) {
2308 warnOnce('AG Grid: pinnedRowCellRenderer is deprecated, use cellRendererSelector if you want a different Cell Renderer for pinned rows. Check params.node.rowPinned. This was an unfortunate (but necessary) change we had to do to allow future plans we have of re-skinng the data grid in frameworks such as React, Angular and Vue.', 'colDef.pinnedRowCellRenderer-deprecated');
2309 }
2310 };
2311 /** Add an event listener to the column. */
2312 Column.prototype.addEventListener = function (eventType, listener) {
2313 this.eventService.addEventListener(eventType, listener);
2314 };
2315 /** Remove event listener from the column. */
2316 Column.prototype.removeEventListener = function (eventType, listener) {
2317 this.eventService.removeEventListener(eventType, listener);
2318 };
2319 Column.prototype.createColumnFunctionCallbackParams = function (rowNode) {
2320 return {
2321 node: rowNode,
2322 data: rowNode.data,
2323 column: this,
2324 colDef: this.colDef,
2325 context: this.gridOptionsWrapper.getContext(),
2326 api: this.gridOptionsWrapper.getApi(),
2327 columnApi: this.gridOptionsWrapper.getColumnApi()
2328 };
2329 };
2330 Column.prototype.isSuppressNavigable = function (rowNode) {
2331 // if boolean set, then just use it
2332 if (typeof this.colDef.suppressNavigable === 'boolean') {
2333 return this.colDef.suppressNavigable;
2334 }
2335 // if function, then call the function to find out
2336 if (typeof this.colDef.suppressNavigable === 'function') {
2337 var params = this.createColumnFunctionCallbackParams(rowNode);
2338 var userFunc = this.colDef.suppressNavigable;
2339 return userFunc(params);
2340 }
2341 return false;
2342 };
2343 Column.prototype.isCellEditable = function (rowNode) {
2344 // only allow editing of groups if the user has this option enabled
2345 if (rowNode.group && !this.gridOptionsWrapper.isEnableGroupEdit()) {
2346 return false;
2347 }
2348 return this.isColumnFunc(rowNode, this.colDef.editable);
2349 };
2350 Column.prototype.isSuppressFillHandle = function () {
2351 return !!Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["attrToBoolean"])(this.colDef.suppressFillHandle);
2352 };
2353 Column.prototype.isAutoHeight = function () {
2354 return !!Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["attrToBoolean"])(this.colDef.autoHeight);
2355 };
2356 Column.prototype.isRowDrag = function (rowNode) {
2357 return this.isColumnFunc(rowNode, this.colDef.rowDrag);
2358 };
2359 Column.prototype.isDndSource = function (rowNode) {
2360 return this.isColumnFunc(rowNode, this.colDef.dndSource);
2361 };
2362 Column.prototype.isCellCheckboxSelection = function (rowNode) {
2363 return this.isColumnFunc(rowNode, this.colDef.checkboxSelection);
2364 };
2365 Column.prototype.isSuppressPaste = function (rowNode) {
2366 return this.isColumnFunc(rowNode, this.colDef ? this.colDef.suppressPaste : null);
2367 };
2368 Column.prototype.isResizable = function () {
2369 return !!Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["attrToBoolean"])(this.colDef.resizable);
2370 };
2371 Column.prototype.isColumnFunc = function (rowNode, value) {
2372 // if boolean set, then just use it
2373 if (typeof value === 'boolean') {
2374 return value;
2375 }
2376 // if function, then call the function to find out
2377 if (typeof value === 'function') {
2378 var params = this.createColumnFunctionCallbackParams(rowNode);
2379 var editableFunc = value;
2380 return editableFunc(params);
2381 }
2382 return false;
2383 };
2384 Column.prototype.setMoving = function (moving, source) {
2385 if (source === void 0) { source = "api"; }
2386 this.moving = moving;
2387 this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_MOVING_CHANGED, source));
2388 };
2389 Column.prototype.createColumnEvent = function (type, source) {
2390 return {
2391 api: this.gridApi,
2392 columnApi: this.columnApi,
2393 type: type,
2394 column: this,
2395 columns: [this],
2396 source: source
2397 };
2398 };
2399 Column.prototype.isMoving = function () {
2400 return this.moving;
2401 };
2402 /** If sorting is active, returns the sort direction e.g. `'asc'` or `'desc'`. */
2403 Column.prototype.getSort = function () {
2404 return this.sort;
2405 };
2406 Column.prototype.setSort = function (sort, source) {
2407 if (source === void 0) { source = "api"; }
2408 if (this.sort !== sort) {
2409 this.sort = sort;
2410 this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_SORT_CHANGED, source));
2411 }
2412 };
2413 Column.prototype.setMenuVisible = function (visible, source) {
2414 if (source === void 0) { source = "api"; }
2415 if (this.menuVisible !== visible) {
2416 this.menuVisible = visible;
2417 this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_MENU_VISIBLE_CHANGED, source));
2418 }
2419 };
2420 Column.prototype.isMenuVisible = function () {
2421 return this.menuVisible;
2422 };
2423 Column.prototype.isSortAscending = function () {
2424 return this.sort === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].SORT_ASC;
2425 };
2426 Column.prototype.isSortDescending = function () {
2427 return this.sort === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].SORT_DESC;
2428 };
2429 Column.prototype.isSortNone = function () {
2430 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["missing"])(this.sort);
2431 };
2432 Column.prototype.isSorting = function () {
2433 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["exists"])(this.sort);
2434 };
2435 Column.prototype.getSortIndex = function () {
2436 return this.sortIndex;
2437 };
2438 Column.prototype.setSortIndex = function (sortOrder) {
2439 this.sortIndex = sortOrder;
2440 };
2441 Column.prototype.setAggFunc = function (aggFunc) {
2442 this.aggFunc = aggFunc;
2443 };
2444 /** If aggregation is set for the column, returns the aggregation function. */
2445 Column.prototype.getAggFunc = function () {
2446 return this.aggFunc;
2447 };
2448 Column.prototype.getLeft = function () {
2449 return this.left;
2450 };
2451 Column.prototype.getOldLeft = function () {
2452 return this.oldLeft;
2453 };
2454 Column.prototype.getRight = function () {
2455 return this.left + this.actualWidth;
2456 };
2457 Column.prototype.setLeft = function (left, source) {
2458 if (source === void 0) { source = "api"; }
2459 this.oldLeft = this.left;
2460 if (this.left !== left) {
2461 this.left = left;
2462 this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_LEFT_CHANGED, source));
2463 }
2464 };
2465 /** Returns `true` if filter is active on the column. */
2466 Column.prototype.isFilterActive = function () {
2467 return this.filterActive;
2468 };
2469 // additionalEventAttributes is used by provided simple floating filter, so it can add 'floatingFilter=true' to the event
2470 Column.prototype.setFilterActive = function (active, source, additionalEventAttributes) {
2471 if (source === void 0) { source = "api"; }
2472 if (this.filterActive !== active) {
2473 this.filterActive = active;
2474 this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_FILTER_ACTIVE_CHANGED, source));
2475 }
2476 var filterChangedEvent = this.createColumnEvent(Column.EVENT_FILTER_CHANGED, source);
2477 if (additionalEventAttributes) {
2478 Object(_utils_object__WEBPACK_IMPORTED_MODULE_7__["mergeDeep"])(filterChangedEvent, additionalEventAttributes);
2479 }
2480 this.eventService.dispatchEvent(filterChangedEvent);
2481 };
2482 Column.prototype.setPinned = function (pinned) {
2483 if (pinned === true || pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_LEFT) {
2484 this.pinned = _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_LEFT;
2485 }
2486 else if (pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_RIGHT) {
2487 this.pinned = _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_RIGHT;
2488 }
2489 else {
2490 this.pinned = null;
2491 }
2492 };
2493 Column.prototype.setFirstRightPinned = function (firstRightPinned, source) {
2494 if (source === void 0) { source = "api"; }
2495 if (this.firstRightPinned !== firstRightPinned) {
2496 this.firstRightPinned = firstRightPinned;
2497 this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_FIRST_RIGHT_PINNED_CHANGED, source));
2498 }
2499 };
2500 Column.prototype.setLastLeftPinned = function (lastLeftPinned, source) {
2501 if (source === void 0) { source = "api"; }
2502 if (this.lastLeftPinned !== lastLeftPinned) {
2503 this.lastLeftPinned = lastLeftPinned;
2504 this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_LAST_LEFT_PINNED_CHANGED, source));
2505 }
2506 };
2507 Column.prototype.isFirstRightPinned = function () {
2508 return this.firstRightPinned;
2509 };
2510 Column.prototype.isLastLeftPinned = function () {
2511 return this.lastLeftPinned;
2512 };
2513 Column.prototype.isPinned = function () {
2514 return this.pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_LEFT || this.pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_RIGHT;
2515 };
2516 Column.prototype.isPinnedLeft = function () {
2517 return this.pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_LEFT;
2518 };
2519 Column.prototype.isPinnedRight = function () {
2520 return this.pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_RIGHT;
2521 };
2522 Column.prototype.getPinned = function () {
2523 return this.pinned;
2524 };
2525 Column.prototype.setVisible = function (visible, source) {
2526 if (source === void 0) { source = "api"; }
2527 var newValue = visible === true;
2528 if (this.visible !== newValue) {
2529 this.visible = newValue;
2530 this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_VISIBLE_CHANGED, source));
2531 }
2532 };
2533 Column.prototype.isVisible = function () {
2534 return this.visible;
2535 };
2536 /** Returns the column definition for this column.
2537 * The column definition will be the result of merging the application provided column definition with any provided defaults
2538 * (e.g. `defaultColDef` grid option, or column types.
2539 *
2540 * Equivalent: `getDefinition` */
2541 Column.prototype.getColDef = function () {
2542 return this.colDef;
2543 };
2544 Column.prototype.getColumnGroupShow = function () {
2545 return this.colDef.columnGroupShow;
2546 };
2547 /**
2548 * Returns the unique ID for the column.
2549 *
2550 * Equivalent: `getId`, `getUniqueId` */
2551 Column.prototype.getColId = function () {
2552 return this.colId;
2553 };
2554 /**
2555 * Returns the unique ID for the column.
2556 *
2557 * Equivalent: `getColId`, `getUniqueId` */
2558 Column.prototype.getId = function () {
2559 return this.getColId();
2560 };
2561 /**
2562 * Returns the unique ID for the column.
2563 *
2564 * Equivalent: `getColId`, `getId` */
2565 Column.prototype.getUniqueId = function () {
2566 return this.getId();
2567 };
2568 Column.prototype.getDefinition = function () {
2569 return this.colDef;
2570 };
2571 /** Returns the current width of the column. If the column is resized, the actual width is the new size. */
2572 Column.prototype.getActualWidth = function () {
2573 return this.actualWidth;
2574 };
2575 Column.prototype.createBaseColDefParams = function (rowNode) {
2576 var params = {
2577 node: rowNode,
2578 data: rowNode.data,
2579 colDef: this.colDef,
2580 column: this,
2581 api: this.gridOptionsWrapper.getApi(),
2582 columnApi: this.gridOptionsWrapper.getColumnApi(),
2583 context: this.gridOptionsWrapper.getContext()
2584 };
2585 return params;
2586 };
2587 Column.prototype.getColSpan = function (rowNode) {
2588 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["missing"])(this.colDef.colSpan)) {
2589 return 1;
2590 }
2591 var params = this.createBaseColDefParams(rowNode);
2592 var colSpan = this.colDef.colSpan(params);
2593 // colSpan must be number equal to or greater than 1
2594 return Math.max(colSpan, 1);
2595 };
2596 Column.prototype.getRowSpan = function (rowNode) {
2597 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["missing"])(this.colDef.rowSpan)) {
2598 return 1;
2599 }
2600 var params = this.createBaseColDefParams(rowNode);
2601 var rowSpan = this.colDef.rowSpan(params);
2602 // rowSpan must be number equal to or greater than 1
2603 return Math.max(rowSpan, 1);
2604 };
2605 Column.prototype.setActualWidth = function (actualWidth, source, silent) {
2606 if (source === void 0) { source = "api"; }
2607 if (silent === void 0) { silent = false; }
2608 if (this.minWidth != null) {
2609 actualWidth = Math.max(actualWidth, this.minWidth);
2610 }
2611 if (this.maxWidth != null) {
2612 actualWidth = Math.min(actualWidth, this.maxWidth);
2613 }
2614 if (this.actualWidth !== actualWidth) {
2615 // disable flex for this column if it was manually resized.
2616 this.actualWidth = actualWidth;
2617 if (this.flex && source !== 'flex' && source !== 'gridInitializing') {
2618 this.flex = null;
2619 }
2620 if (!silent) {
2621 this.fireColumnWidthChangedEvent(source);
2622 }
2623 }
2624 };
2625 Column.prototype.fireColumnWidthChangedEvent = function (source) {
2626 this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_WIDTH_CHANGED, source));
2627 };
2628 Column.prototype.isGreaterThanMax = function (width) {
2629 if (this.maxWidth != null) {
2630 return width > this.maxWidth;
2631 }
2632 return false;
2633 };
2634 Column.prototype.getMinWidth = function () {
2635 return this.minWidth;
2636 };
2637 Column.prototype.getMaxWidth = function () {
2638 return this.maxWidth;
2639 };
2640 Column.prototype.getFlex = function () {
2641 return this.flex || 0;
2642 };
2643 // this method should only be used by the columnModel to
2644 // change flex when required by the setColumnState method.
2645 Column.prototype.setFlex = function (flex) {
2646 if (this.flex !== flex) {
2647 this.flex = flex;
2648 }
2649 };
2650 Column.prototype.setMinimum = function (source) {
2651 if (source === void 0) { source = "api"; }
2652 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["exists"])(this.minWidth)) {
2653 this.setActualWidth(this.minWidth, source);
2654 }
2655 };
2656 Column.prototype.setRowGroupActive = function (rowGroup, source) {
2657 if (source === void 0) { source = "api"; }
2658 if (this.rowGroupActive !== rowGroup) {
2659 this.rowGroupActive = rowGroup;
2660 this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_ROW_GROUP_CHANGED, source));
2661 }
2662 };
2663 /** Returns `true` if row group is currently active for this column. */
2664 Column.prototype.isRowGroupActive = function () {
2665 return this.rowGroupActive;
2666 };
2667 Column.prototype.setPivotActive = function (pivot, source) {
2668 if (source === void 0) { source = "api"; }
2669 if (this.pivotActive !== pivot) {
2670 this.pivotActive = pivot;
2671 this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_PIVOT_CHANGED, source));
2672 }
2673 };
2674 /** Returns `true` if pivot is currently active for this column. */
2675 Column.prototype.isPivotActive = function () {
2676 return this.pivotActive;
2677 };
2678 Column.prototype.isAnyFunctionActive = function () {
2679 return this.isPivotActive() || this.isRowGroupActive() || this.isValueActive();
2680 };
2681 Column.prototype.isAnyFunctionAllowed = function () {
2682 return this.isAllowPivot() || this.isAllowRowGroup() || this.isAllowValue();
2683 };
2684 Column.prototype.setValueActive = function (value, source) {
2685 if (source === void 0) { source = "api"; }
2686 if (this.aggregationActive !== value) {
2687 this.aggregationActive = value;
2688 this.eventService.dispatchEvent(this.createColumnEvent(Column.EVENT_VALUE_CHANGED, source));
2689 }
2690 };
2691 /** Returns `true` if value (aggregation) is currently active for this column. */
2692 Column.prototype.isValueActive = function () {
2693 return this.aggregationActive;
2694 };
2695 Column.prototype.isAllowPivot = function () {
2696 return this.colDef.enablePivot === true;
2697 };
2698 Column.prototype.isAllowValue = function () {
2699 return this.colDef.enableValue === true;
2700 };
2701 Column.prototype.isAllowRowGroup = function () {
2702 return this.colDef.enableRowGroup === true;
2703 };
2704 Column.prototype.getMenuTabs = function (defaultValues) {
2705 var menuTabs = this.getColDef().menuTabs;
2706 if (menuTabs == null) {
2707 menuTabs = defaultValues;
2708 }
2709 return menuTabs;
2710 };
2711 // this used to be needed, as previous version of ag-grid had lockPosition as column state,
2712 // so couldn't depend on colDef version.
2713 Column.prototype.isLockPosition = function () {
2714 console.warn('AG Grid: since v21, col.isLockPosition() should not be used, please use col.getColDef().lockPosition instead.');
2715 return this.colDef ? !!this.colDef.lockPosition : false;
2716 };
2717 // this used to be needed, as previous version of ag-grid had lockVisible as column state,
2718 // so couldn't depend on colDef version.
2719 Column.prototype.isLockVisible = function () {
2720 console.warn('AG Grid: since v21, col.isLockVisible() should not be used, please use col.getColDef().lockVisible instead.');
2721 return this.colDef ? !!this.colDef.lockVisible : false;
2722 };
2723 // this used to be needed, as previous version of ag-grid had lockPinned as column state,
2724 // so couldn't depend on colDef version.
2725 Column.prototype.isLockPinned = function () {
2726 console.warn('AG Grid: since v21, col.isLockPinned() should not be used, please use col.getColDef().lockPinned instead.');
2727 return this.colDef ? !!this.colDef.lockPinned : false;
2728 };
2729 // + renderedHeaderCell - for making header cell transparent when moving
2730 Column.EVENT_MOVING_CHANGED = 'movingChanged';
2731 // + renderedCell - changing left position
2732 Column.EVENT_LEFT_CHANGED = 'leftChanged';
2733 // + renderedCell - changing width
2734 Column.EVENT_WIDTH_CHANGED = 'widthChanged';
2735 // + renderedCell - for changing pinned classes
2736 Column.EVENT_LAST_LEFT_PINNED_CHANGED = 'lastLeftPinnedChanged';
2737 Column.EVENT_FIRST_RIGHT_PINNED_CHANGED = 'firstRightPinnedChanged';
2738 // + renderedColumn - for changing visibility icon
2739 Column.EVENT_VISIBLE_CHANGED = 'visibleChanged';
2740 // + every time the filter changes, used in the floating filters
2741 Column.EVENT_FILTER_CHANGED = 'filterChanged';
2742 // + renderedHeaderCell - marks the header with filter icon
2743 Column.EVENT_FILTER_ACTIVE_CHANGED = 'filterActiveChanged';
2744 // + renderedHeaderCell - marks the header with sort icon
2745 Column.EVENT_SORT_CHANGED = 'sortChanged';
2746 Column.EVENT_MENU_VISIBLE_CHANGED = 'menuVisibleChanged';
2747 // + toolpanel, for gui updates
2748 Column.EVENT_ROW_GROUP_CHANGED = 'columnRowGroupChanged';
2749 // + toolpanel, for gui updates
2750 Column.EVENT_PIVOT_CHANGED = 'columnPivotChanged';
2751 // + toolpanel, for gui updates
2752 Column.EVENT_VALUE_CHANGED = 'columnValueChanged';
2753 __decorate([
2754 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridOptionsWrapper')
2755 ], Column.prototype, "gridOptionsWrapper", void 0);
2756 __decorate([
2757 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnUtils')
2758 ], Column.prototype, "columnUtils", void 0);
2759 __decorate([
2760 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnApi')
2761 ], Column.prototype, "columnApi", void 0);
2762 __decorate([
2763 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridApi')
2764 ], Column.prototype, "gridApi", void 0);
2765 __decorate([
2766 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('context')
2767 ], Column.prototype, "context", void 0);
2768 __decorate([
2769 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
2770 ], Column.prototype, "initialise", null);
2771 return Column;
2772}());
2773
2774
2775
2776
2777
2778/***/ }),
2779/* 11 */
2780/***/ (function(module, __webpack_exports__, __webpack_require__) {
2781
2782"use strict";
2783__webpack_require__.r(__webpack_exports__);
2784/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EventService", function() { return EventService; });
2785/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
2786/**
2787 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
2788 * @version v27.3.0
2789 * @link https://www.ag-grid.com/
2790 * @license MIT
2791 */
2792var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
2793 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
2794 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
2795 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
2796 return c > 3 && r && Object.defineProperty(target, key, r), r;
2797};
2798var __param = (undefined && undefined.__param) || function (paramIndex, decorator) {
2799 return function (target, key) { decorator(target, key, paramIndex); }
2800};
2801
2802var EventService = /** @class */ (function () {
2803 function EventService() {
2804 this.allSyncListeners = new Map();
2805 this.allAsyncListeners = new Map();
2806 this.globalSyncListeners = new Set();
2807 this.globalAsyncListeners = new Set();
2808 this.asyncFunctionsQueue = [];
2809 this.scheduled = false;
2810 // using an object performs better than a Set for the number of different events we have
2811 this.firedEvents = {};
2812 }
2813 // because this class is used both inside the context and outside the context, we do not
2814 // use autowired attributes, as that would be confusing, as sometimes the attributes
2815 // would be wired, and sometimes not.
2816 //
2817 // the global event servers used by AG Grid is autowired by the context once, and this
2818 // setBeans method gets called once.
2819 //
2820 // the times when this class is used outside of the context (eg RowNode has an instance of this
2821 // class) then it is not a bean, and this setBeans method is not called.
2822 EventService.prototype.setBeans = function (loggerFactory, gridOptionsWrapper, frameworkOverrides, globalEventListener) {
2823 if (globalEventListener === void 0) { globalEventListener = null; }
2824 this.frameworkOverrides = frameworkOverrides;
2825 if (globalEventListener) {
2826 var async = gridOptionsWrapper.useAsyncEvents();
2827 this.addGlobalListener(globalEventListener, async);
2828 }
2829 };
2830 EventService.prototype.getListeners = function (eventType, async, autoCreateListenerCollection) {
2831 var listenerMap = async ? this.allAsyncListeners : this.allSyncListeners;
2832 var listeners = listenerMap.get(eventType);
2833 // Note: 'autoCreateListenerCollection' should only be 'true' if a listener is about to be added. For instance
2834 // getListeners() is also called during event dispatch even though no listeners are added. This measure protects
2835 // against 'memory bloat' as empty collections will prevent the RowNode's event service from being removed after
2836 // the RowComp is destroyed, see noRegisteredListenersExist() below.
2837 if (!listeners && autoCreateListenerCollection) {
2838 listeners = new Set();
2839 listenerMap.set(eventType, listeners);
2840 }
2841 return listeners;
2842 };
2843 EventService.prototype.noRegisteredListenersExist = function () {
2844 return this.allSyncListeners.size === 0 && this.allAsyncListeners.size === 0 &&
2845 this.globalSyncListeners.size === 0 && this.globalAsyncListeners.size === 0;
2846 };
2847 EventService.prototype.addEventListener = function (eventType, listener, async) {
2848 if (async === void 0) { async = false; }
2849 this.getListeners(eventType, async, true).add(listener);
2850 };
2851 EventService.prototype.removeEventListener = function (eventType, listener, async) {
2852 if (async === void 0) { async = false; }
2853 var listeners = this.getListeners(eventType, async, false);
2854 if (!listeners) {
2855 return;
2856 }
2857 listeners.delete(listener);
2858 if (listeners.size === 0) {
2859 var listenerMap = async ? this.allAsyncListeners : this.allSyncListeners;
2860 listenerMap.delete(eventType);
2861 }
2862 };
2863 EventService.prototype.addGlobalListener = function (listener, async) {
2864 if (async === void 0) { async = false; }
2865 (async ? this.globalAsyncListeners : this.globalSyncListeners).add(listener);
2866 };
2867 EventService.prototype.removeGlobalListener = function (listener, async) {
2868 if (async === void 0) { async = false; }
2869 (async ? this.globalAsyncListeners : this.globalSyncListeners).delete(listener);
2870 };
2871 EventService.prototype.dispatchEvent = function (event) {
2872 this.dispatchToListeners(event, true);
2873 this.dispatchToListeners(event, false);
2874 this.firedEvents[event.type] = true;
2875 };
2876 EventService.prototype.dispatchEventOnce = function (event) {
2877 if (!this.firedEvents[event.type]) {
2878 this.dispatchEvent(event);
2879 }
2880 };
2881 EventService.prototype.dispatchToListeners = function (event, async) {
2882 var _this = this;
2883 var eventType = event.type;
2884 var processEventListeners = function (listeners) { return listeners.forEach(function (listener) {
2885 if (async) {
2886 _this.dispatchAsync(function () { return listener(event); });
2887 }
2888 else {
2889 listener(event);
2890 }
2891 }); };
2892 var listeners = this.getListeners(eventType, async, false);
2893 if (listeners) {
2894 processEventListeners(listeners);
2895 }
2896 var globalListeners = async ? this.globalAsyncListeners : this.globalSyncListeners;
2897 globalListeners.forEach(function (listener) {
2898 if (async) {
2899 _this.dispatchAsync(function () { return _this.frameworkOverrides.dispatchEvent(eventType, function () { return listener(eventType, event); }, true); });
2900 }
2901 else {
2902 _this.frameworkOverrides.dispatchEvent(eventType, function () { return listener(eventType, event); }, true);
2903 }
2904 });
2905 };
2906 // this gets called inside the grid's thread, for each event that it
2907 // wants to set async. the grid then batches the events into one setTimeout()
2908 // because setTimeout() is an expensive operation. ideally we would have
2909 // each event in it's own setTimeout(), but we batch for performance.
2910 EventService.prototype.dispatchAsync = function (func) {
2911 // add to the queue for executing later in the next VM turn
2912 this.asyncFunctionsQueue.push(func);
2913 // check if timeout is already scheduled. the first time the grid calls
2914 // this within it's thread turn, this should be false, so it will schedule
2915 // the 'flush queue' method the first time it comes here. then the flag is
2916 // set to 'true' so it will know it's already scheduled for subsequent calls.
2917 if (!this.scheduled) {
2918 // if not scheduled, schedule one
2919 window.setTimeout(this.flushAsyncQueue.bind(this), 0);
2920 // mark that it is scheduled
2921 this.scheduled = true;
2922 }
2923 };
2924 // this happens in the next VM turn only, and empties the queue of events
2925 EventService.prototype.flushAsyncQueue = function () {
2926 this.scheduled = false;
2927 // we take a copy, because the event listener could be using
2928 // the grid, which would cause more events, which would be potentially
2929 // added to the queue, so safe to take a copy, the new events will
2930 // get executed in a later VM turn rather than risk updating the
2931 // queue as we are flushing it.
2932 var queueCopy = this.asyncFunctionsQueue.slice();
2933 this.asyncFunctionsQueue = [];
2934 // execute the queue
2935 queueCopy.forEach(function (func) { return func(); });
2936 };
2937 __decorate([
2938 __param(0, Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Qualifier"])('loggerFactory')),
2939 __param(1, Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Qualifier"])('gridOptionsWrapper')),
2940 __param(2, Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Qualifier"])('frameworkOverrides')),
2941 __param(3, Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Qualifier"])('globalEventListener'))
2942 ], EventService.prototype, "setBeans", null);
2943 EventService = __decorate([
2944 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('eventService')
2945 ], EventService);
2946 return EventService;
2947}());
2948
2949
2950
2951
2952
2953/***/ }),
2954/* 12 */
2955/***/ (function(module, __webpack_exports__, __webpack_require__) {
2956
2957"use strict";
2958__webpack_require__.r(__webpack_exports__);
2959/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Context", function() { return Context; });
2960/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PreConstruct", function() { return PreConstruct; });
2961/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PostConstruct", function() { return PostConstruct; });
2962/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PreDestroy", function() { return PreDestroy; });
2963/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Bean", function() { return Bean; });
2964/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Autowired", function() { return Autowired; });
2965/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Optional", function() { return Optional; });
2966/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Qualifier", function() { return Qualifier; });
2967/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
2968/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);
2969/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14);
2970/**
2971 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
2972 * @version v27.3.0
2973 * @link https://www.ag-grid.com/
2974 * @license MIT
2975 */
2976
2977
2978
2979var Context = /** @class */ (function () {
2980 function Context(params, logger) {
2981 this.beanWrappers = {};
2982 this.destroyed = false;
2983 if (!params || !params.beanClasses) {
2984 return;
2985 }
2986 this.contextParams = params;
2987 this.logger = logger;
2988 this.logger.log(">> creating ag-Application Context");
2989 this.createBeans();
2990 var beanInstances = this.getBeanInstances();
2991 this.wireBeans(beanInstances);
2992 this.logger.log(">> ag-Application Context ready - component is alive");
2993 }
2994 Context.prototype.getBeanInstances = function () {
2995 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_0__["values"])(this.beanWrappers).map(function (beanEntry) { return beanEntry.beanInstance; });
2996 };
2997 Context.prototype.createBean = function (bean, afterPreCreateCallback) {
2998 if (!bean) {
2999 throw Error("Can't wire to bean since it is null");
3000 }
3001 this.wireBeans([bean], afterPreCreateCallback);
3002 return bean;
3003 };
3004 Context.prototype.wireBeans = function (beanInstances, afterPreCreateCallback) {
3005 this.autoWireBeans(beanInstances);
3006 this.methodWireBeans(beanInstances);
3007 this.callLifeCycleMethods(beanInstances, 'preConstructMethods');
3008 // the callback sets the attributes, so the component has access to attributes
3009 // before postConstruct methods in the component are executed
3010 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_0__["exists"])(afterPreCreateCallback)) {
3011 beanInstances.forEach(afterPreCreateCallback);
3012 }
3013 this.callLifeCycleMethods(beanInstances, 'postConstructMethods');
3014 };
3015 Context.prototype.createBeans = function () {
3016 var _this = this;
3017 // register all normal beans
3018 this.contextParams.beanClasses.forEach(this.createBeanWrapper.bind(this));
3019 // register override beans, these will overwrite beans above of same name
3020 // instantiate all beans - overridden beans will be left out
3021 Object(_utils_object__WEBPACK_IMPORTED_MODULE_1__["iterateObject"])(this.beanWrappers, function (key, beanEntry) {
3022 var constructorParamsMeta;
3023 if (beanEntry.bean.__agBeanMetaData && beanEntry.bean.__agBeanMetaData.autowireMethods && beanEntry.bean.__agBeanMetaData.autowireMethods.agConstructor) {
3024 constructorParamsMeta = beanEntry.bean.__agBeanMetaData.autowireMethods.agConstructor;
3025 }
3026 var constructorParams = _this.getBeansForParameters(constructorParamsMeta, beanEntry.bean.name);
3027 var newInstance = applyToConstructor(beanEntry.bean, constructorParams);
3028 beanEntry.beanInstance = newInstance;
3029 });
3030 var createdBeanNames = Object.keys(this.beanWrappers).join(', ');
3031 this.logger.log("created beans: " + createdBeanNames);
3032 };
3033 // tslint:disable-next-line
3034 Context.prototype.createBeanWrapper = function (BeanClass) {
3035 var metaData = BeanClass.__agBeanMetaData;
3036 if (!metaData) {
3037 var beanName = void 0;
3038 if (BeanClass.prototype.constructor) {
3039 beanName = Object(_utils_function__WEBPACK_IMPORTED_MODULE_2__["getFunctionName"])(BeanClass.prototype.constructor);
3040 }
3041 else {
3042 beanName = "" + BeanClass;
3043 }
3044 console.error("Context item " + beanName + " is not a bean");
3045 return;
3046 }
3047 var beanEntry = {
3048 bean: BeanClass,
3049 beanInstance: null,
3050 beanName: metaData.beanName
3051 };
3052 this.beanWrappers[metaData.beanName] = beanEntry;
3053 };
3054 Context.prototype.autoWireBeans = function (beanInstances) {
3055 var _this = this;
3056 beanInstances.forEach(function (beanInstance) {
3057 _this.forEachMetaDataInHierarchy(beanInstance, function (metaData, beanName) {
3058 var attributes = metaData.agClassAttributes;
3059 if (!attributes) {
3060 return;
3061 }
3062 attributes.forEach(function (attribute) {
3063 var otherBean = _this.lookupBeanInstance(beanName, attribute.beanName, attribute.optional);
3064 beanInstance[attribute.attributeName] = otherBean;
3065 });
3066 });
3067 });
3068 };
3069 Context.prototype.methodWireBeans = function (beanInstances) {
3070 var _this = this;
3071 beanInstances.forEach(function (beanInstance) {
3072 _this.forEachMetaDataInHierarchy(beanInstance, function (metaData, beanName) {
3073 Object(_utils_object__WEBPACK_IMPORTED_MODULE_1__["iterateObject"])(metaData.autowireMethods, function (methodName, wireParams) {
3074 // skip constructor, as this is dealt with elsewhere
3075 if (methodName === "agConstructor") {
3076 return;
3077 }
3078 var initParams = _this.getBeansForParameters(wireParams, beanName);
3079 beanInstance[methodName].apply(beanInstance, initParams);
3080 });
3081 });
3082 });
3083 };
3084 Context.prototype.forEachMetaDataInHierarchy = function (beanInstance, callback) {
3085 var prototype = Object.getPrototypeOf(beanInstance);
3086 while (prototype != null) {
3087 var constructor = prototype.constructor;
3088 if (constructor.hasOwnProperty('__agBeanMetaData')) {
3089 var metaData = constructor.__agBeanMetaData;
3090 var beanName = this.getBeanName(constructor);
3091 callback(metaData, beanName);
3092 }
3093 prototype = Object.getPrototypeOf(prototype);
3094 }
3095 };
3096 Context.prototype.getBeanName = function (constructor) {
3097 if (constructor.__agBeanMetaData && constructor.__agBeanMetaData.beanName) {
3098 return constructor.__agBeanMetaData.beanName;
3099 }
3100 var constructorString = constructor.toString();
3101 var beanName = constructorString.substring(9, constructorString.indexOf("("));
3102 return beanName;
3103 };
3104 Context.prototype.getBeansForParameters = function (parameters, beanName) {
3105 var _this = this;
3106 var beansList = [];
3107 if (parameters) {
3108 Object(_utils_object__WEBPACK_IMPORTED_MODULE_1__["iterateObject"])(parameters, function (paramIndex, otherBeanName) {
3109 var otherBean = _this.lookupBeanInstance(beanName, otherBeanName);
3110 beansList[Number(paramIndex)] = otherBean;
3111 });
3112 }
3113 return beansList;
3114 };
3115 Context.prototype.lookupBeanInstance = function (wiringBean, beanName, optional) {
3116 if (optional === void 0) { optional = false; }
3117 if (beanName === "context") {
3118 return this;
3119 }
3120 if (this.contextParams.providedBeanInstances && this.contextParams.providedBeanInstances.hasOwnProperty(beanName)) {
3121 return this.contextParams.providedBeanInstances[beanName];
3122 }
3123 var beanEntry = this.beanWrappers[beanName];
3124 if (beanEntry) {
3125 return beanEntry.beanInstance;
3126 }
3127 if (!optional) {
3128 console.error("AG Grid: unable to find bean reference " + beanName + " while initialising " + wiringBean);
3129 }
3130 return null;
3131 };
3132 Context.prototype.callLifeCycleMethods = function (beanInstances, lifeCycleMethod) {
3133 var _this = this;
3134 beanInstances.forEach(function (beanInstance) { return _this.callLifeCycleMethodsOnBean(beanInstance, lifeCycleMethod); });
3135 };
3136 Context.prototype.callLifeCycleMethodsOnBean = function (beanInstance, lifeCycleMethod, methodToIgnore) {
3137 // putting all methods into a map removes duplicates
3138 var allMethods = {};
3139 // dump methods from each level of the metadata hierarchy
3140 this.forEachMetaDataInHierarchy(beanInstance, function (metaData) {
3141 var methods = metaData[lifeCycleMethod];
3142 if (methods) {
3143 methods.forEach(function (methodName) {
3144 if (methodName != methodToIgnore) {
3145 allMethods[methodName] = true;
3146 }
3147 });
3148 }
3149 });
3150 var allMethodsList = Object.keys(allMethods);
3151 allMethodsList.forEach(function (methodName) { return beanInstance[methodName](); });
3152 };
3153 Context.prototype.getBean = function (name) {
3154 return this.lookupBeanInstance("getBean", name, true);
3155 };
3156 Context.prototype.destroy = function () {
3157 if (this.destroyed) {
3158 return;
3159 }
3160 this.logger.log(">> Shutting down ag-Application Context");
3161 var beanInstances = this.getBeanInstances();
3162 this.destroyBeans(beanInstances);
3163 this.contextParams.providedBeanInstances = null;
3164 this.destroyed = true;
3165 this.logger.log(">> ag-Application Context shut down - component is dead");
3166 };
3167 Context.prototype.destroyBean = function (bean) {
3168 if (!bean) {
3169 return;
3170 }
3171 this.destroyBeans([bean]);
3172 };
3173 Context.prototype.destroyBeans = function (beans) {
3174 var _this = this;
3175 if (!beans) {
3176 return [];
3177 }
3178 beans.forEach(function (bean) {
3179 _this.callLifeCycleMethodsOnBean(bean, 'preDestroyMethods', 'destroy');
3180 // call destroy() explicitly if it exists
3181 var beanAny = bean;
3182 if (typeof beanAny.destroy === 'function') {
3183 beanAny.destroy();
3184 }
3185 });
3186 return [];
3187 };
3188 return Context;
3189}());
3190
3191// taken from: http://stackoverflow.com/questions/3362471/how-can-i-call-a-javascript-constructor-using-call-or-apply
3192// allows calling 'apply' on a constructor
3193function applyToConstructor(constructor, argArray) {
3194 var args = [null].concat(argArray);
3195 var factoryFunction = constructor.bind.apply(constructor, args);
3196 return new factoryFunction();
3197}
3198function PreConstruct(target, methodName, descriptor) {
3199 var props = getOrCreateProps(target.constructor);
3200 if (!props.preConstructMethods) {
3201 props.preConstructMethods = [];
3202 }
3203 props.preConstructMethods.push(methodName);
3204}
3205function PostConstruct(target, methodName, descriptor) {
3206 var props = getOrCreateProps(target.constructor);
3207 if (!props.postConstructMethods) {
3208 props.postConstructMethods = [];
3209 }
3210 props.postConstructMethods.push(methodName);
3211}
3212function PreDestroy(target, methodName, descriptor) {
3213 var props = getOrCreateProps(target.constructor);
3214 if (!props.preDestroyMethods) {
3215 props.preDestroyMethods = [];
3216 }
3217 props.preDestroyMethods.push(methodName);
3218}
3219function Bean(beanName) {
3220 return function (classConstructor) {
3221 var props = getOrCreateProps(classConstructor);
3222 props.beanName = beanName;
3223 };
3224}
3225function Autowired(name) {
3226 return function (target, propertyKey, descriptor) {
3227 autowiredFunc(target, name, false, target, propertyKey, null);
3228 };
3229}
3230function Optional(name) {
3231 return function (target, propertyKey, descriptor) {
3232 autowiredFunc(target, name, true, target, propertyKey, null);
3233 };
3234}
3235function autowiredFunc(target, name, optional, classPrototype, methodOrAttributeName, index) {
3236 if (name === null) {
3237 console.error("AG Grid: Autowired name should not be null");
3238 return;
3239 }
3240 if (typeof index === "number") {
3241 console.error("AG Grid: Autowired should be on an attribute");
3242 return;
3243 }
3244 // it's an attribute on the class
3245 var props = getOrCreateProps(target.constructor);
3246 if (!props.agClassAttributes) {
3247 props.agClassAttributes = [];
3248 }
3249 props.agClassAttributes.push({
3250 attributeName: methodOrAttributeName,
3251 beanName: name,
3252 optional: optional
3253 });
3254}
3255function Qualifier(name) {
3256 return function (classPrototype, methodOrAttributeName, index) {
3257 var constructor = typeof classPrototype == "function" ? classPrototype : classPrototype.constructor;
3258 var props;
3259 if (typeof index === "number") {
3260 // it's a parameter on a method
3261 var methodName = void 0;
3262 if (methodOrAttributeName) {
3263 props = getOrCreateProps(constructor);
3264 methodName = methodOrAttributeName;
3265 }
3266 else {
3267 props = getOrCreateProps(constructor);
3268 methodName = "agConstructor";
3269 }
3270 if (!props.autowireMethods) {
3271 props.autowireMethods = {};
3272 }
3273 if (!props.autowireMethods[methodName]) {
3274 props.autowireMethods[methodName] = {};
3275 }
3276 props.autowireMethods[methodName][index] = name;
3277 }
3278 };
3279}
3280function getOrCreateProps(target) {
3281 if (!target.hasOwnProperty("__agBeanMetaData")) {
3282 target.__agBeanMetaData = {};
3283 }
3284 return target.__agBeanMetaData;
3285}
3286
3287
3288
3289
3290/***/ }),
3291/* 13 */
3292/***/ (function(module, __webpack_exports__, __webpack_require__) {
3293
3294"use strict";
3295__webpack_require__.r(__webpack_exports__);
3296/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "iterateObject", function() { return iterateObject; });
3297/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cloneObject", function() { return cloneObject; });
3298/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "deepCloneObject", function() { return deepCloneObject; });
3299/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "deepCloneDefinition", function() { return deepCloneDefinition; });
3300/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getProperty", function() { return getProperty; });
3301/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setProperty", function() { return setProperty; });
3302/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "copyPropertiesIfPresent", function() { return copyPropertiesIfPresent; });
3303/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "copyPropertyIfPresent", function() { return copyPropertyIfPresent; });
3304/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getAllKeysInObjects", function() { return getAllKeysInObjects; });
3305/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getAllValuesInObject", function() { return getAllValuesInObject; });
3306/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeDeep", function() { return mergeDeep; });
3307/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "missingOrEmptyObject", function() { return missingOrEmptyObject; });
3308/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "get", function() { return get; });
3309/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "set", function() { return set; });
3310/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "deepFreeze", function() { return deepFreeze; });
3311/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getValueUsingField", function() { return getValueUsingField; });
3312/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeAllReferences", function() { return removeAllReferences; });
3313/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNonNullObject", function() { return isNonNullObject; });
3314/* harmony import */ var _generic__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
3315/**
3316 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
3317 * @version v27.3.0
3318 * @link https://www.ag-grid.com/
3319 * @license MIT
3320 */
3321
3322function iterateObject(object, callback) {
3323 if (object == null) {
3324 return;
3325 }
3326 if (Array.isArray(object)) {
3327 object.forEach(function (value, index) { return callback("" + index, value); });
3328 }
3329 else {
3330 Object.keys(object).forEach(function (key) { return callback(key, object[key]); });
3331 }
3332}
3333function cloneObject(object) {
3334 var copy = {};
3335 var keys = Object.keys(object);
3336 for (var i = 0; i < keys.length; i++) {
3337 var key = keys[i];
3338 var value = object[key];
3339 copy[key] = value;
3340 }
3341 return copy;
3342}
3343function deepCloneObject(object) {
3344 return JSON.parse(JSON.stringify(object));
3345}
3346// returns copy of an object, doing a deep clone of any objects with that object.
3347// this is used for eg creating copies of Column Definitions, where we want to
3348// deep copy all objects, but do not want to deep copy functions (eg when user provides
3349// a function or class for colDef.cellRenderer)
3350function deepCloneDefinition(object, keysToSkip) {
3351 if (!object) {
3352 return;
3353 }
3354 var obj = object;
3355 var res = {};
3356 Object.keys(obj).forEach(function (key) {
3357 if (keysToSkip && keysToSkip.indexOf(key) >= 0) {
3358 return;
3359 }
3360 var value = obj[key];
3361 // 'simple object' means a bunch of key/value pairs, eg {filter: 'myFilter'}. it does
3362 // NOT include the following:
3363 // 1) arrays
3364 // 2) functions or classes (eg ColumnAPI instance)
3365 var sourceIsSimpleObject = isNonNullObject(value) && value.constructor === Object;
3366 if (sourceIsSimpleObject) {
3367 res[key] = deepCloneDefinition(value);
3368 }
3369 else {
3370 res[key] = value;
3371 }
3372 });
3373 return res;
3374}
3375function getProperty(object, key) {
3376 return object[key];
3377}
3378function setProperty(object, key, value) {
3379 object[key] = value;
3380}
3381/**
3382 * Will copy the specified properties from `source` into the equivalent properties on `target`, ignoring properties with
3383 * a value of `undefined`.
3384 */
3385function copyPropertiesIfPresent(source, target) {
3386 var properties = [];
3387 for (var _i = 2; _i < arguments.length; _i++) {
3388 properties[_i - 2] = arguments[_i];
3389 }
3390 properties.forEach(function (p) { return copyPropertyIfPresent(source, target, p); });
3391}
3392/**
3393 * Will copy the specified property from `source` into the equivalent property on `target`, unless the property has a
3394 * value of `undefined`. If a transformation is provided, it will be applied to the value before being set on `target`.
3395 */
3396function copyPropertyIfPresent(source, target, property, transform) {
3397 var value = getProperty(source, property);
3398 if (value !== undefined) {
3399 setProperty(target, property, transform ? transform(value) : value);
3400 }
3401}
3402function getAllKeysInObjects(objects) {
3403 var allValues = {};
3404 objects.filter(function (obj) { return obj != null; }).forEach(function (obj) {
3405 Object.keys(obj).forEach(function (key) { return allValues[key] = null; });
3406 });
3407 return Object.keys(allValues);
3408}
3409function getAllValuesInObject(obj) {
3410 if (!obj) {
3411 return [];
3412 }
3413 var anyObject = Object;
3414 if (typeof anyObject.values === 'function') {
3415 return anyObject.values(obj);
3416 }
3417 var ret = [];
3418 for (var key in obj) {
3419 if (obj.hasOwnProperty(key) && obj.propertyIsEnumerable(key)) {
3420 ret.push(obj[key]);
3421 }
3422 }
3423 return ret;
3424}
3425function mergeDeep(dest, source, copyUndefined, makeCopyOfSimpleObjects) {
3426 if (copyUndefined === void 0) { copyUndefined = true; }
3427 if (makeCopyOfSimpleObjects === void 0) { makeCopyOfSimpleObjects = false; }
3428 if (!Object(_generic__WEBPACK_IMPORTED_MODULE_0__["exists"])(source)) {
3429 return;
3430 }
3431 iterateObject(source, function (key, sourceValue) {
3432 var destValue = dest[key];
3433 if (destValue === sourceValue) {
3434 return;
3435 }
3436 // when creating params, we don't want to just copy objects over. otherwise merging ColDefs (eg DefaultColDef
3437 // and Column Types) would result in params getting shared between objects.
3438 // by putting an empty value into destValue first, it means we end up copying over values from
3439 // the source object, rather than just copying in the source object in it's entirety.
3440 if (makeCopyOfSimpleObjects) {
3441 var objectIsDueToBeCopied = destValue == null && sourceValue != null;
3442 if (objectIsDueToBeCopied) {
3443 // 'simple object' means a bunch of key/value pairs, eg {filter: 'myFilter'}, as opposed
3444 // to a Class instance (such as ColumnAPI instance).
3445 var sourceIsSimpleObject = typeof sourceValue === 'object' && sourceValue.constructor === Object;
3446 var dontCopy = sourceIsSimpleObject;
3447 if (dontCopy) {
3448 destValue = {};
3449 dest[key] = destValue;
3450 }
3451 }
3452 }
3453 if (isNonNullObject(sourceValue) && isNonNullObject(destValue) && !Array.isArray(destValue)) {
3454 mergeDeep(destValue, sourceValue, copyUndefined, makeCopyOfSimpleObjects);
3455 }
3456 else if (copyUndefined || sourceValue !== undefined) {
3457 dest[key] = sourceValue;
3458 }
3459 });
3460}
3461function missingOrEmptyObject(value) {
3462 return Object(_generic__WEBPACK_IMPORTED_MODULE_0__["missing"])(value) || Object.keys(value).length === 0;
3463}
3464function get(source, expression, defaultValue) {
3465 if (source == null) {
3466 return defaultValue;
3467 }
3468 var keys = expression.split('.');
3469 var objectToRead = source;
3470 while (keys.length > 1) {
3471 objectToRead = objectToRead[keys.shift()];
3472 if (objectToRead == null) {
3473 return defaultValue;
3474 }
3475 }
3476 var value = objectToRead[keys[0]];
3477 return value != null ? value : defaultValue;
3478}
3479function set(target, expression, value) {
3480 if (target == null) {
3481 return;
3482 }
3483 var keys = expression.split('.');
3484 var objectToUpdate = target;
3485 while (keys.length > 1) {
3486 objectToUpdate = objectToUpdate[keys.shift()];
3487 if (objectToUpdate == null) {
3488 return;
3489 }
3490 }
3491 objectToUpdate[keys[0]] = value;
3492}
3493function deepFreeze(object) {
3494 Object.freeze(object);
3495 Object(_generic__WEBPACK_IMPORTED_MODULE_0__["values"])(object).forEach(function (v) {
3496 if (isNonNullObject(v) || typeof v === 'function') {
3497 deepFreeze(v);
3498 }
3499 });
3500 return object;
3501}
3502function getValueUsingField(data, field, fieldContainsDots) {
3503 if (!field || !data) {
3504 return;
3505 }
3506 // if no '.', then it's not a deep value
3507 if (!fieldContainsDots) {
3508 return data[field];
3509 }
3510 // otherwise it is a deep value, so need to dig for it
3511 var fields = field.split('.');
3512 var currentObject = data;
3513 for (var i = 0; i < fields.length; i++) {
3514 if (currentObject == null) {
3515 return undefined;
3516 }
3517 currentObject = currentObject[fields[i]];
3518 }
3519 return currentObject;
3520}
3521// used by ColumnAPI and GridAPI to remove all references, so keeping grid in memory resulting in a
3522// memory leak if user is not disposing of the GridAPI or ColumnApi references
3523function removeAllReferences(obj, objectName) {
3524 Object.keys(obj).forEach(function (key) {
3525 var value = obj[key];
3526 // we want to replace all the @autowired services, which are objects. any simple types (boolean, string etc)
3527 // we don't care about
3528 if (typeof value === 'object') {
3529 obj[key] = undefined;
3530 }
3531 });
3532 var proto = Object.getPrototypeOf(obj);
3533 var properties = {};
3534 Object.keys(proto).forEach(function (key) {
3535 var value = proto[key];
3536 // leave all basic types - this is needed for GridAPI to leave the "destroyed: boolean" attribute alone
3537 if (typeof value === 'function') {
3538 var func = function () {
3539 console.warn("AG Grid: " + objectName + " function " + key + "() cannot be called as the grid has been destroyed.\n Please don't call grid API functions on destroyed grids - as a matter of fact you shouldn't\n be keeping the API reference, your application has a memory leak! Remove the API reference\n when the grid is destroyed.");
3540 };
3541 properties[key] = { value: func, writable: true };
3542 }
3543 });
3544 Object.defineProperties(obj, properties);
3545}
3546function isNonNullObject(value) {
3547 return typeof value === 'object' && value !== null;
3548}
3549
3550
3551
3552
3553/***/ }),
3554/* 14 */
3555/***/ (function(module, __webpack_exports__, __webpack_require__) {
3556
3557"use strict";
3558__webpack_require__.r(__webpack_exports__);
3559/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "doOnce", function() { return doOnce; });
3560/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getFunctionName", function() { return getFunctionName; });
3561/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getFunctionParameters", function() { return getFunctionParameters; });
3562/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFunction", function() { return isFunction; });
3563/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "executeInAWhile", function() { return executeInAWhile; });
3564/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "executeNextVMTurn", function() { return executeNextVMTurn; });
3565/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "executeAfter", function() { return executeAfter; });
3566/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return debounce; });
3567/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return throttle; });
3568/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "waitUntil", function() { return waitUntil; });
3569/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "compose", function() { return compose; });
3570/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "callIfPresent", function() { return callIfPresent; });
3571/**
3572 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
3573 * @version v27.3.0
3574 * @link https://www.ag-grid.com/
3575 * @license MIT
3576 */
3577var FUNCTION_STRIP_COMMENTS = /((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg;
3578var FUNCTION_ARGUMENT_NAMES = /([^\s,]+)/g;
3579var doOnceFlags = {};
3580/**
3581 * If the key was passed before, then doesn't execute the func
3582 * @param {Function} func
3583 * @param {string} key
3584 */
3585function doOnce(func, key) {
3586 if (doOnceFlags[key]) {
3587 return;
3588 }
3589 func();
3590 doOnceFlags[key] = true;
3591}
3592function getFunctionName(funcConstructor) {
3593 // for every other browser in the world
3594 if (funcConstructor.name) {
3595 return funcConstructor.name;
3596 }
3597 // for the pestilence that is ie11
3598 var matches = /function\s+([^\(]+)/.exec(funcConstructor.toString());
3599 return matches && matches.length === 2 ? matches[1].trim() : null;
3600}
3601/** @deprecated */
3602function getFunctionParameters(func) {
3603 var fnStr = func.toString().replace(FUNCTION_STRIP_COMMENTS, '');
3604 return fnStr.slice(fnStr.indexOf('(') + 1, fnStr.indexOf(')')).match(FUNCTION_ARGUMENT_NAMES) || [];
3605}
3606function isFunction(val) {
3607 return !!(val && val.constructor && val.call && val.apply);
3608}
3609function executeInAWhile(funcs) {
3610 executeAfter(funcs, 400);
3611}
3612var executeNextVMTurnFuncs = [];
3613var executeNextVMTurnPending = false;
3614function executeNextVMTurn(func) {
3615 executeNextVMTurnFuncs.push(func);
3616 if (executeNextVMTurnPending) {
3617 return;
3618 }
3619 executeNextVMTurnPending = true;
3620 window.setTimeout(function () {
3621 var funcsCopy = executeNextVMTurnFuncs.slice();
3622 executeNextVMTurnFuncs.length = 0;
3623 executeNextVMTurnPending = false;
3624 funcsCopy.forEach(function (func) { return func(); });
3625 }, 0);
3626}
3627function executeAfter(funcs, milliseconds) {
3628 if (milliseconds === void 0) { milliseconds = 0; }
3629 if (funcs.length > 0) {
3630 window.setTimeout(function () { return funcs.forEach(function (func) { return func(); }); }, milliseconds);
3631 }
3632}
3633/**
3634 * from https://stackoverflow.com/questions/24004791/can-someone-explain-the-debounce-function-in-javascript
3635 * @param {Function} func The function to be debounced
3636 * @param {number} wait The time in ms to debounce
3637 * @param {boolean} immediate If it should run immediately or wait for the initial debounce delay
3638 * @return {Function} The debounced function
3639 */
3640function debounce(func, wait, immediate) {
3641 if (immediate === void 0) { immediate = false; }
3642 // 'private' variable for instance
3643 // The returned function will be able to reference this due to closure.
3644 // Each call to the returned function will share this common timer.
3645 var timeout;
3646 // Calling debounce returns a new anonymous function
3647 return function () {
3648 var args = [];
3649 for (var _i = 0; _i < arguments.length; _i++) {
3650 args[_i] = arguments[_i];
3651 }
3652 // reference the context and args for the setTimeout function
3653 var context = this;
3654 // Should the function be called now? If immediate is true
3655 // and not already in a timeout then the answer is: Yes
3656 var callNow = immediate && !timeout;
3657 // This is the basic debounce behaviour where you can call this
3658 // function several times, but it will only execute once
3659 // [before or after imposing a delay].
3660 // Each time the returned function is called, the timer starts over.
3661 window.clearTimeout(timeout);
3662 // Set the new timeout
3663 timeout = window.setTimeout(function () {
3664 // Inside the timeout function, clear the timeout variable
3665 // which will let the next execution run when in 'immediate' mode
3666 timeout = null;
3667 // Check if the function already ran with the immediate flag
3668 if (!immediate) {
3669 // Call the original function with apply
3670 // apply lets you define the 'this' object as well as the arguments
3671 // (both captured before setTimeout)
3672 func.apply(context, args);
3673 }
3674 }, wait);
3675 // Immediate mode and no wait timer? Execute the function..
3676 if (callNow) {
3677 func.apply(context, args);
3678 }
3679 };
3680}
3681/**
3682 * @param {Function} func The function to be throttled
3683 * @param {number} wait The time in ms to throttle
3684 * @return {Function} The throttled function
3685 */
3686function throttle(func, wait) {
3687 var previousCall = 0;
3688 return function () {
3689 var args = [];
3690 for (var _i = 0; _i < arguments.length; _i++) {
3691 args[_i] = arguments[_i];
3692 }
3693 var context = this;
3694 var currentCall = new Date().getTime();
3695 if (currentCall - previousCall < wait) {
3696 return;
3697 }
3698 previousCall = currentCall;
3699 func.apply(context, args);
3700 };
3701}
3702function waitUntil(condition, callback, timeout, timeoutMessage) {
3703 if (timeout === void 0) { timeout = 100; }
3704 var timeStamp = new Date().getTime();
3705 var interval = null;
3706 var executed = false;
3707 var internalCallback = function () {
3708 var reachedTimeout = ((new Date().getTime()) - timeStamp) > timeout;
3709 if (condition() || reachedTimeout) {
3710 callback();
3711 executed = true;
3712 if (interval != null) {
3713 window.clearInterval(interval);
3714 interval = null;
3715 }
3716 if (reachedTimeout && timeoutMessage) {
3717 console.warn(timeoutMessage);
3718 }
3719 }
3720 };
3721 internalCallback();
3722 if (!executed) {
3723 interval = window.setInterval(internalCallback, 10);
3724 }
3725}
3726function compose() {
3727 var fns = [];
3728 for (var _i = 0; _i < arguments.length; _i++) {
3729 fns[_i] = arguments[_i];
3730 }
3731 return function (arg) { return fns.reduce(function (composed, f) { return f(composed); }, arg); };
3732}
3733function callIfPresent(func) {
3734 if (func) {
3735 func();
3736 }
3737}
3738
3739
3740
3741
3742/***/ }),
3743/* 15 */
3744/***/ (function(module, __webpack_exports__, __webpack_require__) {
3745
3746"use strict";
3747__webpack_require__.r(__webpack_exports__);
3748/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Constants", function() { return Constants; });
3749/**
3750 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
3751 * @version v27.3.0
3752 * @link https://www.ag-grid.com/
3753 * @license MIT
3754 */
3755var Constants = /** @class */ (function () {
3756 function Constants() {
3757 }
3758 Constants.ROW_BUFFER_SIZE = 10;
3759 Constants.LAYOUT_INTERVAL = 500;
3760 Constants.BATCH_WAIT_MILLIS = 50;
3761 Constants.EXPORT_TYPE_DRAG_COPY = 'dragCopy';
3762 Constants.EXPORT_TYPE_CLIPBOARD = 'clipboard';
3763 Constants.EXPORT_TYPE_EXCEL = 'excel';
3764 Constants.EXPORT_TYPE_CSV = 'csv';
3765 Constants.ROW_MODEL_TYPE_INFINITE = 'infinite';
3766 Constants.ROW_MODEL_TYPE_VIEWPORT = 'viewport';
3767 Constants.ROW_MODEL_TYPE_CLIENT_SIDE = 'clientSide';
3768 Constants.ROW_MODEL_TYPE_SERVER_SIDE = 'serverSide';
3769 Constants.ALWAYS = 'always';
3770 Constants.ONLY_WHEN_GROUPING = 'onlyWhenGrouping';
3771 Constants.PINNED_TOP = 'top';
3772 Constants.PINNED_BOTTOM = 'bottom';
3773 Constants.DOM_LAYOUT_NORMAL = 'normal';
3774 Constants.DOM_LAYOUT_PRINT = 'print';
3775 Constants.DOM_LAYOUT_AUTO_HEIGHT = 'autoHeight';
3776 Constants.GROUP_AUTO_COLUMN_ID = 'ag-Grid-AutoColumn';
3777 Constants.SOURCE_PASTE = 'paste';
3778 Constants.PINNED_RIGHT = 'right';
3779 Constants.PINNED_LEFT = 'left';
3780 Constants.SORT_ASC = 'asc';
3781 Constants.SORT_DESC = 'desc';
3782 Constants.INPUT_SELECTOR = 'input, select, button, textarea';
3783 Constants.FOCUSABLE_SELECTOR = '[tabindex], input, select, button, textarea';
3784 Constants.FOCUSABLE_EXCLUDE = '.ag-hidden, .ag-hidden *, [disabled], .ag-disabled, .ag-disabled *';
3785 return Constants;
3786}());
3787
3788
3789
3790
3791
3792/***/ }),
3793/* 16 */
3794/***/ (function(module, __webpack_exports__, __webpack_require__) {
3795
3796"use strict";
3797__webpack_require__.r(__webpack_exports__);
3798/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ModuleNames", function() { return ModuleNames; });
3799/**
3800 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
3801 * @version v27.3.0
3802 * @link https://www.ag-grid.com/
3803 * @license MIT
3804 */
3805var ModuleNames;
3806(function (ModuleNames) {
3807 // when using modules, user references this
3808 ModuleNames["CommunityCoreModule"] = "@ag-grid-community/core";
3809 // when not using modules, user references this
3810 ModuleNames["CommunityAllModules"] = "@ag-grid-community/all";
3811 // community modules
3812 ModuleNames["InfiniteRowModelModule"] = "@ag-grid-community/infinite-row-model";
3813 ModuleNames["ClientSideRowModelModule"] = "@ag-grid-community/client-side-row-model";
3814 ModuleNames["CsvExportModule"] = "@ag-grid-community/csv-export";
3815 // enterprise core - users never import on this, but other enterprise modules do
3816 ModuleNames["EnterpriseCoreModule"] = "@ag-grid-enterprise/core";
3817 // when not using modules, user references this
3818 ModuleNames["EnterpriseAllModules"] = "@ag-grid-enterprise/all";
3819 // enterprise modules
3820 ModuleNames["RowGroupingModule"] = "@ag-grid-enterprise/row-grouping";
3821 ModuleNames["ColumnToolPanelModule"] = "@ag-grid-enterprise/column-tool-panel";
3822 ModuleNames["FiltersToolPanelModule"] = "@ag-grid-enterprise/filter-tool-panel";
3823 ModuleNames["MenuModule"] = "@ag-grid-enterprise/menu";
3824 ModuleNames["SetFilterModule"] = "@ag-grid-enterprise/set-filter";
3825 ModuleNames["MultiFilterModule"] = "@ag-grid-enterprise/multi-filter";
3826 ModuleNames["StatusBarModule"] = "@ag-grid-enterprise/status-bar";
3827 ModuleNames["SideBarModule"] = "@ag-grid-enterprise/side-bar";
3828 ModuleNames["RangeSelectionModule"] = "@ag-grid-enterprise/range-selection";
3829 ModuleNames["MasterDetailModule"] = "@ag-grid-enterprise/master-detail";
3830 ModuleNames["RichSelectModule"] = "@ag-grid-enterprise/rich-select";
3831 ModuleNames["GridChartsModule"] = "@ag-grid-enterprise/charts";
3832 ModuleNames["ViewportRowModelModule"] = "@ag-grid-enterprise/viewport-row-model";
3833 ModuleNames["ServerSideRowModelModule"] = "@ag-grid-enterprise/server-side-row-model";
3834 ModuleNames["ExcelExportModule"] = "@ag-grid-enterprise/excel-export";
3835 ModuleNames["ClipboardModule"] = "@ag-grid-enterprise/clipboard";
3836 ModuleNames["SparklinesModule"] = "@ag-grid-enterprise/sparklines";
3837 // framework wrappers currently don't provide beans, comps etc, so no need to be modules,
3838 // however i argue they should be as in theory they 'could' provide beans etc
3839 ModuleNames["AngularModule"] = "@ag-grid-community/angular";
3840 ModuleNames["ReactModule"] = "@ag-grid-community/react";
3841 ModuleNames["VueModule"] = "@ag-grid-community/vue";
3842 ModuleNames["PolymerModule"] = "@ag-grid-community/polymer";
3843 // and then this, which is definitely not a grid module, as it should not have any dependency
3844 // on the grid (ie shouldn't even reference the Module interface)
3845 // ChartsModule = "@ag-grid-community/charts-core",
3846})(ModuleNames || (ModuleNames = {}));
3847
3848
3849
3850
3851/***/ }),
3852/* 17 */
3853/***/ (function(module, __webpack_exports__, __webpack_require__) {
3854
3855"use strict";
3856__webpack_require__.r(__webpack_exports__);
3857/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ModuleRegistry", function() { return ModuleRegistry; });
3858/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(14);
3859/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7);
3860/**
3861 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
3862 * @version v27.3.0
3863 * @link https://www.ag-grid.com/
3864 * @license MIT
3865 */
3866
3867
3868var ModuleRegistry = /** @class */ (function () {
3869 function ModuleRegistry() {
3870 }
3871 ModuleRegistry.register = function (module, moduleBased) {
3872 if (moduleBased === void 0) { moduleBased = true; }
3873 ModuleRegistry.modulesMap[module.moduleName] = module;
3874 if (ModuleRegistry.moduleBased === undefined) {
3875 ModuleRegistry.moduleBased = moduleBased;
3876 }
3877 else {
3878 if (ModuleRegistry.moduleBased !== moduleBased) {
3879 Object(_utils_function__WEBPACK_IMPORTED_MODULE_0__["doOnce"])(function () {
3880 console.warn("AG Grid: You are mixing modules (i.e. @ag-grid-community/core) and packages (ag-grid-community) - you can only use one or the other of these mechanisms.");
3881 console.warn('Please see https://www.ag-grid.com/javascript-grid/packages-modules/ for more information.');
3882 }, 'ModulePackageCheck');
3883 }
3884 }
3885 };
3886 // noinspection JSUnusedGlobalSymbols
3887 ModuleRegistry.registerModules = function (modules, moduleBased) {
3888 if (moduleBased === void 0) { moduleBased = true; }
3889 if (!modules) {
3890 return;
3891 }
3892 modules.forEach(function (module) { return ModuleRegistry.register(module, moduleBased); });
3893 };
3894 ModuleRegistry.assertRegistered = function (moduleName, reason) {
3895 if (this.isRegistered(moduleName)) {
3896 return true;
3897 }
3898 var warningKey = reason + moduleName;
3899 var warningMessage;
3900 if (ModuleRegistry.moduleBased) {
3901 warningMessage = "AG Grid: unable to use " + reason + " as module " + moduleName + " is not present. Please see: https://www.ag-grid.com/javascript-grid/modules/";
3902 }
3903 else {
3904 warningMessage = "AG Grid: unable to use " + reason + " as package 'ag-grid-enterprise' is not present. Please see: https://www.ag-grid.com/javascript-grid/packages/";
3905 }
3906 Object(_utils_function__WEBPACK_IMPORTED_MODULE_0__["doOnce"])(function () {
3907 console.warn(warningMessage);
3908 }, warningKey);
3909 return false;
3910 };
3911 ModuleRegistry.isRegistered = function (moduleName) {
3912 return !!ModuleRegistry.modulesMap[moduleName];
3913 };
3914 ModuleRegistry.getRegisteredModules = function () {
3915 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_1__["values"])(ModuleRegistry.modulesMap);
3916 };
3917 ModuleRegistry.isPackageBased = function () {
3918 return !ModuleRegistry.moduleBased;
3919 };
3920 // having in a map a) removes duplicates and b) allows fast lookup
3921 ModuleRegistry.modulesMap = {};
3922 return ModuleRegistry;
3923}());
3924
3925
3926
3927
3928
3929/***/ }),
3930/* 18 */
3931/***/ (function(module, __webpack_exports__, __webpack_require__) {
3932
3933"use strict";
3934__webpack_require__.r(__webpack_exports__);
3935/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "firstExistingValue", function() { return firstExistingValue; });
3936/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "existsAndNotEmpty", function() { return existsAndNotEmpty; });
3937/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "last", function() { return last; });
3938/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "areEqual", function() { return areEqual; });
3939/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "compareArrays", function() { return compareArrays; });
3940/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "shallowCompare", function() { return shallowCompare; });
3941/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sortNumerically", function() { return sortNumerically; });
3942/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeRepeatsFromArray", function() { return removeRepeatsFromArray; });
3943/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeFromArray", function() { return removeFromArray; });
3944/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeAllFromArray", function() { return removeAllFromArray; });
3945/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "insertIntoArray", function() { return insertIntoArray; });
3946/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "insertArrayIntoArray", function() { return insertArrayIntoArray; });
3947/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "moveInArray", function() { return moveInArray; });
3948/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "includes", function() { return includes; });
3949/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "flatten", function() { return flatten; });
3950/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pushAll", function() { return pushAll; });
3951/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toStrings", function() { return toStrings; });
3952/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "forEachReverse", function() { return forEachReverse; });
3953/* harmony import */ var _generic__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
3954/**
3955 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
3956 * @version v27.3.0
3957 * @link https://www.ag-grid.com/
3958 * @license MIT
3959 */
3960
3961function firstExistingValue() {
3962 var values = [];
3963 for (var _i = 0; _i < arguments.length; _i++) {
3964 values[_i] = arguments[_i];
3965 }
3966 for (var i = 0; i < values.length; i++) {
3967 var value = values[i];
3968 if (Object(_generic__WEBPACK_IMPORTED_MODULE_0__["exists"])(value)) {
3969 return value;
3970 }
3971 }
3972 return null;
3973}
3974function existsAndNotEmpty(value) {
3975 return value != null && value.length > 0;
3976}
3977function last(arr) {
3978 if (!arr || !arr.length) {
3979 return;
3980 }
3981 return arr[arr.length - 1];
3982}
3983function areEqual(a, b, comparator) {
3984 if (a == null && b == null) {
3985 return true;
3986 }
3987 return a != null &&
3988 b != null &&
3989 a.length === b.length &&
3990 a.every(function (value, index) { return comparator ? comparator(value, b[index]) : b[index] === value; });
3991}
3992/** @deprecated */
3993function compareArrays(array1, array2) {
3994 return areEqual(array1, array2);
3995}
3996/** @deprecated */
3997function shallowCompare(arr1, arr2) {
3998 return areEqual(arr1, arr2);
3999}
4000function sortNumerically(array) {
4001 return array.sort(function (a, b) { return a - b; });
4002}
4003function removeRepeatsFromArray(array, object) {
4004 if (!array) {
4005 return;
4006 }
4007 for (var index = array.length - 2; index >= 0; index--) {
4008 var thisOneMatches = array[index] === object;
4009 var nextOneMatches = array[index + 1] === object;
4010 if (thisOneMatches && nextOneMatches) {
4011 array.splice(index + 1, 1);
4012 }
4013 }
4014}
4015function removeFromArray(array, object) {
4016 var index = array.indexOf(object);
4017 if (index >= 0) {
4018 array.splice(index, 1);
4019 }
4020}
4021function removeAllFromArray(array, toRemove) {
4022 toRemove.forEach(function (item) { return removeFromArray(array, item); });
4023}
4024function insertIntoArray(array, object, toIndex) {
4025 array.splice(toIndex, 0, object);
4026}
4027function insertArrayIntoArray(dest, src, toIndex) {
4028 if (dest == null || src == null) {
4029 return;
4030 }
4031 // put items in backwards, otherwise inserted items end up in reverse order
4032 for (var i = src.length - 1; i >= 0; i--) {
4033 var item = src[i];
4034 insertIntoArray(dest, item, toIndex);
4035 }
4036}
4037function moveInArray(array, objectsToMove, toIndex) {
4038 // first take out items from the array
4039 removeAllFromArray(array, objectsToMove);
4040 // now add the objects, in same order as provided to us, that means we start at the end
4041 // as the objects will be pushed to the right as they are inserted
4042 objectsToMove.slice().reverse().forEach(function (obj) { return insertIntoArray(array, obj, toIndex); });
4043}
4044function includes(array, value) {
4045 return array.indexOf(value) > -1;
4046}
4047function flatten(arrayOfArrays) {
4048 return [].concat.apply([], arrayOfArrays);
4049}
4050function pushAll(target, source) {
4051 if (source == null || target == null) {
4052 return;
4053 }
4054 source.forEach(function (value) { return target.push(value); });
4055}
4056function toStrings(array) {
4057 return array.map(_generic__WEBPACK_IMPORTED_MODULE_0__["toStringOrNull"]);
4058}
4059function forEachReverse(list, action) {
4060 if (list == null) {
4061 return;
4062 }
4063 for (var i = list.length - 1; i >= 0; i--) {
4064 action(list[i], i);
4065 }
4066}
4067
4068
4069
4070
4071/***/ }),
4072/* 19 */
4073/***/ (function(module, __webpack_exports__, __webpack_require__) {
4074
4075"use strict";
4076__webpack_require__.r(__webpack_exports__);
4077/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DefaultColumnTypes", function() { return DefaultColumnTypes; });
4078/**
4079 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
4080 * @version v27.3.0
4081 * @link https://www.ag-grid.com/
4082 * @license MIT
4083 */
4084var DefaultColumnTypes = {
4085 numericColumn: {
4086 headerClass: 'ag-right-aligned-header',
4087 cellClass: 'ag-right-aligned-cell'
4088 },
4089 rightAligned: {
4090 headerClass: 'ag-right-aligned-header',
4091 cellClass: 'ag-right-aligned-cell'
4092 }
4093};
4094
4095
4096
4097
4098/***/ }),
4099/* 20 */
4100/***/ (function(module, __webpack_exports__, __webpack_require__) {
4101
4102"use strict";
4103__webpack_require__.r(__webpack_exports__);
4104/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BeanStub", function() { return BeanStub; });
4105/* harmony import */ var _eventService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11);
4106/* harmony import */ var _context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
4107/* harmony import */ var _utils_event__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(21);
4108/**
4109 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
4110 * @version v27.3.0
4111 * @link https://www.ag-grid.com/
4112 * @license MIT
4113 */
4114var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4115 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4116 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4117 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
4118 return c > 3 && r && Object.defineProperty(target, key, r), r;
4119};
4120
4121
4122
4123var BeanStub = /** @class */ (function () {
4124 function BeanStub() {
4125 var _this = this;
4126 this.destroyFunctions = [];
4127 this.destroyed = false;
4128 // for vue 3 - prevents Vue from trying to make this (and obviously any sub classes) from being reactive
4129 // prevents vue from creating proxies for created objects and prevents identity related issues
4130 this.__v_skip = true;
4131 this.isAlive = function () { return !_this.destroyed; };
4132 }
4133 // this was a test constructor niall built, when active, it prints after 5 seconds all beans/components that are
4134 // not destroyed. to use, create a new grid, then api.destroy() before 5 seconds. then anything that gets printed
4135 // points to a bean or component that was not properly disposed of.
4136 // constructor() {
4137 // setTimeout(()=> {
4138 // if (this.isAlive()) {
4139 // let prototype: any = Object.getPrototypeOf(this);
4140 // const constructor: any = prototype.constructor;
4141 // const constructorString = constructor.toString();
4142 // const beanName = constructorString.substring(9, constructorString.indexOf("("));
4143 // console.log('is alive ' + beanName);
4144 // }
4145 // }, 5000);
4146 // }
4147 // CellComp and GridComp and override this because they get the FrameworkOverrides from the Beans bean
4148 BeanStub.prototype.getFrameworkOverrides = function () {
4149 return this.frameworkOverrides;
4150 };
4151 BeanStub.prototype.getContext = function () {
4152 return this.context;
4153 };
4154 BeanStub.prototype.destroy = function () {
4155 // let prototype: any = Object.getPrototypeOf(this);
4156 // const constructor: any = prototype.constructor;
4157 // const constructorString = constructor.toString();
4158 // const beanName = constructorString.substring(9, constructorString.indexOf("("));
4159 this.destroyFunctions.forEach(function (func) { return func(); });
4160 this.destroyFunctions.length = 0;
4161 this.destroyed = true;
4162 this.dispatchEvent({ type: BeanStub.EVENT_DESTROYED });
4163 };
4164 BeanStub.prototype.addEventListener = function (eventType, listener) {
4165 if (!this.localEventService) {
4166 this.localEventService = new _eventService__WEBPACK_IMPORTED_MODULE_0__["EventService"]();
4167 }
4168 this.localEventService.addEventListener(eventType, listener);
4169 };
4170 BeanStub.prototype.removeEventListener = function (eventType, listener) {
4171 if (this.localEventService) {
4172 this.localEventService.removeEventListener(eventType, listener);
4173 }
4174 };
4175 BeanStub.prototype.dispatchEventAsync = function (event) {
4176 var _this = this;
4177 window.setTimeout(function () { return _this.dispatchEvent(event); }, 0);
4178 };
4179 BeanStub.prototype.dispatchEvent = function (event) {
4180 if (this.localEventService) {
4181 this.localEventService.dispatchEvent(event);
4182 }
4183 };
4184 BeanStub.prototype.addManagedListener = function (object, event, listener) {
4185 var _this = this;
4186 if (this.destroyed) {
4187 return;
4188 }
4189 if (object instanceof HTMLElement) {
4190 Object(_utils_event__WEBPACK_IMPORTED_MODULE_2__["addSafePassiveEventListener"])(this.getFrameworkOverrides(), object, event, listener);
4191 }
4192 else {
4193 object.addEventListener(event, listener);
4194 }
4195 var destroyFunc = function () {
4196 object.removeEventListener(event, listener);
4197 _this.destroyFunctions = _this.destroyFunctions.filter(function (fn) { return fn !== destroyFunc; });
4198 return null;
4199 };
4200 this.destroyFunctions.push(destroyFunc);
4201 return destroyFunc;
4202 };
4203 BeanStub.prototype.addDestroyFunc = function (func) {
4204 // if we are already destroyed, we execute the func now
4205 if (this.isAlive()) {
4206 this.destroyFunctions.push(func);
4207 }
4208 else {
4209 func();
4210 }
4211 };
4212 BeanStub.prototype.createManagedBean = function (bean, context) {
4213 var res = this.createBean(bean, context);
4214 this.addDestroyFunc(this.destroyBean.bind(this, bean, context));
4215 return res;
4216 };
4217 BeanStub.prototype.createBean = function (bean, context, afterPreCreateCallback) {
4218 return (context || this.getContext()).createBean(bean, afterPreCreateCallback);
4219 };
4220 BeanStub.prototype.destroyBean = function (bean, context) {
4221 return (context || this.getContext()).destroyBean(bean);
4222 };
4223 BeanStub.prototype.destroyBeans = function (beans, context) {
4224 var _this = this;
4225 if (beans) {
4226 beans.forEach(function (bean) { return _this.destroyBean(bean, context); });
4227 }
4228 return [];
4229 };
4230 BeanStub.EVENT_DESTROYED = 'destroyed';
4231 __decorate([
4232 Object(_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('frameworkOverrides')
4233 ], BeanStub.prototype, "frameworkOverrides", void 0);
4234 __decorate([
4235 Object(_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('context')
4236 ], BeanStub.prototype, "context", void 0);
4237 __decorate([
4238 Object(_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('eventService')
4239 ], BeanStub.prototype, "eventService", void 0);
4240 __decorate([
4241 Object(_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridOptionsWrapper')
4242 ], BeanStub.prototype, "gridOptionsWrapper", void 0);
4243 __decorate([
4244 _context__WEBPACK_IMPORTED_MODULE_1__["PreDestroy"]
4245 ], BeanStub.prototype, "destroy", null);
4246 return BeanStub;
4247}());
4248
4249
4250
4251
4252
4253/***/ }),
4254/* 21 */
4255/***/ (function(module, __webpack_exports__, __webpack_require__) {
4256
4257"use strict";
4258__webpack_require__.r(__webpack_exports__);
4259/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "stopPropagationForAgGrid", function() { return stopPropagationForAgGrid; });
4260/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isStopPropagationForAgGrid", function() { return isStopPropagationForAgGrid; });
4261/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isEventSupported", function() { return isEventSupported; });
4262/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getCtrlForEvent", function() { return getCtrlForEvent; });
4263/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addChangeListener", function() { return addChangeListener; });
4264/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isElementInEventPath", function() { return isElementInEventPath; });
4265/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createEventPath", function() { return createEventPath; });
4266/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addAgGridEventPath", function() { return addAgGridEventPath; });
4267/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getEventPath", function() { return getEventPath; });
4268/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addSafePassiveEventListener", function() { return addSafePassiveEventListener; });
4269/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(18);
4270/**
4271 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
4272 * @version v27.3.0
4273 * @link https://www.ag-grid.com/
4274 * @license MIT
4275 */
4276
4277var AG_GRID_STOP_PROPAGATION = '__ag_Grid_Stop_Propagation';
4278var PASSIVE_EVENTS = ['touchstart', 'touchend', 'touchmove', 'touchcancel'];
4279var supports = {};
4280/**
4281 * a user once raised an issue - they said that when you opened a popup (eg context menu)
4282 * and then clicked on a selection checkbox, the popup wasn't closed. this is because the
4283 * popup listens for clicks on the body, however ag-grid WAS stopping propagation on the
4284 * checkbox clicks (so the rows didn't pick them up as row selection selection clicks).
4285 * to get around this, we have a pattern to stop propagation for the purposes of AG Grid,
4286 * but we still let the event pass back to the body.
4287 * @param {Event} event
4288 */
4289function stopPropagationForAgGrid(event) {
4290 event[AG_GRID_STOP_PROPAGATION] = true;
4291}
4292function isStopPropagationForAgGrid(event) {
4293 return event[AG_GRID_STOP_PROPAGATION] === true;
4294}
4295var isEventSupported = (function () {
4296 var tags = {
4297 select: 'input',
4298 change: 'input',
4299 submit: 'form',
4300 reset: 'form',
4301 error: 'img',
4302 load: 'img',
4303 abort: 'img'
4304 };
4305 var eventChecker = function (eventName) {
4306 if (typeof supports[eventName] === 'boolean') {
4307 return supports[eventName];
4308 }
4309 var el = document.createElement(tags[eventName] || 'div');
4310 eventName = 'on' + eventName;
4311 return supports[eventName] = (eventName in el);
4312 };
4313 return eventChecker;
4314})();
4315function getCtrlForEvent(gridOptionsWrapper, event, type) {
4316 var sourceElement = event.target;
4317 while (sourceElement) {
4318 var renderedComp = gridOptionsWrapper.getDomData(sourceElement, type);
4319 if (renderedComp) {
4320 return renderedComp;
4321 }
4322 sourceElement = sourceElement.parentElement;
4323 }
4324 return null;
4325}
4326/**
4327 * @deprecated
4328 * Adds all type of change listeners to an element, intended to be a text field
4329 * @param {HTMLElement} element
4330 * @param {EventListener} listener
4331 */
4332function addChangeListener(element, listener) {
4333 element.addEventListener('changed', listener);
4334 element.addEventListener('paste', listener);
4335 element.addEventListener('input', listener);
4336}
4337function isElementInEventPath(element, event) {
4338 if (!event || !element) {
4339 return false;
4340 }
4341 return getEventPath(event).indexOf(element) >= 0;
4342}
4343function createEventPath(event) {
4344 var res = [];
4345 var pointer = event.target;
4346 while (pointer) {
4347 res.push(pointer);
4348 pointer = pointer.parentElement;
4349 }
4350 return res;
4351}
4352/**
4353 * firefox doesn't have event.path set, or any alternative to it, so we hack
4354 * it in. this is needed as it's to late to work out the path when the item is
4355 * removed from the dom. used by MouseEventService, where it works out if a click
4356 * was from the current grid, or a detail grid (master / detail).
4357 * @param {Event} event
4358 */
4359function addAgGridEventPath(event) {
4360 event.__agGridEventPath = getEventPath(event);
4361}
4362/**
4363 * Gets the path for an Event.
4364 * https://stackoverflow.com/questions/39245488/event-path-undefined-with-firefox-and-vue-js
4365 * https://developer.mozilla.org/en-US/docs/Web/API/Event
4366 * @param {Event} event
4367 * @returns {EventTarget[]}
4368 */
4369function getEventPath(event) {
4370 var eventNoType = event;
4371 if (eventNoType.path) {
4372 // Chrome supports path
4373 return eventNoType.path;
4374 }
4375 if (eventNoType.composedPath) {
4376 // Firefox supports composePath
4377 return eventNoType.composedPath();
4378 }
4379 if (eventNoType.__agGridEventPath) {
4380 // Firefox supports composePath
4381 return eventNoType.__agGridEventPath;
4382 }
4383 // and finally, if none of the above worked,
4384 // we create the path ourselves
4385 return createEventPath(event);
4386}
4387function addSafePassiveEventListener(frameworkOverrides, eElement, event, listener) {
4388 var isPassive = Object(_array__WEBPACK_IMPORTED_MODULE_0__["includes"])(PASSIVE_EVENTS, event);
4389 var options = isPassive ? { passive: true } : undefined;
4390 // this check is here for certain scenarios where I believe the user must be destroying
4391 // the grid somehow but continuing for it to be used
4392 if (frameworkOverrides && frameworkOverrides.addEventListener) {
4393 frameworkOverrides.addEventListener(eElement, event, listener, options);
4394 }
4395}
4396
4397
4398
4399
4400/***/ }),
4401/* 22 */
4402/***/ (function(module, __webpack_exports__, __webpack_require__) {
4403
4404"use strict";
4405__webpack_require__.r(__webpack_exports__);
4406/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColumnModel", function() { return ColumnModel; });
4407/* harmony import */ var _entities_columnGroup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9);
4408/* harmony import */ var _entities_column__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10);
4409/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23);
4410/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20);
4411/* harmony import */ var _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(8);
4412/* harmony import */ var _groupInstanceIdCreator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(25);
4413/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(12);
4414/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(15);
4415/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(18);
4416/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(7);
4417/* harmony import */ var _utils_string__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(26);
4418/* harmony import */ var _utils_map__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(27);
4419/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(14);
4420/**
4421 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
4422 * @version v27.3.0
4423 * @link https://www.ag-grid.com/
4424 * @license MIT
4425 */
4426var __extends = (undefined && undefined.__extends) || (function () {
4427 var extendStatics = function (d, b) {
4428 extendStatics = Object.setPrototypeOf ||
4429 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
4430 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
4431 return extendStatics(d, b);
4432 };
4433 return function (d, b) {
4434 extendStatics(d, b);
4435 function __() { this.constructor = d; }
4436 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
4437 };
4438})();
4439var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
4440 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4441 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4442 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
4443 return c > 3 && r && Object.defineProperty(target, key, r), r;
4444};
4445var __param = (undefined && undefined.__param) || function (paramIndex, decorator) {
4446 return function (target, key) { decorator(target, key, paramIndex); }
4447};
4448var __values = (undefined && undefined.__values) || function(o) {
4449 var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
4450 if (m) return m.call(o);
4451 if (o && typeof o.length === "number") return {
4452 next: function () {
4453 if (o && i >= o.length) o = void 0;
4454 return { value: o && o[i++], done: !o };
4455 }
4456 };
4457 throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
4458};
4459var __read = (undefined && undefined.__read) || function (o, n) {
4460 var m = typeof Symbol === "function" && o[Symbol.iterator];
4461 if (!m) return o;
4462 var i = m.call(o), r, ar = [], e;
4463 try {
4464 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
4465 }
4466 catch (error) { e = { error: error }; }
4467 finally {
4468 try {
4469 if (r && !r.done && (m = i["return"])) m.call(i);
4470 }
4471 finally { if (e) throw e.error; }
4472 }
4473 return ar;
4474};
4475var __spread = (undefined && undefined.__spread) || function () {
4476 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
4477 return ar;
4478};
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492var ColumnModel = /** @class */ (function (_super) {
4493 __extends(ColumnModel, _super);
4494 function ColumnModel() {
4495 var _this = _super !== null && _super.apply(this, arguments) || this;
4496 // header row count, based on user provided columns
4497 _this.primaryHeaderRowCount = 0;
4498 _this.secondaryHeaderRowCount = 0;
4499 // header row count, either above, or based on pivoting if we are pivoting
4500 _this.gridHeaderRowCount = 0;
4501 // leave level columns of the displayed trees
4502 _this.displayedColumnsLeft = [];
4503 _this.displayedColumnsRight = [];
4504 _this.displayedColumnsCenter = [];
4505 // all three lists above combined
4506 _this.displayedColumns = [];
4507 // for fast lookup, to see if a column or group is still displayed
4508 _this.displayedColumnsAndGroupsMap = {};
4509 // all columns to be rendered
4510 _this.viewportColumns = [];
4511 // all columns to be rendered in the centre
4512 _this.viewportColumnsCenter = [];
4513 _this.autoHeightActiveAtLeastOnce = false;
4514 _this.rowGroupColumns = [];
4515 _this.valueColumns = [];
4516 _this.pivotColumns = [];
4517 _this.ready = false;
4518 _this.autoGroupsNeedBuilding = false;
4519 _this.forceRecreateAutoGroups = false;
4520 _this.pivotMode = false;
4521 _this.bodyWidth = 0;
4522 _this.leftWidth = 0;
4523 _this.rightWidth = 0;
4524 _this.bodyWidthDirty = true;
4525 _this.colDefVersion = 0;
4526 _this.flexColsCalculatedAtLestOnce = false;
4527 return _this;
4528 }
4529 ColumnModel.prototype.init = function () {
4530 var _this = this;
4531 this.suppressColumnVirtualisation = this.gridOptionsWrapper.isSuppressColumnVirtualisation();
4532 var pivotMode = this.gridOptionsWrapper.isPivotMode();
4533 if (this.isPivotSettingAllowed(pivotMode)) {
4534 this.pivotMode = pivotMode;
4535 }
4536 this.usingTreeData = this.gridOptionsWrapper.isTreeData();
4537 this.addManagedListener(this.gridOptionsWrapper, 'autoGroupColumnDef', function () { return _this.onAutoGroupColumnDefChanged(); });
4538 this.addManagedListener(this.gridOptionsWrapper, 'defaultColDef', function () { return _this.onDefaultColDefChanged(); });
4539 };
4540 ColumnModel.prototype.onAutoGroupColumnDefChanged = function () {
4541 this.autoGroupsNeedBuilding = true;
4542 this.forceRecreateAutoGroups = true;
4543 this.updateGridColumns();
4544 this.updateDisplayedColumns('gridOptionsChanged');
4545 };
4546 ColumnModel.prototype.onDefaultColDefChanged = function () {
4547 // col def's should get revisited, even if specific column hasn't changed,
4548 // as the defaultColDef impacts all columns, so each column should assume it's Col Def has changed.
4549 this.colDefVersion++;
4550 // likewise for autoGroupCol, the default col def impacts this
4551 this.forceRecreateAutoGroups = true;
4552 this.createColumnsFromColumnDefs(true);
4553 };
4554 ColumnModel.prototype.getColDefVersion = function () {
4555 return this.colDefVersion;
4556 };
4557 ColumnModel.prototype.setColumnDefs = function (columnDefs, source) {
4558 if (source === void 0) { source = 'api'; }
4559 var colsPreviouslyExisted = !!this.columnDefs;
4560 this.colDefVersion++;
4561 this.columnDefs = columnDefs;
4562 this.createColumnsFromColumnDefs(colsPreviouslyExisted, source);
4563 };
4564 ColumnModel.prototype.createColumnsFromColumnDefs = function (colsPreviouslyExisted, source) {
4565 var _this = this;
4566 if (source === void 0) { source = 'api'; }
4567 // only need to raise before/after events if updating columns, never if setting columns for first time
4568 var raiseEventsFunc = colsPreviouslyExisted ? this.compareColumnStatesAndRaiseEvents(source) : undefined;
4569 // always invalidate cache on changing columns, as the column id's for the new columns
4570 // could overlap with the old id's, so the cache would return old values for new columns.
4571 this.valueCache.expire();
4572 // NOTE ==================
4573 // we should be destroying the existing columns and groups if they exist, for example, the original column
4574 // group adds a listener to the columns, it should be also removing the listeners
4575 this.autoGroupsNeedBuilding = true;
4576 var oldPrimaryColumns = this.primaryColumns;
4577 var oldPrimaryTree = this.primaryColumnTree;
4578 var balancedTreeResult = this.columnFactory.createColumnTree(this.columnDefs, true, oldPrimaryTree);
4579 this.primaryColumnTree = balancedTreeResult.columnTree;
4580 this.primaryHeaderRowCount = balancedTreeResult.treeDept + 1;
4581 this.primaryColumns = this.getColumnsFromTree(this.primaryColumnTree);
4582 this.primaryColumnsMap = {};
4583 this.primaryColumns.forEach(function (col) { return _this.primaryColumnsMap[col.getId()] = col; });
4584 this.extractRowGroupColumns(source, oldPrimaryColumns);
4585 this.extractPivotColumns(source, oldPrimaryColumns);
4586 this.extractValueColumns(source, oldPrimaryColumns);
4587 this.ready = true;
4588 // if we are showing secondary columns, then no need to update grid columns
4589 // at this point, as it's the pivot service responsibility to change these
4590 // if we are no longer pivoting (ie and need to revert back to primary, otherwise
4591 // we shouldn't be touching the primary).
4592 var gridColsNotProcessed = this.gridColsArePrimary === undefined;
4593 var processGridCols = this.gridColsArePrimary || gridColsNotProcessed;
4594 if (processGridCols) {
4595 this.updateGridColumns();
4596 if (colsPreviouslyExisted && !this.gridOptionsWrapper.isMaintainColumnOrder()) {
4597 this.orderGridColumnsLikePrimary();
4598 }
4599 this.updateDisplayedColumns(source);
4600 this.checkViewportColumns();
4601 }
4602 // this event is not used by AG Grid, but left here for backwards compatibility,
4603 // in case applications use it
4604 this.dispatchEverythingChanged(source);
4605 raiseEventsFunc && raiseEventsFunc();
4606 this.dispatchNewColumnsLoaded();
4607 };
4608 ColumnModel.prototype.dispatchNewColumnsLoaded = function () {
4609 var newColumnsLoadedEvent = {
4610 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_NEW_COLUMNS_LOADED,
4611 api: this.gridApi,
4612 columnApi: this.columnApi
4613 };
4614 this.eventService.dispatchEvent(newColumnsLoadedEvent);
4615 };
4616 // this event is legacy, no grid code listens to it. instead the grid listens to New Columns Loaded
4617 ColumnModel.prototype.dispatchEverythingChanged = function (source) {
4618 if (source === void 0) { source = 'api'; }
4619 var eventEverythingChanged = {
4620 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_EVERYTHING_CHANGED,
4621 api: this.gridApi,
4622 columnApi: this.columnApi,
4623 source: source
4624 };
4625 this.eventService.dispatchEvent(eventEverythingChanged);
4626 };
4627 ColumnModel.prototype.orderGridColumnsLikePrimary = function () {
4628 var _this = this;
4629 var primaryColumns = this.primaryColumns;
4630 if (!primaryColumns) {
4631 return;
4632 }
4633 this.gridColumns.sort(function (colA, colB) {
4634 var primaryIndexA = primaryColumns.indexOf(colA);
4635 var primaryIndexB = primaryColumns.indexOf(colB);
4636 // if both cols are present in primary, then we just return the position,
4637 // so position is maintained.
4638 var indexAPresent = primaryIndexA >= 0;
4639 var indexBPresent = primaryIndexB >= 0;
4640 if (indexAPresent && indexBPresent) {
4641 return primaryIndexA - primaryIndexB;
4642 }
4643 if (indexAPresent) {
4644 // B is auto group column, so put B first
4645 return 1;
4646 }
4647 if (indexBPresent) {
4648 // A is auto group column, so put A first
4649 return -1;
4650 }
4651 // otherwise both A and B are auto-group columns. so we just keep the order
4652 // as they were already in.
4653 var gridIndexA = _this.gridColumns.indexOf(colA);
4654 var gridIndexB = _this.gridColumns.indexOf(colB);
4655 return gridIndexA - gridIndexB;
4656 });
4657 };
4658 ColumnModel.prototype.getAllDisplayedAutoHeightCols = function () {
4659 return this.displayedAutoHeightCols;
4660 };
4661 ColumnModel.prototype.setViewport = function () {
4662 if (this.gridOptionsWrapper.isEnableRtl()) {
4663 this.viewportLeft = this.bodyWidth - this.scrollPosition - this.scrollWidth;
4664 this.viewportRight = this.bodyWidth - this.scrollPosition;
4665 }
4666 else {
4667 this.viewportLeft = this.scrollPosition;
4668 this.viewportRight = this.scrollWidth + this.scrollPosition;
4669 }
4670 };
4671 // used by clipboard service, to know what columns to paste into
4672 ColumnModel.prototype.getDisplayedColumnsStartingAt = function (column) {
4673 var currentColumn = column;
4674 var columns = [];
4675 while (currentColumn != null) {
4676 columns.push(currentColumn);
4677 currentColumn = this.getDisplayedColAfter(currentColumn);
4678 }
4679 return columns;
4680 };
4681 // checks what columns are currently displayed due to column virtualisation. fires an event
4682 // if the list of columns has changed.
4683 // + setColumnWidth(), setViewportPosition(), setColumnDefs(), sizeColumnsToFit()
4684 ColumnModel.prototype.checkViewportColumns = function () {
4685 // check displayCenterColumnTree exists first, as it won't exist when grid is initialising
4686 if (this.displayedColumnsCenter == null) {
4687 return;
4688 }
4689 var hashBefore = this.viewportColumns.map(function (column) { return column.getId(); }).join('#');
4690 this.extractViewport();
4691 var hashAfter = this.viewportColumns.map(function (column) { return column.getId(); }).join('#');
4692 if (hashBefore !== hashAfter) {
4693 var event_1 = {
4694 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_VIRTUAL_COLUMNS_CHANGED,
4695 api: this.gridApi,
4696 columnApi: this.columnApi
4697 };
4698 this.eventService.dispatchEvent(event_1);
4699 }
4700 };
4701 ColumnModel.prototype.setViewportPosition = function (scrollWidth, scrollPosition) {
4702 if (scrollWidth !== this.scrollWidth || scrollPosition !== this.scrollPosition || this.bodyWidthDirty) {
4703 this.scrollWidth = scrollWidth;
4704 this.scrollPosition = scrollPosition;
4705 // we need to call setVirtualViewportLeftAndRight() at least once after the body width changes,
4706 // as the viewport can stay the same, but in RTL, if body width changes, we need to work out the
4707 // virtual columns again
4708 this.bodyWidthDirty = true;
4709 this.setViewport();
4710 if (this.ready) {
4711 this.checkViewportColumns();
4712 }
4713 }
4714 };
4715 ColumnModel.prototype.isPivotMode = function () {
4716 return this.pivotMode;
4717 };
4718 ColumnModel.prototype.isPivotSettingAllowed = function (pivot) {
4719 if (pivot && this.gridOptionsWrapper.isTreeData()) {
4720 console.warn("AG Grid: Pivot mode not available in conjunction Tree Data i.e. 'gridOptions.treeData: true'");
4721 return false;
4722 }
4723 return true;
4724 };
4725 ColumnModel.prototype.setPivotMode = function (pivotMode, source) {
4726 if (source === void 0) { source = 'api'; }
4727 if (pivotMode === this.pivotMode || !this.isPivotSettingAllowed(this.pivotMode)) {
4728 return;
4729 }
4730 this.pivotMode = pivotMode;
4731 // we need to update grid columns to cover the scenario where user has groupSuppressAutoColumn=true, as
4732 // this means we don't use auto group column UNLESS we are in pivot mode (it's mandatory in pivot mode),
4733 // so need to updateGridColumn() to check it autoGroupCol needs to be added / removed
4734 this.autoGroupsNeedBuilding = true;
4735 this.updateGridColumns();
4736 this.updateDisplayedColumns(source);
4737 var event = {
4738 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_PIVOT_MODE_CHANGED,
4739 api: this.gridApi,
4740 columnApi: this.columnApi
4741 };
4742 this.eventService.dispatchEvent(event);
4743 };
4744 ColumnModel.prototype.getSecondaryPivotColumn = function (pivotKeys, valueColKey) {
4745 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(this.secondaryColumns)) {
4746 return null;
4747 }
4748 var valueColumnToFind = this.getPrimaryColumn(valueColKey);
4749 var foundColumn = null;
4750 this.secondaryColumns.forEach(function (column) {
4751 var thisPivotKeys = column.getColDef().pivotKeys;
4752 var pivotValueColumn = column.getColDef().pivotValueColumn;
4753 var pivotKeyMatches = Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["areEqual"])(thisPivotKeys, pivotKeys);
4754 var pivotValueMatches = pivotValueColumn === valueColumnToFind;
4755 if (pivotKeyMatches && pivotValueMatches) {
4756 foundColumn = column;
4757 }
4758 });
4759 return foundColumn;
4760 };
4761 ColumnModel.prototype.setBeans = function (loggerFactory) {
4762 this.logger = loggerFactory.create('columnModel');
4763 };
4764 ColumnModel.prototype.setFirstRightAndLastLeftPinned = function (source) {
4765 var lastLeft;
4766 var firstRight;
4767 if (this.gridOptionsWrapper.isEnableRtl()) {
4768 lastLeft = this.displayedColumnsLeft ? this.displayedColumnsLeft[0] : null;
4769 firstRight = this.displayedColumnsRight ? Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["last"])(this.displayedColumnsRight) : null;
4770 }
4771 else {
4772 lastLeft = this.displayedColumnsLeft ? Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["last"])(this.displayedColumnsLeft) : null;
4773 firstRight = this.displayedColumnsRight ? this.displayedColumnsRight[0] : null;
4774 }
4775 this.gridColumns.forEach(function (column) {
4776 column.setLastLeftPinned(column === lastLeft, source);
4777 column.setFirstRightPinned(column === firstRight, source);
4778 });
4779 };
4780 ColumnModel.prototype.autoSizeColumns = function (params) {
4781 var _this = this;
4782 var columns = params.columns, skipHeader = params.skipHeader, skipHeaderGroups = params.skipHeaderGroups, stopAtGroup = params.stopAtGroup, _a = params.source, source = _a === void 0 ? 'api' : _a;
4783 // because of column virtualisation, we can only do this function on columns that are
4784 // actually rendered, as non-rendered columns (outside the viewport and not rendered
4785 // due to column virtualisation) are not present. this can result in all rendered columns
4786 // getting narrowed, which in turn introduces more rendered columns on the RHS which
4787 // did not get autosized in the original run, leaving the visible grid with columns on
4788 // the LHS sized, but RHS no. so we keep looping through the visible columns until
4789 // no more cols are available (rendered) to be resized
4790 // we autosize after animation frames finish in case any cell renderers need to complete first. this can
4791 // happen eg if client code is calling api.autoSizeAllColumns() straight after grid is initialised, but grid
4792 // hasn't fully drawn out all the cells yet (due to cell renderers in animation frames).
4793 this.animationFrameService.flushAllFrames();
4794 // keep track of which cols we have resized in here
4795 var columnsAutosized = [];
4796 // initialise with anything except 0 so that while loop executes at least once
4797 var changesThisTimeAround = -1;
4798 var shouldSkipHeader = skipHeader != null ? skipHeader : this.gridOptionsWrapper.isSkipHeaderOnAutoSize();
4799 var shouldSkipHeaderGroups = skipHeaderGroups != null ? skipHeaderGroups : shouldSkipHeader;
4800 while (changesThisTimeAround !== 0) {
4801 changesThisTimeAround = 0;
4802 this.actionOnGridColumns(columns, function (column) {
4803 // if already autosized, skip it
4804 if (columnsAutosized.indexOf(column) >= 0) {
4805 return false;
4806 }
4807 // get how wide this col should be
4808 var preferredWidth = _this.autoWidthCalculator.getPreferredWidthForColumn(column, shouldSkipHeader);
4809 // preferredWidth = -1 if this col is not on the screen
4810 if (preferredWidth > 0) {
4811 var newWidth = _this.normaliseColumnWidth(column, preferredWidth);
4812 column.setActualWidth(newWidth, source);
4813 columnsAutosized.push(column);
4814 changesThisTimeAround++;
4815 }
4816 return true;
4817 }, source);
4818 }
4819 if (!shouldSkipHeaderGroups) {
4820 this.autoSizeColumnGroupsByColumns(columns, stopAtGroup);
4821 }
4822 this.fireColumnResizedEvent(columnsAutosized, true, 'autosizeColumns');
4823 };
4824 ColumnModel.prototype.fireColumnResizedEvent = function (columns, finished, source, flexColumns) {
4825 if (flexColumns === void 0) { flexColumns = null; }
4826 if (columns && columns.length) {
4827 var event_2 = {
4828 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_RESIZED,
4829 columns: columns,
4830 column: columns.length === 1 ? columns[0] : null,
4831 flexColumns: flexColumns,
4832 finished: finished,
4833 api: this.gridApi,
4834 columnApi: this.columnApi,
4835 source: source
4836 };
4837 this.eventService.dispatchEvent(event_2);
4838 }
4839 };
4840 ColumnModel.prototype.autoSizeColumn = function (key, skipHeader, source) {
4841 if (source === void 0) { source = "api"; }
4842 if (key) {
4843 this.autoSizeColumns({ columns: [key], skipHeader: skipHeader, skipHeaderGroups: true, source: source });
4844 }
4845 };
4846 ColumnModel.prototype.autoSizeColumnGroupsByColumns = function (keys, stopAtGroup) {
4847 var e_1, _a, e_2, _b;
4848 var columnGroups = new Set();
4849 var columns = this.getGridColumns(keys);
4850 columns.forEach(function (col) {
4851 var parent = col.getParent();
4852 while (parent && parent != stopAtGroup) {
4853 if (!parent.isPadding()) {
4854 columnGroups.add(parent);
4855 }
4856 parent = parent.getParent();
4857 }
4858 });
4859 var headerGroupCtrl;
4860 var resizedColumns = [];
4861 try {
4862 for (var columnGroups_1 = __values(columnGroups), columnGroups_1_1 = columnGroups_1.next(); !columnGroups_1_1.done; columnGroups_1_1 = columnGroups_1.next()) {
4863 var columnGroup = columnGroups_1_1.value;
4864 try {
4865 for (var _c = (e_2 = void 0, __values(this.ctrlsService.getHeaderRowContainerCtrls())), _d = _c.next(); !_d.done; _d = _c.next()) {
4866 var headerContainerCtrl = _d.value;
4867 headerGroupCtrl = headerContainerCtrl.getHeaderCtrlForColumn(columnGroup);
4868 if (headerGroupCtrl) {
4869 break;
4870 }
4871 }
4872 }
4873 catch (e_2_1) { e_2 = { error: e_2_1 }; }
4874 finally {
4875 try {
4876 if (_d && !_d.done && (_b = _c.return)) _b.call(_c);
4877 }
4878 finally { if (e_2) throw e_2.error; }
4879 }
4880 if (headerGroupCtrl) {
4881 headerGroupCtrl.resizeLeafColumnsToFit();
4882 }
4883 }
4884 }
4885 catch (e_1_1) { e_1 = { error: e_1_1 }; }
4886 finally {
4887 try {
4888 if (columnGroups_1_1 && !columnGroups_1_1.done && (_a = columnGroups_1.return)) _a.call(columnGroups_1);
4889 }
4890 finally { if (e_1) throw e_1.error; }
4891 }
4892 return resizedColumns;
4893 };
4894 ColumnModel.prototype.autoSizeAllColumns = function (skipHeader, source) {
4895 if (source === void 0) { source = "api"; }
4896 var allDisplayedColumns = this.getAllDisplayedColumns();
4897 this.autoSizeColumns({ columns: allDisplayedColumns, skipHeader: skipHeader, source: source });
4898 };
4899 // Possible candidate for reuse (alot of recursive traversal duplication)
4900 ColumnModel.prototype.getColumnsFromTree = function (rootColumns) {
4901 var result = [];
4902 var recursiveFindColumns = function (childColumns) {
4903 for (var i = 0; i < childColumns.length; i++) {
4904 var child = childColumns[i];
4905 if (child instanceof _entities_column__WEBPACK_IMPORTED_MODULE_1__["Column"]) {
4906 result.push(child);
4907 }
4908 else if (child instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_4__["ProvidedColumnGroup"]) {
4909 recursiveFindColumns(child.getChildren());
4910 }
4911 }
4912 };
4913 recursiveFindColumns(rootColumns);
4914 return result;
4915 };
4916 ColumnModel.prototype.getAllDisplayedTrees = function () {
4917 if (this.displayedTreeLeft && this.displayedTreeRight && this.displayedTreeCentre) {
4918 return this.displayedTreeLeft
4919 .concat(this.displayedTreeCentre)
4920 .concat(this.displayedTreeRight);
4921 }
4922 return null;
4923 };
4924 // + columnSelectPanel
4925 ColumnModel.prototype.getPrimaryColumnTree = function () {
4926 return this.primaryColumnTree;
4927 };
4928 // + gridPanel -> for resizing the body and setting top margin
4929 ColumnModel.prototype.getHeaderRowCount = function () {
4930 return this.gridHeaderRowCount;
4931 };
4932 // + headerRenderer -> setting pinned body width
4933 ColumnModel.prototype.getDisplayedTreeLeft = function () {
4934 return this.displayedTreeLeft;
4935 };
4936 // + headerRenderer -> setting pinned body width
4937 ColumnModel.prototype.getDisplayedTreeRight = function () {
4938 return this.displayedTreeRight;
4939 };
4940 // + headerRenderer -> setting pinned body width
4941 ColumnModel.prototype.getDisplayedTreeCentre = function () {
4942 return this.displayedTreeCentre;
4943 };
4944 // gridPanel -> ensureColumnVisible
4945 ColumnModel.prototype.isColumnDisplayed = function (column) {
4946 return this.getAllDisplayedColumns().indexOf(column) >= 0;
4947 };
4948 // + csvCreator
4949 ColumnModel.prototype.getAllDisplayedColumns = function () {
4950 return this.displayedColumns;
4951 };
4952 ColumnModel.prototype.getViewportColumns = function () {
4953 return this.viewportColumns;
4954 };
4955 ColumnModel.prototype.getDisplayedLeftColumnsForRow = function (rowNode) {
4956 if (!this.colSpanActive) {
4957 return this.displayedColumnsLeft;
4958 }
4959 return this.getDisplayedColumnsForRow(rowNode, this.displayedColumnsLeft);
4960 };
4961 ColumnModel.prototype.getDisplayedRightColumnsForRow = function (rowNode) {
4962 if (!this.colSpanActive) {
4963 return this.displayedColumnsRight;
4964 }
4965 return this.getDisplayedColumnsForRow(rowNode, this.displayedColumnsRight);
4966 };
4967 ColumnModel.prototype.getDisplayedColumnsForRow = function (rowNode, displayedColumns, filterCallback, emptySpaceBeforeColumn) {
4968 var result = [];
4969 var lastConsideredCol = null;
4970 var _loop_1 = function (i) {
4971 var col = displayedColumns[i];
4972 var maxAllowedColSpan = displayedColumns.length - i;
4973 var colSpan = Math.min(col.getColSpan(rowNode), maxAllowedColSpan);
4974 var columnsToCheckFilter = [col];
4975 if (colSpan > 1) {
4976 var colsToRemove = colSpan - 1;
4977 for (var j = 1; j <= colsToRemove; j++) {
4978 columnsToCheckFilter.push(displayedColumns[i + j]);
4979 }
4980 i += colsToRemove;
4981 }
4982 // see which cols we should take out for column virtualisation
4983 var filterPasses;
4984 if (filterCallback) {
4985 // if user provided a callback, means some columns may not be in the viewport.
4986 // the user will NOT provide a callback if we are talking about pinned areas,
4987 // as pinned areas have no horizontal scroll and do not virtualise the columns.
4988 // if lots of columns, that means column spanning, and we set filterPasses = true
4989 // if one or more of the columns spanned pass the filter.
4990 filterPasses = false;
4991 columnsToCheckFilter.forEach(function (colForFilter) {
4992 if (filterCallback(colForFilter)) {
4993 filterPasses = true;
4994 }
4995 });
4996 }
4997 else {
4998 filterPasses = true;
4999 }
5000 if (filterPasses) {
5001 if (result.length === 0 && lastConsideredCol) {
5002 var gapBeforeColumn = emptySpaceBeforeColumn ? emptySpaceBeforeColumn(col) : false;
5003 if (gapBeforeColumn) {
5004 result.push(lastConsideredCol);
5005 }
5006 }
5007 result.push(col);
5008 }
5009 lastConsideredCol = col;
5010 out_i_1 = i;
5011 };
5012 var out_i_1;
5013 for (var i = 0; i < displayedColumns.length; i++) {
5014 _loop_1(i);
5015 i = out_i_1;
5016 }
5017 return result;
5018 };
5019 // + rowRenderer
5020 // if we are not column spanning, this just returns back the virtual centre columns,
5021 // however if we are column spanning, then different rows can have different virtual
5022 // columns, so we have to work out the list for each individual row.
5023 ColumnModel.prototype.getViewportCenterColumnsForRow = function (rowNode) {
5024 var _this = this;
5025 if (!this.colSpanActive) {
5026 return this.viewportColumnsCenter;
5027 }
5028 var emptySpaceBeforeColumn = function (col) {
5029 var left = col.getLeft();
5030 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(left) && left > _this.viewportLeft;
5031 };
5032 // if doing column virtualisation, then we filter based on the viewport.
5033 var filterCallback = this.suppressColumnVirtualisation ? null : this.isColumnInViewport.bind(this);
5034 return this.getDisplayedColumnsForRow(rowNode, this.displayedColumnsCenter, filterCallback, emptySpaceBeforeColumn);
5035 };
5036 ColumnModel.prototype.getAriaColumnIndex = function (col) {
5037 return this.getAllGridColumns().indexOf(col) + 1;
5038 };
5039 ColumnModel.prototype.isColumnInViewport = function (col) {
5040 // we never filter out autoHeight columns, as we need them in the DOM for calculating Auto Height
5041 if (col.isAutoHeight()) {
5042 return true;
5043 }
5044 var columnLeft = col.getLeft() || 0;
5045 var columnRight = columnLeft + col.getActualWidth();
5046 // adding 200 for buffer size, so some cols off viewport are rendered.
5047 // this helps horizontal scrolling so user rarely sees white space (unless
5048 // they scroll horizontally fast). however we are conservative, as the more
5049 // buffer the slower the vertical redraw speed
5050 var leftBounds = this.viewportLeft - 200;
5051 var rightBounds = this.viewportRight + 200;
5052 var columnToMuchLeft = columnLeft < leftBounds && columnRight < leftBounds;
5053 var columnToMuchRight = columnLeft > rightBounds && columnRight > rightBounds;
5054 return !columnToMuchLeft && !columnToMuchRight;
5055 };
5056 // used by:
5057 // + angularGrid -> setting pinned body width
5058 // note: this should be cached
5059 ColumnModel.prototype.getDisplayedColumnsLeftWidth = function () {
5060 return this.getWidthOfColsInList(this.displayedColumnsLeft);
5061 };
5062 // note: this should be cached
5063 ColumnModel.prototype.getDisplayedColumnsRightWidth = function () {
5064 return this.getWidthOfColsInList(this.displayedColumnsRight);
5065 };
5066 ColumnModel.prototype.updatePrimaryColumnList = function (keys, masterList, actionIsAdd, columnCallback, eventType, source) {
5067 var _this = this;
5068 if (source === void 0) { source = "api"; }
5069 if (!keys || Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missingOrEmpty"])(keys)) {
5070 return;
5071 }
5072 var atLeastOne = false;
5073 keys.forEach(function (key) {
5074 var columnToAdd = _this.getPrimaryColumn(key);
5075 if (!columnToAdd) {
5076 return;
5077 }
5078 if (actionIsAdd) {
5079 if (masterList.indexOf(columnToAdd) >= 0) {
5080 return;
5081 }
5082 masterList.push(columnToAdd);
5083 }
5084 else {
5085 if (masterList.indexOf(columnToAdd) < 0) {
5086 return;
5087 }
5088 Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["removeFromArray"])(masterList, columnToAdd);
5089 }
5090 columnCallback(columnToAdd);
5091 atLeastOne = true;
5092 });
5093 if (!atLeastOne) {
5094 return;
5095 }
5096 if (this.autoGroupsNeedBuilding) {
5097 this.updateGridColumns();
5098 }
5099 this.updateDisplayedColumns(source);
5100 var event = {
5101 type: eventType,
5102 columns: masterList,
5103 column: masterList.length === 1 ? masterList[0] : null,
5104 api: this.gridApi,
5105 columnApi: this.columnApi,
5106 source: source
5107 };
5108 this.eventService.dispatchEvent(event);
5109 };
5110 ColumnModel.prototype.setRowGroupColumns = function (colKeys, source) {
5111 if (source === void 0) { source = "api"; }
5112 this.autoGroupsNeedBuilding = true;
5113 this.setPrimaryColumnList(colKeys, this.rowGroupColumns, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_ROW_GROUP_CHANGED, this.setRowGroupActive.bind(this), source);
5114 };
5115 ColumnModel.prototype.setRowGroupActive = function (active, column, source) {
5116 if (active === column.isRowGroupActive()) {
5117 return;
5118 }
5119 column.setRowGroupActive(active, source);
5120 if (!active && !this.gridOptionsWrapper.isSuppressMakeColumnVisibleAfterUnGroup()) {
5121 column.setVisible(true, source);
5122 }
5123 };
5124 ColumnModel.prototype.addRowGroupColumn = function (key, source) {
5125 if (source === void 0) { source = "api"; }
5126 if (key) {
5127 this.addRowGroupColumns([key], source);
5128 }
5129 };
5130 ColumnModel.prototype.addRowGroupColumns = function (keys, source) {
5131 if (source === void 0) { source = "api"; }
5132 this.autoGroupsNeedBuilding = true;
5133 this.updatePrimaryColumnList(keys, this.rowGroupColumns, true, this.setRowGroupActive.bind(this, true), _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_ROW_GROUP_CHANGED, source);
5134 };
5135 ColumnModel.prototype.removeRowGroupColumns = function (keys, source) {
5136 if (source === void 0) { source = "api"; }
5137 this.autoGroupsNeedBuilding = true;
5138 this.updatePrimaryColumnList(keys, this.rowGroupColumns, false, this.setRowGroupActive.bind(this, false), _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_ROW_GROUP_CHANGED, source);
5139 };
5140 ColumnModel.prototype.removeRowGroupColumn = function (key, source) {
5141 if (source === void 0) { source = "api"; }
5142 if (key) {
5143 this.removeRowGroupColumns([key], source);
5144 }
5145 };
5146 ColumnModel.prototype.addPivotColumns = function (keys, source) {
5147 if (source === void 0) { source = "api"; }
5148 this.updatePrimaryColumnList(keys, this.pivotColumns, true, function (column) { return column.setPivotActive(true, source); }, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_PIVOT_CHANGED, source);
5149 };
5150 ColumnModel.prototype.setPivotColumns = function (colKeys, source) {
5151 if (source === void 0) { source = "api"; }
5152 this.setPrimaryColumnList(colKeys, this.pivotColumns, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_PIVOT_CHANGED, function (added, column) {
5153 column.setPivotActive(added, source);
5154 }, source);
5155 };
5156 ColumnModel.prototype.addPivotColumn = function (key, source) {
5157 if (source === void 0) { source = "api"; }
5158 this.addPivotColumns([key], source);
5159 };
5160 ColumnModel.prototype.removePivotColumns = function (keys, source) {
5161 if (source === void 0) { source = "api"; }
5162 this.updatePrimaryColumnList(keys, this.pivotColumns, false, function (column) { return column.setPivotActive(false, source); }, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_PIVOT_CHANGED, source);
5163 };
5164 ColumnModel.prototype.removePivotColumn = function (key, source) {
5165 if (source === void 0) { source = "api"; }
5166 this.removePivotColumns([key], source);
5167 };
5168 ColumnModel.prototype.setPrimaryColumnList = function (colKeys, masterList, eventName, columnCallback, source) {
5169 var _this = this;
5170 masterList.length = 0;
5171 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(colKeys)) {
5172 colKeys.forEach(function (key) {
5173 var column = _this.getPrimaryColumn(key);
5174 if (column) {
5175 masterList.push(column);
5176 }
5177 });
5178 }
5179 (this.primaryColumns || []).forEach(function (column) {
5180 var added = masterList.indexOf(column) >= 0;
5181 columnCallback(added, column);
5182 });
5183 if (this.autoGroupsNeedBuilding) {
5184 this.updateGridColumns();
5185 }
5186 this.updateDisplayedColumns(source);
5187 this.fireColumnEvent(eventName, masterList, source);
5188 };
5189 ColumnModel.prototype.setValueColumns = function (colKeys, source) {
5190 if (source === void 0) { source = "api"; }
5191 this.setPrimaryColumnList(colKeys, this.valueColumns, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_VALUE_CHANGED, this.setValueActive.bind(this), source);
5192 };
5193 ColumnModel.prototype.setValueActive = function (active, column, source) {
5194 if (active === column.isValueActive()) {
5195 return;
5196 }
5197 column.setValueActive(active, source);
5198 if (active && !column.getAggFunc()) {
5199 var initialAggFunc = this.aggFuncService.getDefaultAggFunc(column);
5200 column.setAggFunc(initialAggFunc);
5201 }
5202 };
5203 ColumnModel.prototype.addValueColumns = function (keys, source) {
5204 if (source === void 0) { source = "api"; }
5205 this.updatePrimaryColumnList(keys, this.valueColumns, true, this.setValueActive.bind(this, true), _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_VALUE_CHANGED, source);
5206 };
5207 ColumnModel.prototype.addValueColumn = function (colKey, source) {
5208 if (source === void 0) { source = "api"; }
5209 if (colKey) {
5210 this.addValueColumns([colKey], source);
5211 }
5212 };
5213 ColumnModel.prototype.removeValueColumn = function (colKey, source) {
5214 if (source === void 0) { source = "api"; }
5215 this.removeValueColumns([colKey], source);
5216 };
5217 ColumnModel.prototype.removeValueColumns = function (keys, source) {
5218 if (source === void 0) { source = "api"; }
5219 this.updatePrimaryColumnList(keys, this.valueColumns, false, this.setValueActive.bind(this, false), _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_VALUE_CHANGED, source);
5220 };
5221 // returns the width we can set to this col, taking into consideration min and max widths
5222 ColumnModel.prototype.normaliseColumnWidth = function (column, newWidth) {
5223 var minWidth = column.getMinWidth();
5224 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(minWidth) && newWidth < minWidth) {
5225 newWidth = minWidth;
5226 }
5227 var maxWidth = column.getMaxWidth();
5228 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(maxWidth) && column.isGreaterThanMax(newWidth)) {
5229 newWidth = maxWidth;
5230 }
5231 return newWidth;
5232 };
5233 ColumnModel.prototype.getPrimaryOrGridColumn = function (key) {
5234 var column = this.getPrimaryColumn(key);
5235 return column || this.getGridColumn(key);
5236 };
5237 ColumnModel.prototype.setColumnWidths = function (columnWidths, shiftKey, // @takeFromAdjacent - if user has 'shift' pressed, then pixels are taken from adjacent column
5238 finished, // @finished - ends up in the event, tells the user if more events are to come
5239 source) {
5240 var _this = this;
5241 if (source === void 0) { source = "api"; }
5242 var sets = [];
5243 columnWidths.forEach(function (columnWidth) {
5244 var col = _this.getPrimaryOrGridColumn(columnWidth.key);
5245 if (!col) {
5246 return;
5247 }
5248 sets.push({
5249 width: columnWidth.newWidth,
5250 ratios: [1],
5251 columns: [col]
5252 });
5253 // if user wants to do shift resize by default, then we invert the shift operation
5254 var defaultIsShift = _this.gridOptionsWrapper.getColResizeDefault() === 'shift';
5255 if (defaultIsShift) {
5256 shiftKey = !shiftKey;
5257 }
5258 if (shiftKey) {
5259 var otherCol = _this.getDisplayedColAfter(col);
5260 if (!otherCol) {
5261 return;
5262 }
5263 var widthDiff = col.getActualWidth() - columnWidth.newWidth;
5264 var otherColWidth = otherCol.getActualWidth() + widthDiff;
5265 sets.push({
5266 width: otherColWidth,
5267 ratios: [1],
5268 columns: [otherCol]
5269 });
5270 }
5271 });
5272 if (sets.length === 0) {
5273 return;
5274 }
5275 this.resizeColumnSets({
5276 resizeSets: sets,
5277 finished: finished,
5278 source: source
5279 });
5280 };
5281 ColumnModel.prototype.checkMinAndMaxWidthsForSet = function (columnResizeSet) {
5282 var columns = columnResizeSet.columns, width = columnResizeSet.width;
5283 // every col has a min width, so sum them all up and see if we have enough room
5284 // for all the min widths
5285 var minWidthAccumulated = 0;
5286 var maxWidthAccumulated = 0;
5287 var maxWidthActive = true;
5288 columns.forEach(function (col) {
5289 var minWidth = col.getMinWidth();
5290 minWidthAccumulated += minWidth || 0;
5291 var maxWidth = col.getMaxWidth();
5292 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(maxWidth) && maxWidth > 0) {
5293 maxWidthAccumulated += maxWidth;
5294 }
5295 else {
5296 // if at least one columns has no max width, it means the group of columns
5297 // then has no max width, as at least one column can take as much width as possible
5298 maxWidthActive = false;
5299 }
5300 });
5301 var minWidthPasses = width >= minWidthAccumulated;
5302 var maxWidthPasses = !maxWidthActive || (width <= maxWidthAccumulated);
5303 return minWidthPasses && maxWidthPasses;
5304 };
5305 // method takes sets of columns and resizes them. either all sets will be resized, or nothing
5306 // be resized. this is used for example when user tries to resize a group and holds shift key,
5307 // then both the current group (grows), and the adjacent group (shrinks), will get resized,
5308 // so that's two sets for this method.
5309 ColumnModel.prototype.resizeColumnSets = function (params) {
5310 var _this = this;
5311 var resizeSets = params.resizeSets, finished = params.finished, source = params.source;
5312 var passMinMaxCheck = !resizeSets || resizeSets.every(function (columnResizeSet) { return _this.checkMinAndMaxWidthsForSet(columnResizeSet); });
5313 if (!passMinMaxCheck) {
5314 // even though we are not going to resize beyond min/max size, we still need to raise event when finished
5315 if (finished) {
5316 var columns = resizeSets && resizeSets.length > 0 ? resizeSets[0].columns : null;
5317 this.fireColumnResizedEvent(columns, finished, source);
5318 }
5319 return; // don't resize!
5320 }
5321 var changedCols = [];
5322 var allResizedCols = [];
5323 resizeSets.forEach(function (set) {
5324 var width = set.width, columns = set.columns, ratios = set.ratios;
5325 // keep track of pixels used, and last column gets the remaining,
5326 // to cater for rounding errors, and min width adjustments
5327 var newWidths = {};
5328 var finishedCols = {};
5329 columns.forEach(function (col) { return allResizedCols.push(col); });
5330 // the loop below goes through each col. if a col exceeds it's min/max width,
5331 // it then gets set to its min/max width and the column is removed marked as 'finished'
5332 // and the calculation is done again leaving this column out. take for example columns
5333 // {A, width: 50, maxWidth: 100}
5334 // {B, width: 50}
5335 // {C, width: 50}
5336 // and then the set is set to width 600 - on the first pass the grid tries to set each column
5337 // to 200. it checks A and sees 200 > 100 and so sets the width to 100. col A is then marked
5338 // as 'finished' and the calculation is done again with the remaining cols B and C, which end up
5339 // splitting the remaining 500 pixels.
5340 var finishedColsGrew = true;
5341 var loopCount = 0;
5342 var _loop_2 = function () {
5343 loopCount++;
5344 if (loopCount > 1000) {
5345 // this should never happen, but in the future, someone might introduce a bug here,
5346 // so we stop the browser from hanging and report bug properly
5347 console.error('AG Grid: infinite loop in resizeColumnSets');
5348 return "break";
5349 }
5350 finishedColsGrew = false;
5351 var subsetCols = [];
5352 var subsetRatioTotal = 0;
5353 var pixelsToDistribute = width;
5354 columns.forEach(function (col, index) {
5355 var thisColFinished = finishedCols[col.getId()];
5356 if (thisColFinished) {
5357 pixelsToDistribute -= newWidths[col.getId()];
5358 }
5359 else {
5360 subsetCols.push(col);
5361 var ratioThisCol = ratios[index];
5362 subsetRatioTotal += ratioThisCol;
5363 }
5364 });
5365 // because we are not using all of the ratios (cols can be missing),
5366 // we scale the ratio. if all columns are included, then subsetRatioTotal=1,
5367 // and so the ratioScale will be 1.
5368 var ratioScale = 1 / subsetRatioTotal;
5369 subsetCols.forEach(function (col, index) {
5370 var lastCol = index === (subsetCols.length - 1);
5371 var colNewWidth;
5372 if (lastCol) {
5373 colNewWidth = pixelsToDistribute;
5374 }
5375 else {
5376 colNewWidth = Math.round(ratios[index] * width * ratioScale);
5377 pixelsToDistribute -= colNewWidth;
5378 }
5379 var minWidth = col.getMinWidth();
5380 var maxWidth = col.getMaxWidth();
5381 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(minWidth) && colNewWidth < minWidth) {
5382 colNewWidth = minWidth;
5383 finishedCols[col.getId()] = true;
5384 finishedColsGrew = true;
5385 }
5386 else if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(maxWidth) && maxWidth > 0 && colNewWidth > maxWidth) {
5387 colNewWidth = maxWidth;
5388 finishedCols[col.getId()] = true;
5389 finishedColsGrew = true;
5390 }
5391 newWidths[col.getId()] = colNewWidth;
5392 });
5393 };
5394 while (finishedColsGrew) {
5395 var state_1 = _loop_2();
5396 if (state_1 === "break")
5397 break;
5398 }
5399 columns.forEach(function (col) {
5400 var newWidth = newWidths[col.getId()];
5401 var actualWidth = col.getActualWidth();
5402 if (actualWidth !== newWidth) {
5403 col.setActualWidth(newWidth, source);
5404 changedCols.push(col);
5405 }
5406 });
5407 });
5408 // if no cols changed, then no need to update more or send event.
5409 var atLeastOneColChanged = changedCols.length > 0;
5410 var flexedCols = [];
5411 if (atLeastOneColChanged) {
5412 flexedCols = this.refreshFlexedColumns({ resizingCols: allResizedCols, skipSetLeft: true });
5413 this.setLeftValues(source);
5414 this.updateBodyWidths();
5415 this.checkViewportColumns();
5416 }
5417 // check for change first, to avoid unnecessary firing of events
5418 // however we always fire 'finished' events. this is important
5419 // when groups are resized, as if the group is changing slowly,
5420 // eg 1 pixel at a time, then each change will fire change events
5421 // in all the columns in the group, but only one with get the pixel.
5422 var colsForEvent = allResizedCols.concat(flexedCols);
5423 if (atLeastOneColChanged || finished) {
5424 this.fireColumnResizedEvent(colsForEvent, finished, source, flexedCols);
5425 }
5426 };
5427 ColumnModel.prototype.setColumnAggFunc = function (key, aggFunc, source) {
5428 if (source === void 0) { source = "api"; }
5429 if (!key) {
5430 return;
5431 }
5432 var column = this.getPrimaryColumn(key);
5433 if (!column) {
5434 return;
5435 }
5436 column.setAggFunc(aggFunc);
5437 this.fireColumnEvent(_events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_VALUE_CHANGED, [column], source);
5438 };
5439 ColumnModel.prototype.fireColumnEvent = function (type, columns, source) {
5440 var event = {
5441 type: type,
5442 columns: columns,
5443 column: (columns && columns.length == 1) ? columns[0] : null,
5444 api: this.gridApi,
5445 columnApi: this.columnApi,
5446 source: source
5447 };
5448 this.eventService.dispatchEvent(event);
5449 };
5450 ColumnModel.prototype.moveRowGroupColumn = function (fromIndex, toIndex, source) {
5451 if (source === void 0) { source = "api"; }
5452 var column = this.rowGroupColumns[fromIndex];
5453 this.rowGroupColumns.splice(fromIndex, 1);
5454 this.rowGroupColumns.splice(toIndex, 0, column);
5455 var event = {
5456 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_ROW_GROUP_CHANGED,
5457 columns: this.rowGroupColumns,
5458 column: this.rowGroupColumns.length === 1 ? this.rowGroupColumns[0] : null,
5459 api: this.gridApi,
5460 columnApi: this.columnApi,
5461 source: source
5462 };
5463 this.eventService.dispatchEvent(event);
5464 };
5465 ColumnModel.prototype.moveColumns = function (columnsToMoveKeys, toIndex, source) {
5466 if (source === void 0) { source = "api"; }
5467 this.columnAnimationService.start();
5468 if (toIndex > this.gridColumns.length - columnsToMoveKeys.length) {
5469 console.warn('AG Grid: tried to insert columns in invalid location, toIndex = ' + toIndex);
5470 console.warn('AG Grid: remember that you should not count the moving columns when calculating the new index');
5471 return;
5472 }
5473 // we want to pull all the columns out first and put them into an ordered list
5474 var columnsToMove = this.getGridColumns(columnsToMoveKeys);
5475 var failedRules = !this.doesMovePassRules(columnsToMove, toIndex);
5476 if (failedRules) {
5477 return;
5478 }
5479 Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["moveInArray"])(this.gridColumns, columnsToMove, toIndex);
5480 this.updateDisplayedColumns(source);
5481 var event = {
5482 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_MOVED,
5483 columns: columnsToMove,
5484 column: columnsToMove.length === 1 ? columnsToMove[0] : null,
5485 toIndex: toIndex,
5486 api: this.gridApi,
5487 columnApi: this.columnApi,
5488 source: source
5489 };
5490 this.eventService.dispatchEvent(event);
5491 this.columnAnimationService.finish();
5492 };
5493 ColumnModel.prototype.doesMovePassRules = function (columnsToMove, toIndex) {
5494 // make a copy of what the grid columns would look like after the move
5495 var proposedColumnOrder = this.gridColumns.slice();
5496 Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["moveInArray"])(proposedColumnOrder, columnsToMove, toIndex);
5497 // then check that the new proposed order of the columns passes all rules
5498 if (!this.doesMovePassMarryChildren(proposedColumnOrder)) {
5499 return false;
5500 }
5501 if (!this.doesMovePassLockedPositions(proposedColumnOrder)) {
5502 return false;
5503 }
5504 return true;
5505 };
5506 // returns the provided cols sorted in same order as they appear in grid columns. eg if grid columns
5507 // contains [a,b,c,d,e] and col passed is [e,a] then the passed cols are sorted into [a,e]
5508 ColumnModel.prototype.sortColumnsLikeGridColumns = function (cols) {
5509 var _this = this;
5510 if (!cols || cols.length <= 1) {
5511 return;
5512 }
5513 var notAllColsInGridColumns = cols.filter(function (c) { return _this.gridColumns.indexOf(c) < 0; }).length > 0;
5514 if (notAllColsInGridColumns) {
5515 return;
5516 }
5517 cols.sort(function (a, b) {
5518 var indexA = _this.gridColumns.indexOf(a);
5519 var indexB = _this.gridColumns.indexOf(b);
5520 return indexA - indexB;
5521 });
5522 };
5523 ColumnModel.prototype.doesMovePassLockedPositions = function (proposedColumnOrder) {
5524 // Placement is a number indicating 'left' 'center' or 'right' as 0 1 2
5525 var lastPlacement = 0;
5526 var rulePassed = true;
5527 var lockPositionToPlacement = function (position) {
5528 if (!position) { // false or undefined
5529 return 1;
5530 }
5531 if (position === true) {
5532 return 0;
5533 }
5534 return position === 'left' ? 0 : 2; // Otherwise 'right'
5535 };
5536 proposedColumnOrder.forEach(function (col) {
5537 var placement = lockPositionToPlacement(col.getColDef().lockPosition);
5538 if (placement < lastPlacement) { // If placement goes down, we're not in the correct order
5539 rulePassed = false;
5540 }
5541 lastPlacement = placement;
5542 });
5543 return rulePassed;
5544 };
5545 ColumnModel.prototype.doesMovePassMarryChildren = function (allColumnsCopy) {
5546 var rulePassed = true;
5547 this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function (child) {
5548 if (!(child instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_4__["ProvidedColumnGroup"])) {
5549 return;
5550 }
5551 var columnGroup = child;
5552 var colGroupDef = columnGroup.getColGroupDef();
5553 var marryChildren = colGroupDef && colGroupDef.marryChildren;
5554 if (!marryChildren) {
5555 return;
5556 }
5557 var newIndexes = [];
5558 columnGroup.getLeafColumns().forEach(function (col) {
5559 var newColIndex = allColumnsCopy.indexOf(col);
5560 newIndexes.push(newColIndex);
5561 });
5562 var maxIndex = Math.max.apply(Math, newIndexes);
5563 var minIndex = Math.min.apply(Math, newIndexes);
5564 // spread is how far the first column in this group is away from the last column
5565 var spread = maxIndex - minIndex;
5566 var maxSpread = columnGroup.getLeafColumns().length - 1;
5567 // if the columns
5568 if (spread > maxSpread) {
5569 rulePassed = false;
5570 }
5571 // console.log(`maxIndex = ${maxIndex}, minIndex = ${minIndex}, spread = ${spread}, maxSpread = ${maxSpread}, fail = ${spread > (count-1)}`)
5572 // console.log(allColumnsCopy.map( col => col.getColDef().field).join(','));
5573 });
5574 return rulePassed;
5575 };
5576 ColumnModel.prototype.moveColumn = function (key, toIndex, source) {
5577 if (source === void 0) { source = "api"; }
5578 this.moveColumns([key], toIndex, source);
5579 };
5580 ColumnModel.prototype.moveColumnByIndex = function (fromIndex, toIndex, source) {
5581 if (source === void 0) { source = "api"; }
5582 var column = this.gridColumns[fromIndex];
5583 this.moveColumn(column, toIndex, source);
5584 };
5585 ColumnModel.prototype.getColumnDefs = function () {
5586 var _this = this;
5587 if (!this.primaryColumns) {
5588 return;
5589 }
5590 var cols = this.primaryColumns.slice();
5591 if (this.gridColsArePrimary) {
5592 cols.sort(function (a, b) { return _this.gridColumns.indexOf(a) - _this.gridColumns.indexOf(b); });
5593 }
5594 else if (this.lastPrimaryOrder) {
5595 cols.sort(function (a, b) { return _this.lastPrimaryOrder.indexOf(a) - _this.lastPrimaryOrder.indexOf(b); });
5596 }
5597 return this.columnDefFactory.buildColumnDefs(cols, this.rowGroupColumns, this.pivotColumns);
5598 };
5599 // used by:
5600 // + angularGrid -> for setting body width
5601 // + rowController -> setting main row widths (when inserting and resizing)
5602 // need to cache this
5603 ColumnModel.prototype.getBodyContainerWidth = function () {
5604 return this.bodyWidth;
5605 };
5606 ColumnModel.prototype.getContainerWidth = function (pinned) {
5607 switch (pinned) {
5608 case _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].PINNED_LEFT:
5609 return this.leftWidth;
5610 case _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].PINNED_RIGHT:
5611 return this.rightWidth;
5612 default:
5613 return this.bodyWidth;
5614 }
5615 };
5616 // after setColumnWidth or updateGroupsAndDisplayedColumns
5617 ColumnModel.prototype.updateBodyWidths = function () {
5618 var newBodyWidth = this.getWidthOfColsInList(this.displayedColumnsCenter);
5619 var newLeftWidth = this.getWidthOfColsInList(this.displayedColumnsLeft);
5620 var newRightWidth = this.getWidthOfColsInList(this.displayedColumnsRight);
5621 // this is used by virtual col calculation, for RTL only, as a change to body width can impact displayed
5622 // columns, due to RTL inverting the y coordinates
5623 this.bodyWidthDirty = this.bodyWidth !== newBodyWidth;
5624 var atLeastOneChanged = this.bodyWidth !== newBodyWidth || this.leftWidth !== newLeftWidth || this.rightWidth !== newRightWidth;
5625 if (atLeastOneChanged) {
5626 this.bodyWidth = newBodyWidth;
5627 this.leftWidth = newLeftWidth;
5628 this.rightWidth = newRightWidth;
5629 // when this fires, it is picked up by the gridPanel, which ends up in
5630 // gridPanel calling setWidthAndScrollPosition(), which in turn calls setViewportPosition()
5631 var event_3 = {
5632 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED,
5633 api: this.gridApi,
5634 columnApi: this.columnApi
5635 };
5636 this.eventService.dispatchEvent(event_3);
5637 }
5638 };
5639 // + rowController
5640 ColumnModel.prototype.getValueColumns = function () {
5641 return this.valueColumns ? this.valueColumns : [];
5642 };
5643 // + rowController
5644 ColumnModel.prototype.getPivotColumns = function () {
5645 return this.pivotColumns ? this.pivotColumns : [];
5646 };
5647 // + clientSideRowModel
5648 ColumnModel.prototype.isPivotActive = function () {
5649 return this.pivotColumns && this.pivotColumns.length > 0 && this.pivotMode;
5650 };
5651 // + toolPanel
5652 ColumnModel.prototype.getRowGroupColumns = function () {
5653 return this.rowGroupColumns ? this.rowGroupColumns : [];
5654 };
5655 // + rowController -> while inserting rows
5656 ColumnModel.prototype.getDisplayedCenterColumns = function () {
5657 return this.displayedColumnsCenter;
5658 };
5659 // + rowController -> while inserting rows
5660 ColumnModel.prototype.getDisplayedLeftColumns = function () {
5661 return this.displayedColumnsLeft;
5662 };
5663 ColumnModel.prototype.getDisplayedRightColumns = function () {
5664 return this.displayedColumnsRight;
5665 };
5666 ColumnModel.prototype.getDisplayedColumns = function (type) {
5667 switch (type) {
5668 case _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].PINNED_LEFT:
5669 return this.getDisplayedLeftColumns();
5670 case _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].PINNED_RIGHT:
5671 return this.getDisplayedRightColumns();
5672 default:
5673 return this.getDisplayedCenterColumns();
5674 }
5675 };
5676 // used by:
5677 // + clientSideRowController -> sorting, building quick filter text
5678 // + headerRenderer -> sorting (clearing icon)
5679 ColumnModel.prototype.getAllPrimaryColumns = function () {
5680 return this.primaryColumns ? this.primaryColumns.slice() : null;
5681 };
5682 ColumnModel.prototype.getSecondaryColumns = function () {
5683 return this.secondaryColumns ? this.secondaryColumns.slice() : null;
5684 };
5685 ColumnModel.prototype.getAllColumnsForQuickFilter = function () {
5686 return this.columnsForQuickFilter;
5687 };
5688 // + moveColumnController
5689 ColumnModel.prototype.getAllGridColumns = function () {
5690 return this.gridColumns;
5691 };
5692 ColumnModel.prototype.isEmpty = function () {
5693 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missingOrEmpty"])(this.gridColumns);
5694 };
5695 ColumnModel.prototype.isRowGroupEmpty = function () {
5696 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missingOrEmpty"])(this.rowGroupColumns);
5697 };
5698 ColumnModel.prototype.setColumnVisible = function (key, visible, source) {
5699 if (source === void 0) { source = "api"; }
5700 this.setColumnsVisible([key], visible, source);
5701 };
5702 ColumnModel.prototype.setColumnsVisible = function (keys, visible, source) {
5703 var _this = this;
5704 if (visible === void 0) { visible = false; }
5705 if (source === void 0) { source = "api"; }
5706 this.columnAnimationService.start();
5707 this.actionOnGridColumns(keys, function (column) {
5708 if (column.isVisible() !== visible) {
5709 column.setVisible(visible, source);
5710 return true;
5711 }
5712 return false;
5713 }, source, function () {
5714 var event = {
5715 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_VISIBLE,
5716 visible: visible,
5717 column: null,
5718 columns: null,
5719 api: _this.gridApi,
5720 columnApi: _this.columnApi,
5721 source: source
5722 };
5723 return event;
5724 });
5725 this.columnAnimationService.finish();
5726 };
5727 ColumnModel.prototype.setColumnPinned = function (key, pinned, source) {
5728 if (source === void 0) { source = "api"; }
5729 if (key) {
5730 this.setColumnsPinned([key], pinned, source);
5731 }
5732 };
5733 ColumnModel.prototype.setColumnsPinned = function (keys, pinned, source) {
5734 var _this = this;
5735 if (source === void 0) { source = "api"; }
5736 if (this.gridOptionsWrapper.getDomLayout() === 'print') {
5737 console.warn("Changing the column pinning status is not allowed with domLayout='print'");
5738 return;
5739 }
5740 this.columnAnimationService.start();
5741 var actualPinned;
5742 if (pinned === true || pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].PINNED_LEFT) {
5743 actualPinned = _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].PINNED_LEFT;
5744 }
5745 else if (pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].PINNED_RIGHT) {
5746 actualPinned = _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].PINNED_RIGHT;
5747 }
5748 else {
5749 actualPinned = null;
5750 }
5751 this.actionOnGridColumns(keys, function (col) {
5752 if (col.getPinned() !== actualPinned) {
5753 col.setPinned(actualPinned);
5754 return true;
5755 }
5756 return false;
5757 }, source, function () {
5758 var event = {
5759 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_PINNED,
5760 pinned: actualPinned,
5761 column: null,
5762 columns: null,
5763 api: _this.gridApi,
5764 columnApi: _this.columnApi,
5765 source: source
5766 };
5767 return event;
5768 });
5769 this.columnAnimationService.finish();
5770 };
5771 // does an action on a set of columns. provides common functionality for looking up the
5772 // columns based on key, getting a list of effected columns, and then updated the event
5773 // with either one column (if it was just one col) or a list of columns
5774 // used by: autoResize, setVisible, setPinned
5775 ColumnModel.prototype.actionOnGridColumns = function (// the column keys this action will be on
5776 keys,
5777 // the action to do - if this returns false, the column was skipped
5778 // and won't be included in the event
5779 action,
5780 // should return back a column event of the right type
5781 source, createEvent) {
5782 var _this = this;
5783 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missingOrEmpty"])(keys)) {
5784 return;
5785 }
5786 var updatedColumns = [];
5787 keys.forEach(function (key) {
5788 var column = _this.getGridColumn(key);
5789 if (!column) {
5790 return;
5791 }
5792 // need to check for false with type (ie !== instead of !=)
5793 // as not returning anything (undefined) would also be false
5794 var resultOfAction = action(column);
5795 if (resultOfAction !== false) {
5796 updatedColumns.push(column);
5797 }
5798 });
5799 if (!updatedColumns.length) {
5800 return;
5801 }
5802 this.updateDisplayedColumns(source);
5803 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(createEvent) && createEvent) {
5804 var event_4 = createEvent();
5805 event_4.columns = updatedColumns;
5806 event_4.column = updatedColumns.length === 1 ? updatedColumns[0] : null;
5807 this.eventService.dispatchEvent(event_4);
5808 }
5809 };
5810 ColumnModel.prototype.getDisplayedColBefore = function (col) {
5811 var allDisplayedColumns = this.getAllDisplayedColumns();
5812 var oldIndex = allDisplayedColumns.indexOf(col);
5813 if (oldIndex > 0) {
5814 return allDisplayedColumns[oldIndex - 1];
5815 }
5816 return null;
5817 };
5818 // used by:
5819 // + rowRenderer -> for navigation
5820 ColumnModel.prototype.getDisplayedColAfter = function (col) {
5821 var allDisplayedColumns = this.getAllDisplayedColumns();
5822 var oldIndex = allDisplayedColumns.indexOf(col);
5823 if (oldIndex < (allDisplayedColumns.length - 1)) {
5824 return allDisplayedColumns[oldIndex + 1];
5825 }
5826 return null;
5827 };
5828 ColumnModel.prototype.getDisplayedGroupAfter = function (columnGroup) {
5829 return this.getDisplayedGroupAtDirection(columnGroup, 'After');
5830 };
5831 ColumnModel.prototype.getDisplayedGroupBefore = function (columnGroup) {
5832 return this.getDisplayedGroupAtDirection(columnGroup, 'Before');
5833 };
5834 ColumnModel.prototype.getDisplayedGroupAtDirection = function (columnGroup, direction) {
5835 // pick the last displayed column in this group
5836 var requiredLevel = columnGroup.getProvidedColumnGroup().getLevel() + columnGroup.getPaddingLevel();
5837 var colGroupLeafColumns = columnGroup.getDisplayedLeafColumns();
5838 var col = direction === 'After' ? Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["last"])(colGroupLeafColumns) : colGroupLeafColumns[0];
5839 var getDisplayColMethod = "getDisplayedCol" + direction;
5840 while (true) {
5841 // keep moving to the next col, until we get to another group
5842 var column = this[getDisplayColMethod](col);
5843 if (!column) {
5844 return null;
5845 }
5846 var groupPointer = this.getColumnGroupAtLevel(column, requiredLevel);
5847 if (groupPointer !== columnGroup) {
5848 return groupPointer;
5849 }
5850 }
5851 };
5852 ColumnModel.prototype.getColumnGroupAtLevel = function (column, level) {
5853 // get group at same level as the one we are looking for
5854 var groupPointer = column.getParent();
5855 var originalGroupLevel;
5856 var groupPointerLevel;
5857 while (true) {
5858 var groupPointerProvidedColumnGroup = groupPointer.getProvidedColumnGroup();
5859 originalGroupLevel = groupPointerProvidedColumnGroup.getLevel();
5860 groupPointerLevel = groupPointer.getPaddingLevel();
5861 if (originalGroupLevel + groupPointerLevel <= level) {
5862 break;
5863 }
5864 groupPointer = groupPointer.getParent();
5865 }
5866 return groupPointer;
5867 };
5868 ColumnModel.prototype.isPinningLeft = function () {
5869 return this.displayedColumnsLeft.length > 0;
5870 };
5871 ColumnModel.prototype.isPinningRight = function () {
5872 return this.displayedColumnsRight.length > 0;
5873 };
5874 ColumnModel.prototype.getPrimaryAndSecondaryAndAutoColumns = function () {
5875 var _a;
5876 return (_a = []).concat.apply(_a, __spread([
5877 this.primaryColumns || [],
5878 this.groupAutoColumns || [],
5879 this.secondaryColumns || [],
5880 ]));
5881 };
5882 ColumnModel.prototype.getPrimaryAndAutoGroupCols = function () {
5883 var _a;
5884 return (_a = []).concat.apply(_a, __spread([
5885 this.primaryColumns || [],
5886 this.groupAutoColumns || [],
5887 ]));
5888 };
5889 ColumnModel.prototype.getPrimaryAndSecondaryColumns = function () {
5890 var _a;
5891 return (_a = []).concat.apply(_a, __spread([
5892 this.primaryColumns || [],
5893 this.secondaryColumns || [],
5894 ]));
5895 };
5896 ColumnModel.prototype.createStateItemFromColumn = function (column) {
5897 var rowGroupIndex = column.isRowGroupActive() ? this.rowGroupColumns.indexOf(column) : null;
5898 var pivotIndex = column.isPivotActive() ? this.pivotColumns.indexOf(column) : null;
5899 var aggFunc = column.isValueActive() ? column.getAggFunc() : null;
5900 var sort = column.getSort() != null ? column.getSort() : null;
5901 var sortIndex = column.getSortIndex() != null ? column.getSortIndex() : null;
5902 var flex = column.getFlex() != null && column.getFlex() > 0 ? column.getFlex() : null;
5903 var res = {
5904 colId: column.getColId(),
5905 width: column.getActualWidth(),
5906 hide: !column.isVisible(),
5907 pinned: column.getPinned(),
5908 sort: sort,
5909 sortIndex: sortIndex,
5910 aggFunc: aggFunc,
5911 rowGroup: column.isRowGroupActive(),
5912 rowGroupIndex: rowGroupIndex,
5913 pivot: column.isPivotActive(),
5914 pivotIndex: pivotIndex,
5915 flex: flex
5916 };
5917 return res;
5918 };
5919 ColumnModel.prototype.getColumnState = function () {
5920 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(this.primaryColumns) || !this.isAlive()) {
5921 return [];
5922 }
5923 var colsForState = this.getPrimaryAndSecondaryAndAutoColumns();
5924 var res = colsForState.map(this.createStateItemFromColumn.bind(this));
5925 this.orderColumnStateList(res);
5926 return res;
5927 };
5928 ColumnModel.prototype.orderColumnStateList = function (columnStateList) {
5929 // for fast looking, store the index of each column
5930 var colIdToGridIndexMap = Object(_utils_map__WEBPACK_IMPORTED_MODULE_11__["convertToMap"])(this.gridColumns.map(function (col, index) { return [col.getColId(), index]; }));
5931 columnStateList.sort(function (itemA, itemB) {
5932 var posA = colIdToGridIndexMap.has(itemA.colId) ? colIdToGridIndexMap.get(itemA.colId) : -1;
5933 var posB = colIdToGridIndexMap.has(itemB.colId) ? colIdToGridIndexMap.get(itemB.colId) : -1;
5934 return posA - posB;
5935 });
5936 };
5937 ColumnModel.prototype.resetColumnState = function (source) {
5938 // NOTE = there is one bug here that no customer has noticed - if a column has colDef.lockPosition,
5939 // this is ignored below when ordering the cols. to work, we should always put lockPosition cols first.
5940 // As a work around, developers should just put lockPosition columns first in their colDef list.
5941 if (source === void 0) { source = "api"; }
5942 // we can't use 'allColumns' as the order might of messed up, so get the primary ordered list
5943 var primaryColumns = this.getColumnsFromTree(this.primaryColumnTree);
5944 var columnStates = [];
5945 // we start at 1000, so if user has mix of rowGroup and group specified, it will work with both.
5946 // eg IF user has ColA.rowGroupIndex=0, ColB.rowGroupIndex=1, ColC.rowGroup=true,
5947 // THEN result will be ColA.rowGroupIndex=0, ColB.rowGroupIndex=1, ColC.rowGroup=1000
5948 var letRowGroupIndex = 1000;
5949 var letPivotIndex = 1000;
5950 var colsToProcess = [];
5951 if (this.groupAutoColumns) {
5952 colsToProcess = colsToProcess.concat(this.groupAutoColumns);
5953 }
5954 if (primaryColumns) {
5955 colsToProcess = colsToProcess.concat(primaryColumns);
5956 }
5957 colsToProcess.forEach(function (column) {
5958 var getValueOrNull = function (a, b) { return a != null ? a : b != null ? b : null; };
5959 var colDef = column.getColDef();
5960 var sort = getValueOrNull(colDef.sort, colDef.initialSort);
5961 var sortIndex = getValueOrNull(colDef.sortIndex, colDef.initialSortIndex);
5962 var hide = getValueOrNull(colDef.hide, colDef.initialHide);
5963 var pinned = getValueOrNull(colDef.pinned, colDef.initialPinned);
5964 var width = getValueOrNull(colDef.width, colDef.initialWidth);
5965 var flex = getValueOrNull(colDef.flex, colDef.initialFlex);
5966 var rowGroupIndex = getValueOrNull(colDef.rowGroupIndex, colDef.initialRowGroupIndex);
5967 var rowGroup = getValueOrNull(colDef.rowGroup, colDef.initialRowGroup);
5968 if (rowGroupIndex == null && (rowGroup == null || rowGroup == false)) {
5969 rowGroupIndex = null;
5970 rowGroup = null;
5971 }
5972 var pivotIndex = getValueOrNull(colDef.pivotIndex, colDef.initialPivotIndex);
5973 var pivot = getValueOrNull(colDef.pivot, colDef.initialPivot);
5974 if (pivotIndex == null && (pivot == null || pivot == false)) {
5975 pivotIndex = null;
5976 pivot = null;
5977 }
5978 var aggFunc = getValueOrNull(colDef.aggFunc, colDef.initialAggFunc);
5979 var stateItem = {
5980 colId: column.getColId(),
5981 sort: sort,
5982 sortIndex: sortIndex,
5983 hide: hide,
5984 pinned: pinned,
5985 width: width,
5986 flex: flex,
5987 rowGroup: rowGroup,
5988 rowGroupIndex: rowGroupIndex,
5989 pivot: pivot,
5990 pivotIndex: pivotIndex,
5991 aggFunc: aggFunc,
5992 };
5993 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(rowGroupIndex) && rowGroup) {
5994 stateItem.rowGroupIndex = letRowGroupIndex++;
5995 }
5996 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(pivotIndex) && pivot) {
5997 stateItem.pivotIndex = letPivotIndex++;
5998 }
5999 columnStates.push(stateItem);
6000 });
6001 this.applyColumnState({ state: columnStates, applyOrder: true }, source);
6002 };
6003 ColumnModel.prototype.applyColumnState = function (params, source) {
6004 var _this = this;
6005 if (source === void 0) { source = "api"; }
6006 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missingOrEmpty"])(this.primaryColumns)) {
6007 return false;
6008 }
6009 if (params && params.state && !params.state.forEach) {
6010 console.warn('AG Grid: applyColumnState() - the state attribute should be an array, however an array was not found. Please provide an array of items (one for each col you want to change) for state.');
6011 return false;
6012 }
6013 var applyStates = function (states, existingColumns, getById) {
6014 var raiseEventsFunc = _this.compareColumnStatesAndRaiseEvents(source);
6015 _this.autoGroupsNeedBuilding = true;
6016 // at the end below, this list will have all columns we got no state for
6017 var columnsWithNoState = existingColumns.slice();
6018 var rowGroupIndexes = {};
6019 var pivotIndexes = {};
6020 var autoGroupColumnStates = [];
6021 // If pivoting is modified, these are the states we try to reapply after
6022 // the secondary columns are re-generated
6023 var unmatchedAndAutoStates = [];
6024 var unmatchedCount = 0;
6025 var previousRowGroupCols = _this.rowGroupColumns.slice();
6026 var previousPivotCols = _this.pivotColumns.slice();
6027 states.forEach(function (state) {
6028 var colId = state.colId || '';
6029 // auto group columns are re-created so deferring syncing with ColumnState
6030 var isAutoGroupColumn = colId.startsWith(_constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].GROUP_AUTO_COLUMN_ID);
6031 if (isAutoGroupColumn) {
6032 autoGroupColumnStates.push(state);
6033 unmatchedAndAutoStates.push(state);
6034 return;
6035 }
6036 var column = getById(colId);
6037 if (!column) {
6038 unmatchedAndAutoStates.push(state);
6039 unmatchedCount += 1;
6040 }
6041 else {
6042 _this.syncColumnWithStateItem(column, state, params.defaultState, rowGroupIndexes, pivotIndexes, false, source);
6043 Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["removeFromArray"])(columnsWithNoState, column);
6044 }
6045 });
6046 // anything left over, we got no data for, so add in the column as non-value, non-rowGroup and hidden
6047 var applyDefaultsFunc = function (col) {
6048 return _this.syncColumnWithStateItem(col, null, params.defaultState, rowGroupIndexes, pivotIndexes, false, source);
6049 };
6050 columnsWithNoState.forEach(applyDefaultsFunc);
6051 // sort the lists according to the indexes that were provided
6052 var comparator = function (indexes, oldList, colA, colB) {
6053 var indexA = indexes[colA.getId()];
6054 var indexB = indexes[colB.getId()];
6055 var aHasIndex = indexA != null;
6056 var bHasIndex = indexB != null;
6057 if (aHasIndex && bHasIndex) {
6058 // both a and b are new cols with index, so sort on index
6059 return indexA - indexB;
6060 }
6061 if (aHasIndex) {
6062 // a has an index, so it should be before a
6063 return -1;
6064 }
6065 if (bHasIndex) {
6066 // b has an index, so it should be before a
6067 return 1;
6068 }
6069 var oldIndexA = oldList.indexOf(colA);
6070 var oldIndexB = oldList.indexOf(colB);
6071 var aHasOldIndex = oldIndexA >= 0;
6072 var bHasOldIndex = oldIndexB >= 0;
6073 if (aHasOldIndex && bHasOldIndex) {
6074 // both a and b are old cols, so sort based on last order
6075 return oldIndexA - oldIndexB;
6076 }
6077 if (aHasOldIndex) {
6078 // a is old, b is new, so b is first
6079 return -1;
6080 }
6081 // this bit does matter, means both are new cols
6082 // but without index or that b is old and a is new
6083 return 1;
6084 };
6085 _this.rowGroupColumns.sort(comparator.bind(_this, rowGroupIndexes, previousRowGroupCols));
6086 _this.pivotColumns.sort(comparator.bind(_this, pivotIndexes, previousPivotCols));
6087 _this.updateGridColumns();
6088 // sync newly created auto group columns with ColumnState
6089 var autoGroupColsCopy = _this.groupAutoColumns ? _this.groupAutoColumns.slice() : [];
6090 autoGroupColumnStates.forEach(function (stateItem) {
6091 var autoCol = _this.getAutoColumn(stateItem.colId);
6092 Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["removeFromArray"])(autoGroupColsCopy, autoCol);
6093 _this.syncColumnWithStateItem(autoCol, stateItem, params.defaultState, null, null, true, source);
6094 });
6095 // autogroup cols with nothing else, apply the default
6096 autoGroupColsCopy.forEach(applyDefaultsFunc);
6097 _this.applyOrderAfterApplyState(params);
6098 _this.updateDisplayedColumns(source);
6099 _this.dispatchEverythingChanged(source);
6100 raiseEventsFunc(); // Will trigger secondary column changes if pivoting modified
6101 return { unmatchedAndAutoStates: unmatchedAndAutoStates, unmatchedCount: unmatchedCount };
6102 };
6103 this.columnAnimationService.start();
6104 var _a = applyStates(params.state || [], this.primaryColumns || [], function (id) { return _this.getPrimaryColumn(id); }), unmatchedAndAutoStates = _a.unmatchedAndAutoStates, unmatchedCount = _a.unmatchedCount;
6105 // If there are still states left over, see if we can apply them to newly generated
6106 // secondary or auto columns. Also if defaults exist, ensure they are applied to secondary cols
6107 if (unmatchedAndAutoStates.length > 0 || Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(params.defaultState)) {
6108 unmatchedCount = applyStates(unmatchedAndAutoStates, this.secondaryColumns || [], function (id) { return _this.getSecondaryColumn(id); }).unmatchedCount;
6109 }
6110 this.columnAnimationService.finish();
6111 return unmatchedCount === 0; // Successful if no states unaccounted for
6112 };
6113 ColumnModel.prototype.applyOrderAfterApplyState = function (params) {
6114 var _this = this;
6115 if (!params.applyOrder || !params.state) {
6116 return;
6117 }
6118 var newOrder = [];
6119 var processedColIds = {};
6120 params.state.forEach(function (item) {
6121 if (!item.colId || processedColIds[item.colId]) {
6122 return;
6123 }
6124 var col = _this.gridColumnsMap[item.colId];
6125 if (col) {
6126 newOrder.push(col);
6127 processedColIds[item.colId] = true;
6128 }
6129 });
6130 // add in all other columns
6131 var autoGroupInsertIndex = 0;
6132 this.gridColumns.forEach(function (col) {
6133 var colId = col.getColId();
6134 var alreadyProcessed = processedColIds[colId] != null;
6135 if (alreadyProcessed) {
6136 return;
6137 }
6138 var isAutoGroupCol = colId.startsWith(_constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].GROUP_AUTO_COLUMN_ID);
6139 if (isAutoGroupCol) {
6140 // auto group columns, if missing from state list, are added to the start.
6141 // it's common to have autoGroup missing, as grouping could be on by default
6142 // on a column, but the user could of since removed the grouping via the UI.
6143 // if we don't inc the insert index, autoGroups will be inserted in reverse order
6144 Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["insertIntoArray"])(newOrder, col, autoGroupInsertIndex++);
6145 }
6146 else {
6147 // normal columns, if missing from state list, are added at the end
6148 newOrder.push(col);
6149 }
6150 });
6151 // this is already done in updateGridColumns, however we changed the order above (to match the order of the state
6152 // columns) so we need to do it again. we could of put logic into the order above to take into account fixed
6153 // columns, however if we did then we would have logic for updating fixed columns twice. reusing the logic here
6154 // is less sexy for the code here, but it keeps consistency.
6155 newOrder = this.placeLockedColumns(newOrder);
6156 if (!this.doesMovePassMarryChildren(newOrder)) {
6157 console.warn('AG Grid: Applying column order broke a group where columns should be married together. Applying new order has been discarded.');
6158 return;
6159 }
6160 this.gridColumns = newOrder;
6161 };
6162 ColumnModel.prototype.compareColumnStatesAndRaiseEvents = function (source) {
6163 var _this = this;
6164 var startState = {
6165 rowGroupColumns: this.rowGroupColumns.slice(),
6166 pivotColumns: this.pivotColumns.slice(),
6167 valueColumns: this.valueColumns.slice()
6168 };
6169 var columnStateBefore = this.getColumnState();
6170 var columnStateBeforeMap = {};
6171 columnStateBefore.forEach(function (col) {
6172 columnStateBeforeMap[col.colId] = col;
6173 });
6174 return function () {
6175 if (_this.gridOptionsWrapper.isSuppressColumnStateEvents()) {
6176 return;
6177 }
6178 var colsForState = _this.getPrimaryAndSecondaryAndAutoColumns();
6179 // raises generic ColumnEvents where all columns are returned rather than what has changed
6180 var raiseWhenListsDifferent = function (eventType, colsBefore, colsAfter, idMapper) {
6181 var beforeList = colsBefore.map(idMapper);
6182 var afterList = colsAfter.map(idMapper);
6183 var unchanged = Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["areEqual"])(beforeList, afterList);
6184 if (unchanged) {
6185 return;
6186 }
6187 // returning all columns rather than what has changed!
6188 var event = {
6189 type: eventType,
6190 columns: colsAfter,
6191 column: colsAfter.length === 1 ? colsAfter[0] : null,
6192 api: _this.gridApi,
6193 columnApi: _this.columnApi,
6194 source: source
6195 };
6196 _this.eventService.dispatchEvent(event);
6197 };
6198 // determines which columns have changed according to supplied predicate
6199 var getChangedColumns = function (changedPredicate) {
6200 var changedColumns = [];
6201 colsForState.forEach(function (column) {
6202 var colStateBefore = columnStateBeforeMap[column.getColId()];
6203 if (colStateBefore && changedPredicate(colStateBefore, column)) {
6204 changedColumns.push(column);
6205 }
6206 });
6207 return changedColumns;
6208 };
6209 var columnIdMapper = function (c) { return c.getColId(); };
6210 raiseWhenListsDifferent(_events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_ROW_GROUP_CHANGED, startState.rowGroupColumns, _this.rowGroupColumns, columnIdMapper);
6211 raiseWhenListsDifferent(_events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_PIVOT_CHANGED, startState.pivotColumns, _this.pivotColumns, columnIdMapper);
6212 var valueChangePredicate = function (cs, c) {
6213 var oldActive = cs.aggFunc != null;
6214 var activeChanged = oldActive != c.isValueActive();
6215 // we only check aggFunc if the agg is active
6216 var aggFuncChanged = oldActive && cs.aggFunc != c.getAggFunc();
6217 return activeChanged || aggFuncChanged;
6218 };
6219 var changedValues = getChangedColumns(valueChangePredicate);
6220 if (changedValues.length > 0) {
6221 // we pass all value columns, now the ones that changed. this is the same
6222 // as pivot and rowGroup cols, but different to all other properties below.
6223 // this is more for backwards compatibility, as it's always been this way.
6224 // really it should be the other way, as the order of the cols makes no difference
6225 // for valueColumns (apart from displaying them in the tool panel).
6226 _this.fireColumnEvent(_events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_VALUE_CHANGED, _this.valueColumns, source);
6227 }
6228 var resizeChangePredicate = function (cs, c) { return cs.width != c.getActualWidth(); };
6229 _this.fireColumnResizedEvent(getChangedColumns(resizeChangePredicate), true, source);
6230 var pinnedChangePredicate = function (cs, c) { return cs.pinned != c.getPinned(); };
6231 _this.raiseColumnPinnedEvent(getChangedColumns(pinnedChangePredicate), source);
6232 var visibilityChangePredicate = function (cs, c) { return cs.hide == c.isVisible(); };
6233 _this.raiseColumnVisibleEvent(getChangedColumns(visibilityChangePredicate), source);
6234 var sortChangePredicate = function (cs, c) { return cs.sort != c.getSort() || cs.sortIndex != c.getSortIndex(); };
6235 if (getChangedColumns(sortChangePredicate).length > 0) {
6236 _this.sortController.dispatchSortChangedEvents(source);
6237 }
6238 // special handling for moved column events
6239 _this.raiseColumnMovedEvent(columnStateBefore, source);
6240 };
6241 };
6242 ColumnModel.prototype.raiseColumnPinnedEvent = function (changedColumns, source) {
6243 if (!changedColumns.length) {
6244 return;
6245 }
6246 // if just one column, we use this, otherwise we don't include the col
6247 var column = changedColumns.length === 1 ? changedColumns[0] : null;
6248 // only include visible if it's common in all columns
6249 var pinned = this.getCommonValue(changedColumns, function (col) { return col.getPinned(); });
6250 var event = {
6251 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_PINNED,
6252 // mistake in typing, 'undefined' should be allowed, as 'null' means 'not pinned'
6253 pinned: pinned != null ? pinned : null,
6254 columns: changedColumns,
6255 column: column,
6256 api: this.gridApi,
6257 columnApi: this.columnApi,
6258 source: source
6259 };
6260 this.eventService.dispatchEvent(event);
6261 };
6262 ColumnModel.prototype.getCommonValue = function (cols, valueGetter) {
6263 if (!cols || cols.length == 0) {
6264 return undefined;
6265 }
6266 // compare each value to the first value. if nothing differs, then value is common so return it.
6267 var firstValue = valueGetter(cols[0]);
6268 for (var i = 1; i < cols.length; i++) {
6269 if (firstValue !== valueGetter(cols[i])) {
6270 // values differ, no common value
6271 return undefined;
6272 }
6273 }
6274 return firstValue;
6275 };
6276 ColumnModel.prototype.raiseColumnVisibleEvent = function (changedColumns, source) {
6277 if (!changedColumns.length) {
6278 return;
6279 }
6280 // if just one column, we use this, otherwise we don't include the col
6281 var column = changedColumns.length === 1 ? changedColumns[0] : null;
6282 // only include visible if it's common in all columns
6283 var visible = this.getCommonValue(changedColumns, function (col) { return col.isVisible(); });
6284 var event = {
6285 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_VISIBLE,
6286 visible: visible,
6287 columns: changedColumns,
6288 column: column,
6289 api: this.gridApi,
6290 columnApi: this.columnApi,
6291 source: source
6292 };
6293 this.eventService.dispatchEvent(event);
6294 };
6295 ColumnModel.prototype.raiseColumnMovedEvent = function (colStateBefore, source) {
6296 // we are only interested in columns that were both present and visible before and after
6297 var _this = this;
6298 var colStateAfter = this.getColumnState();
6299 var colStateAfterMapped = {};
6300 colStateAfter.forEach(function (s) { return colStateAfterMapped[s.colId] = s; });
6301 // get id's of cols in both before and after lists
6302 var colsIntersectIds = {};
6303 colStateBefore.forEach(function (s) {
6304 if (colStateAfterMapped[s.colId]) {
6305 colsIntersectIds[s.colId] = true;
6306 }
6307 });
6308 // filter state lists, so we only have cols that were present before and after
6309 var beforeFiltered = colStateBefore.filter(function (c) { return colsIntersectIds[c.colId]; });
6310 var afterFiltered = colStateAfter.filter(function (c) { return colsIntersectIds[c.colId]; });
6311 // see if any cols are in a different location
6312 var movedColumns = [];
6313 afterFiltered.forEach(function (csAfter, index) {
6314 var csBefore = beforeFiltered && beforeFiltered[index];
6315 if (csBefore && csBefore.colId !== csAfter.colId) {
6316 var gridCol = _this.getGridColumn(csBefore.colId);
6317 if (gridCol) {
6318 movedColumns.push(gridCol);
6319 }
6320 }
6321 });
6322 if (!movedColumns.length) {
6323 return;
6324 }
6325 var event = {
6326 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_MOVED,
6327 columns: movedColumns,
6328 column: null,
6329 api: this.gridApi,
6330 columnApi: this.columnApi,
6331 source: source
6332 };
6333 this.eventService.dispatchEvent(event);
6334 };
6335 ColumnModel.prototype.syncColumnWithStateItem = function (column, stateItem, defaultState, rowGroupIndexes, pivotIndexes, autoCol, source) {
6336 if (!column) {
6337 return;
6338 }
6339 var getValue = function (key1, key2) {
6340 var obj = { value1: undefined, value2: undefined };
6341 var calculated = false;
6342 if (stateItem) {
6343 if (stateItem[key1] !== undefined) {
6344 obj.value1 = stateItem[key1];
6345 calculated = true;
6346 }
6347 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(key2) && stateItem[key2] !== undefined) {
6348 obj.value2 = stateItem[key2];
6349 calculated = true;
6350 }
6351 }
6352 if (!calculated && defaultState) {
6353 if (defaultState[key1] !== undefined) {
6354 obj.value1 = defaultState[key1];
6355 }
6356 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(key2) && defaultState[key2] !== undefined) {
6357 obj.value2 = defaultState[key2];
6358 }
6359 }
6360 return obj;
6361 };
6362 // following ensures we are left with boolean true or false, eg converts (null, undefined, 0) all to true
6363 var hide = getValue('hide').value1;
6364 if (hide !== undefined) {
6365 column.setVisible(!hide, source);
6366 }
6367 // sets pinned to 'left' or 'right'
6368 var pinned = getValue('pinned').value1;
6369 if (pinned !== undefined) {
6370 column.setPinned(pinned);
6371 }
6372 // if width provided and valid, use it, otherwise stick with the old width
6373 var minColWidth = this.columnUtils.calculateColMinWidth(column.getColDef());
6374 // flex
6375 var flex = getValue('flex').value1;
6376 if (flex !== undefined) {
6377 column.setFlex(flex);
6378 }
6379 // width - we only set width if column is not flexing
6380 var noFlexThisCol = column.getFlex() <= 0;
6381 if (noFlexThisCol) {
6382 // both null and undefined means we skip, as it's not possible to 'clear' width (a column must have a width)
6383 var width = getValue('width').value1;
6384 if (width != null) {
6385 if (minColWidth != null && width >= minColWidth) {
6386 column.setActualWidth(width, source);
6387 }
6388 }
6389 }
6390 var sort = getValue('sort').value1;
6391 if (sort !== undefined) {
6392 if (sort === _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].SORT_DESC || sort === _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].SORT_ASC) {
6393 column.setSort(sort, source);
6394 }
6395 else {
6396 column.setSort(undefined, source);
6397 }
6398 }
6399 var sortIndex = getValue('sortIndex').value1;
6400 if (sortIndex !== undefined) {
6401 column.setSortIndex(sortIndex);
6402 }
6403 // we do not do aggFunc, rowGroup or pivot for auto cols or secondary cols
6404 if (autoCol || !column.isPrimary()) {
6405 return;
6406 }
6407 var aggFunc = getValue('aggFunc').value1;
6408 if (aggFunc !== undefined) {
6409 if (typeof aggFunc === 'string') {
6410 column.setAggFunc(aggFunc);
6411 if (!column.isValueActive()) {
6412 column.setValueActive(true, source);
6413 this.valueColumns.push(column);
6414 }
6415 }
6416 else {
6417 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(aggFunc)) {
6418 console.warn('AG Grid: stateItem.aggFunc must be a string. if using your own aggregation ' +
6419 'functions, register the functions first before using them in get/set state. This is because it is ' +
6420 'intended for the column state to be stored and retrieved as simple JSON.');
6421 }
6422 // Note: we do not call column.setAggFunc(null), so that next time we aggregate
6423 // by this column (eg drag the column to the agg section int he toolpanel) it will
6424 // default to the last aggregation function.
6425 if (column.isValueActive()) {
6426 column.setValueActive(false, source);
6427 Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["removeFromArray"])(this.valueColumns, column);
6428 }
6429 }
6430 }
6431 var _a = getValue('rowGroup', 'rowGroupIndex'), rowGroup = _a.value1, rowGroupIndex = _a.value2;
6432 if (rowGroup !== undefined || rowGroupIndex !== undefined) {
6433 if (typeof rowGroupIndex === 'number' || rowGroup) {
6434 if (!column.isRowGroupActive()) {
6435 column.setRowGroupActive(true, source);
6436 this.rowGroupColumns.push(column);
6437 }
6438 if (rowGroupIndexes && typeof rowGroupIndex === 'number') {
6439 rowGroupIndexes[column.getId()] = rowGroupIndex;
6440 }
6441 }
6442 else {
6443 if (column.isRowGroupActive()) {
6444 column.setRowGroupActive(false, source);
6445 Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["removeFromArray"])(this.rowGroupColumns, column);
6446 }
6447 }
6448 }
6449 var _b = getValue('pivot', 'pivotIndex'), pivot = _b.value1, pivotIndex = _b.value2;
6450 if (pivot !== undefined || pivotIndex !== undefined) {
6451 if (typeof pivotIndex === 'number' || pivot) {
6452 if (!column.isPivotActive()) {
6453 column.setPivotActive(true, source);
6454 this.pivotColumns.push(column);
6455 }
6456 if (pivotIndexes && typeof pivotIndex === 'number') {
6457 pivotIndexes[column.getId()] = pivotIndex;
6458 }
6459 }
6460 else {
6461 if (column.isPivotActive()) {
6462 column.setPivotActive(false, source);
6463 Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["removeFromArray"])(this.pivotColumns, column);
6464 }
6465 }
6466 }
6467 };
6468 ColumnModel.prototype.getGridColumns = function (keys) {
6469 return this.getColumns(keys, this.getGridColumn.bind(this));
6470 };
6471 ColumnModel.prototype.getColumns = function (keys, columnLookupCallback) {
6472 var foundColumns = [];
6473 if (keys) {
6474 keys.forEach(function (key) {
6475 var column = columnLookupCallback(key);
6476 if (column) {
6477 foundColumns.push(column);
6478 }
6479 });
6480 }
6481 return foundColumns;
6482 };
6483 // used by growGroupPanel
6484 ColumnModel.prototype.getColumnWithValidation = function (key) {
6485 if (key == null) {
6486 return null;
6487 }
6488 var column = this.getGridColumn(key);
6489 if (!column) {
6490 console.warn('AG Grid: could not find column ' + key);
6491 }
6492 return column;
6493 };
6494 ColumnModel.prototype.getPrimaryColumn = function (key) {
6495 if (!this.primaryColumns) {
6496 return null;
6497 }
6498 return this.getColumn(key, this.primaryColumns, this.primaryColumnsMap);
6499 };
6500 ColumnModel.prototype.getGridColumn = function (key) {
6501 return this.getColumn(key, this.gridColumns, this.gridColumnsMap);
6502 };
6503 ColumnModel.prototype.getSecondaryColumn = function (key) {
6504 if (!this.secondaryColumns) {
6505 return null;
6506 }
6507 return this.getColumn(key, this.secondaryColumns, this.secondaryColumnsMap);
6508 };
6509 ColumnModel.prototype.getColumn = function (key, columnList, columnMap) {
6510 if (!key) {
6511 return null;
6512 }
6513 // most of the time this method gets called the key is a string, so we put this shortcut in
6514 // for performance reasons, to see if we can match for ID (it doesn't do auto columns, that's done below)
6515 if (typeof key == 'string' && columnMap[key]) {
6516 return columnMap[key];
6517 }
6518 for (var i = 0; i < columnList.length; i++) {
6519 if (this.columnsMatch(columnList[i], key)) {
6520 return columnList[i];
6521 }
6522 }
6523 return this.getAutoColumn(key);
6524 };
6525 ColumnModel.prototype.getAutoColumn = function (key) {
6526 var _this = this;
6527 if (!this.groupAutoColumns ||
6528 !Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(this.groupAutoColumns) ||
6529 Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(this.groupAutoColumns)) {
6530 return null;
6531 }
6532 return this.groupAutoColumns.find(function (groupCol) { return _this.columnsMatch(groupCol, key); }) || null;
6533 };
6534 ColumnModel.prototype.columnsMatch = function (column, key) {
6535 var columnMatches = column === key;
6536 var colDefMatches = column.getColDef() === key;
6537 var idMatches = column.getColId() == key;
6538 return columnMatches || colDefMatches || idMatches;
6539 };
6540 ColumnModel.prototype.getDisplayNameForColumn = function (column, location, includeAggFunc) {
6541 if (includeAggFunc === void 0) { includeAggFunc = false; }
6542 if (!column) {
6543 return null;
6544 }
6545 var headerName = this.getHeaderName(column.getColDef(), column, null, null, location);
6546 if (includeAggFunc) {
6547 return this.wrapHeaderNameWithAggFunc(column, headerName);
6548 }
6549 return headerName;
6550 };
6551 ColumnModel.prototype.getDisplayNameForProvidedColumnGroup = function (columnGroup, providedColumnGroup, location) {
6552 var colGroupDef = providedColumnGroup ? providedColumnGroup.getColGroupDef() : null;
6553 if (colGroupDef) {
6554 return this.getHeaderName(colGroupDef, null, columnGroup, providedColumnGroup, location);
6555 }
6556 return null;
6557 };
6558 ColumnModel.prototype.getDisplayNameForColumnGroup = function (columnGroup, location) {
6559 return this.getDisplayNameForProvidedColumnGroup(columnGroup, columnGroup.getProvidedColumnGroup(), location);
6560 };
6561 // location is where the column is going to appear, ie who is calling us
6562 ColumnModel.prototype.getHeaderName = function (colDef, column, columnGroup, providedColumnGroup, location) {
6563 var headerValueGetter = colDef.headerValueGetter;
6564 if (headerValueGetter) {
6565 var params = {
6566 colDef: colDef,
6567 column: column,
6568 columnGroup: columnGroup,
6569 providedColumnGroup: providedColumnGroup,
6570 location: location,
6571 api: this.gridOptionsWrapper.getApi(),
6572 columnApi: this.gridOptionsWrapper.getColumnApi(),
6573 context: this.gridOptionsWrapper.getContext()
6574 };
6575 if (typeof headerValueGetter === 'function') {
6576 // valueGetter is a function, so just call it
6577 return headerValueGetter(params);
6578 }
6579 else if (typeof headerValueGetter === 'string') {
6580 // valueGetter is an expression, so execute the expression
6581 return this.expressionService.evaluate(headerValueGetter, params);
6582 }
6583 console.warn('ag-grid: headerValueGetter must be a function or a string');
6584 return '';
6585 }
6586 else if (colDef.headerName != null) {
6587 return colDef.headerName;
6588 }
6589 else if (colDef.field) {
6590 return Object(_utils_string__WEBPACK_IMPORTED_MODULE_10__["camelCaseToHumanText"])(colDef.field);
6591 }
6592 return '';
6593 };
6594 ColumnModel.prototype.wrapHeaderNameWithAggFunc = function (column, headerName) {
6595 if (this.gridOptionsWrapper.isSuppressAggFuncInHeader()) {
6596 return headerName;
6597 }
6598 // only columns with aggregation active can have aggregations
6599 var pivotValueColumn = column.getColDef().pivotValueColumn;
6600 var pivotActiveOnThisColumn = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(pivotValueColumn);
6601 var aggFunc = null;
6602 var aggFuncFound;
6603 // otherwise we have a measure that is active, and we are doing aggregation on it
6604 if (pivotActiveOnThisColumn) {
6605 var isCollapsedHeaderEnabled = this.gridOptionsWrapper.isRemovePivotHeaderRowWhenSingleValueColumn() && this.valueColumns.length === 1;
6606 var isTotalColumn = column.getColDef().pivotTotalColumnIds !== undefined;
6607 if (isCollapsedHeaderEnabled && !isTotalColumn) {
6608 return headerName; // Skip decorating the header - in this case the label is the pivot key, not the value col
6609 }
6610 aggFunc = pivotValueColumn ? pivotValueColumn.getAggFunc() : null;
6611 aggFuncFound = true;
6612 }
6613 else {
6614 var measureActive = column.isValueActive();
6615 var aggregationPresent = this.pivotMode || !this.isRowGroupEmpty();
6616 if (measureActive && aggregationPresent) {
6617 aggFunc = column.getAggFunc();
6618 aggFuncFound = true;
6619 }
6620 else {
6621 aggFuncFound = false;
6622 }
6623 }
6624 if (aggFuncFound) {
6625 var aggFuncString = (typeof aggFunc === 'string') ? aggFunc : 'func';
6626 var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();
6627 var aggFuncStringTranslated = localeTextFunc(aggFuncString, aggFuncString);
6628 return aggFuncStringTranslated + "(" + headerName + ")";
6629 }
6630 return headerName;
6631 };
6632 // returns the group with matching colId and instanceId. If instanceId is missing,
6633 // matches only on the colId.
6634 ColumnModel.prototype.getColumnGroup = function (colId, instanceId) {
6635 if (!colId) {
6636 return null;
6637 }
6638 if (colId instanceof _entities_columnGroup__WEBPACK_IMPORTED_MODULE_0__["ColumnGroup"]) {
6639 return colId;
6640 }
6641 var allColumnGroups = this.getAllDisplayedTrees();
6642 var checkInstanceId = typeof instanceId === 'number';
6643 var result = null;
6644 this.columnUtils.depthFirstAllColumnTreeSearch(allColumnGroups, function (child) {
6645 if (child instanceof _entities_columnGroup__WEBPACK_IMPORTED_MODULE_0__["ColumnGroup"]) {
6646 var columnGroup = child;
6647 var matched = void 0;
6648 if (checkInstanceId) {
6649 matched = colId === columnGroup.getGroupId() && instanceId === columnGroup.getInstanceId();
6650 }
6651 else {
6652 matched = colId === columnGroup.getGroupId();
6653 }
6654 if (matched) {
6655 result = columnGroup;
6656 }
6657 }
6658 });
6659 return result;
6660 };
6661 ColumnModel.prototype.isReady = function () {
6662 return this.ready;
6663 };
6664 ColumnModel.prototype.extractValueColumns = function (source, oldPrimaryColumns) {
6665 this.valueColumns = this.extractColumns(oldPrimaryColumns, this.valueColumns, function (col, flag) { return col.setValueActive(flag, source); },
6666 // aggFunc doesn't have index variant, cos order of value cols doesn't matter, so always return null
6667 function () { return undefined; }, function () { return undefined; },
6668 // aggFunc is a string, so return it's existence
6669 function (colDef) {
6670 var aggFunc = colDef.aggFunc;
6671 // null or empty string means clear
6672 if (aggFunc === null || aggFunc === '') {
6673 return null;
6674 }
6675 if (aggFunc === undefined) {
6676 return;
6677 }
6678 return !!aggFunc;
6679 }, function (colDef) {
6680 // return false if any of the following: null, undefined, empty string
6681 return colDef.initialAggFunc != null && colDef.initialAggFunc != '';
6682 });
6683 // all new columns added will have aggFunc missing, so set it to what is in the colDef
6684 this.valueColumns.forEach(function (col) {
6685 var colDef = col.getColDef();
6686 // if aggFunc provided, we always override, as reactive property
6687 if (colDef.aggFunc != null && colDef.aggFunc != '') {
6688 col.setAggFunc(colDef.aggFunc);
6689 }
6690 else {
6691 // otherwise we use initialAggFunc only if no agg func set - which happens when new column only
6692 if (!col.getAggFunc()) {
6693 col.setAggFunc(colDef.initialAggFunc);
6694 }
6695 }
6696 });
6697 };
6698 ColumnModel.prototype.extractRowGroupColumns = function (source, oldPrimaryColumns) {
6699 this.rowGroupColumns = this.extractColumns(oldPrimaryColumns, this.rowGroupColumns, function (col, flag) { return col.setRowGroupActive(flag, source); }, function (colDef) { return colDef.rowGroupIndex; }, function (colDef) { return colDef.initialRowGroupIndex; }, function (colDef) { return colDef.rowGroup; }, function (colDef) { return colDef.initialRowGroup; });
6700 };
6701 ColumnModel.prototype.extractColumns = function (oldPrimaryColumns, previousCols, setFlagFunc, getIndexFunc, getInitialIndexFunc, getValueFunc, getInitialValueFunc) {
6702 if (oldPrimaryColumns === void 0) { oldPrimaryColumns = []; }
6703 if (previousCols === void 0) { previousCols = []; }
6704 var colsWithIndex = [];
6705 var colsWithValue = [];
6706 // go though all cols.
6707 // if value, change
6708 // if default only, change only if new
6709 (this.primaryColumns || []).forEach(function (col) {
6710 var colIsNew = oldPrimaryColumns.indexOf(col) < 0;
6711 var colDef = col.getColDef();
6712 var value = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["attrToBoolean"])(getValueFunc(colDef));
6713 var initialValue = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["attrToBoolean"])(getInitialValueFunc(colDef));
6714 var index = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["attrToNumber"])(getIndexFunc(colDef));
6715 var initialIndex = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["attrToNumber"])(getInitialIndexFunc(colDef));
6716 var include;
6717 var valuePresent = value !== undefined;
6718 var indexPresent = index !== undefined;
6719 var initialValuePresent = initialValue !== undefined;
6720 var initialIndexPresent = initialIndex !== undefined;
6721 if (valuePresent) {
6722 include = value; // boolean value is guaranteed as attrToBoolean() is used above
6723 }
6724 else if (indexPresent) {
6725 if (index === null) {
6726 // if col is new we don't want to use the default / initial if index is set to null. Similarly,
6727 // we don't want to include the property for existing columns, i.e. we want to 'clear' it.
6728 include = false;
6729 }
6730 else {
6731 // note that 'null >= 0' evaluates to true which means 'rowGroupIndex = null' would enable row
6732 // grouping if the null check didn't exist above.
6733 include = index >= 0;
6734 }
6735 }
6736 else {
6737 if (colIsNew) {
6738 // as no value or index is 'present' we use the default / initial when col is new
6739 if (initialValuePresent) {
6740 include = initialValue;
6741 }
6742 else if (initialIndexPresent) {
6743 include = initialIndex != null && initialIndex >= 0;
6744 }
6745 else {
6746 include = false;
6747 }
6748 }
6749 else {
6750 // otherwise include it if included last time, e.g. if we are extracting row group cols and this col
6751 // is an existing row group col (i.e. it exists in 'previousCols') then we should include it.
6752 include = previousCols.indexOf(col) >= 0;
6753 }
6754 }
6755 if (include) {
6756 var useIndex = colIsNew ? (index != null || initialIndex != null) : index != null;
6757 useIndex ? colsWithIndex.push(col) : colsWithValue.push(col);
6758 }
6759 });
6760 var getIndexForCol = function (col) {
6761 var index = getIndexFunc(col.getColDef());
6762 var defaultIndex = getInitialIndexFunc(col.getColDef());
6763 return index != null ? index : defaultIndex;
6764 };
6765 // sort cols with index, and add these first
6766 colsWithIndex.sort(function (colA, colB) {
6767 var indexA = getIndexForCol(colA);
6768 var indexB = getIndexForCol(colB);
6769 if (indexA === indexB) {
6770 return 0;
6771 }
6772 if (indexA < indexB) {
6773 return -1;
6774 }
6775 return 1;
6776 });
6777 var res = [].concat(colsWithIndex);
6778 // second add columns that were there before and in the same order as they were before,
6779 // so we are preserving order of current grouping of columns that simply have rowGroup=true
6780 previousCols.forEach(function (col) {
6781 if (colsWithValue.indexOf(col) >= 0) {
6782 res.push(col);
6783 }
6784 });
6785 // lastly put in all remaining cols
6786 colsWithValue.forEach(function (col) {
6787 if (res.indexOf(col) < 0) {
6788 res.push(col);
6789 }
6790 });
6791 // set flag=false for removed cols
6792 previousCols.forEach(function (col) {
6793 if (res.indexOf(col) < 0) {
6794 setFlagFunc(col, false);
6795 }
6796 });
6797 // set flag=true for newly added cols
6798 res.forEach(function (col) {
6799 if (previousCols.indexOf(col) < 0) {
6800 setFlagFunc(col, true);
6801 }
6802 });
6803 return res;
6804 };
6805 ColumnModel.prototype.extractPivotColumns = function (source, oldPrimaryColumns) {
6806 this.pivotColumns = this.extractColumns(oldPrimaryColumns, this.pivotColumns, function (col, flag) { return col.setPivotActive(flag, source); }, function (colDef) { return colDef.pivotIndex; }, function (colDef) { return colDef.initialPivotIndex; }, function (colDef) { return colDef.pivot; }, function (colDef) { return colDef.initialPivot; });
6807 };
6808 ColumnModel.prototype.resetColumnGroupState = function (source) {
6809 if (source === void 0) { source = "api"; }
6810 var stateItems = [];
6811 this.columnUtils.depthFirstOriginalTreeSearch(null, this.primaryColumnTree, function (child) {
6812 if (child instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_4__["ProvidedColumnGroup"]) {
6813 var colGroupDef = child.getColGroupDef();
6814 var groupState = {
6815 groupId: child.getGroupId(),
6816 open: !colGroupDef ? undefined : colGroupDef.openByDefault
6817 };
6818 stateItems.push(groupState);
6819 }
6820 });
6821 this.setColumnGroupState(stateItems, source);
6822 };
6823 ColumnModel.prototype.getColumnGroupState = function () {
6824 var columnGroupState = [];
6825 this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function (node) {
6826 if (node instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_4__["ProvidedColumnGroup"]) {
6827 columnGroupState.push({
6828 groupId: node.getGroupId(),
6829 open: node.isExpanded()
6830 });
6831 }
6832 });
6833 return columnGroupState;
6834 };
6835 ColumnModel.prototype.setColumnGroupState = function (stateItems, source) {
6836 var _this = this;
6837 if (source === void 0) { source = "api"; }
6838 this.columnAnimationService.start();
6839 var impactedGroups = [];
6840 stateItems.forEach(function (stateItem) {
6841 var groupKey = stateItem.groupId;
6842 var newValue = stateItem.open;
6843 var providedColumnGroup = _this.getProvidedColumnGroup(groupKey);
6844 if (!providedColumnGroup) {
6845 return;
6846 }
6847 if (providedColumnGroup.isExpanded() === newValue) {
6848 return;
6849 }
6850 _this.logger.log('columnGroupOpened(' + providedColumnGroup.getGroupId() + ',' + newValue + ')');
6851 providedColumnGroup.setExpanded(newValue);
6852 impactedGroups.push(providedColumnGroup);
6853 });
6854 this.updateGroupsAndDisplayedColumns(source);
6855 this.setFirstRightAndLastLeftPinned(source);
6856 impactedGroups.forEach(function (providedColumnGroup) {
6857 var event = {
6858 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_GROUP_OPENED,
6859 columnGroup: providedColumnGroup,
6860 api: _this.gridApi,
6861 columnApi: _this.columnApi
6862 };
6863 _this.eventService.dispatchEvent(event);
6864 });
6865 this.columnAnimationService.finish();
6866 };
6867 // called by headerRenderer - when a header is opened or closed
6868 ColumnModel.prototype.setColumnGroupOpened = function (key, newValue, source) {
6869 if (source === void 0) { source = "api"; }
6870 var keyAsString;
6871 if (key instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_4__["ProvidedColumnGroup"]) {
6872 keyAsString = key.getId();
6873 }
6874 else {
6875 keyAsString = key || '';
6876 }
6877 this.setColumnGroupState([{ groupId: keyAsString, open: newValue }], source);
6878 };
6879 ColumnModel.prototype.getProvidedColumnGroup = function (key) {
6880 // if (key instanceof ProvidedColumnGroup) { return key; }
6881 if (typeof key !== 'string') {
6882 console.error('AG Grid: group key must be a string');
6883 }
6884 // otherwise, search for the column group by id
6885 var res = null;
6886 this.columnUtils.depthFirstOriginalTreeSearch(null, this.gridBalancedTree, function (node) {
6887 if (node instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_4__["ProvidedColumnGroup"]) {
6888 if (node.getId() === key) {
6889 res = node;
6890 }
6891 }
6892 });
6893 return res;
6894 };
6895 ColumnModel.prototype.calculateColumnsForDisplay = function () {
6896 var _this = this;
6897 var columnsForDisplay;
6898 if (this.pivotMode && Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(this.secondaryColumns)) {
6899 // pivot mode is on, but we are not pivoting, so we only
6900 // show columns we are aggregating on
6901 columnsForDisplay = this.gridColumns.filter(function (column) {
6902 var isAutoGroupCol = _this.groupAutoColumns && Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["includes"])(_this.groupAutoColumns, column);
6903 var isValueCol = _this.valueColumns && Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["includes"])(_this.valueColumns, column);
6904 return isAutoGroupCol || isValueCol;
6905 });
6906 }
6907 else {
6908 // otherwise continue as normal. this can be working on the primary
6909 // or secondary columns, whatever the gridColumns are set to
6910 columnsForDisplay = this.gridColumns.filter(function (column) {
6911 // keep col if a) it's auto-group or b) it's visible
6912 var isAutoGroupCol = _this.groupAutoColumns && Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["includes"])(_this.groupAutoColumns, column);
6913 return isAutoGroupCol || column.isVisible();
6914 });
6915 }
6916 return columnsForDisplay;
6917 };
6918 ColumnModel.prototype.checkColSpanActiveInCols = function (columns) {
6919 var result = false;
6920 columns.forEach(function (col) {
6921 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(col.getColDef().colSpan)) {
6922 result = true;
6923 }
6924 });
6925 return result;
6926 };
6927 ColumnModel.prototype.calculateColumnsForGroupDisplay = function () {
6928 var _this = this;
6929 this.groupDisplayColumns = [];
6930 var checkFunc = function (col) {
6931 var colDef = col.getColDef();
6932 if (colDef && Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(colDef.showRowGroup)) {
6933 _this.groupDisplayColumns.push(col);
6934 }
6935 };
6936 this.gridColumns.forEach(checkFunc);
6937 if (this.groupAutoColumns) {
6938 this.groupAutoColumns.forEach(checkFunc);
6939 }
6940 };
6941 ColumnModel.prototype.getGroupDisplayColumns = function () {
6942 return this.groupDisplayColumns;
6943 };
6944 ColumnModel.prototype.updateDisplayedColumns = function (source) {
6945 var columnsForDisplay = this.calculateColumnsForDisplay();
6946 this.buildDisplayedTrees(columnsForDisplay);
6947 this.calculateColumnsForGroupDisplay();
6948 // also called when group opened/closed
6949 this.updateGroupsAndDisplayedColumns(source);
6950 // also called when group opened/closed
6951 this.setFirstRightAndLastLeftPinned(source);
6952 };
6953 ColumnModel.prototype.isSecondaryColumnsPresent = function () {
6954 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(this.secondaryColumns);
6955 };
6956 ColumnModel.prototype.setSecondaryColumns = function (colDefs, source) {
6957 var _this = this;
6958 if (source === void 0) { source = "api"; }
6959 var newColsPresent = colDefs && colDefs.length > 0;
6960 // if not cols passed, and we had no cols anyway, then do nothing
6961 if (!newColsPresent && Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(this.secondaryColumns)) {
6962 return;
6963 }
6964 if (newColsPresent) {
6965 this.processSecondaryColumnDefinitions(colDefs);
6966 var balancedTreeResult = this.columnFactory.createColumnTree(colDefs, false, this.secondaryBalancedTree || this.previousSecondaryColumns || undefined);
6967 this.secondaryBalancedTree = balancedTreeResult.columnTree;
6968 this.secondaryHeaderRowCount = balancedTreeResult.treeDept + 1;
6969 this.secondaryColumns = this.getColumnsFromTree(this.secondaryBalancedTree);
6970 this.secondaryColumnsMap = {};
6971 this.secondaryColumns.forEach(function (col) { return _this.secondaryColumnsMap[col.getId()] = col; });
6972 this.previousSecondaryColumns = null;
6973 }
6974 else {
6975 this.previousSecondaryColumns = this.secondaryBalancedTree;
6976 this.secondaryBalancedTree = null;
6977 this.secondaryHeaderRowCount = -1;
6978 this.secondaryColumns = null;
6979 this.secondaryColumnsMap = {};
6980 }
6981 this.updateGridColumns();
6982 this.updateDisplayedColumns(source);
6983 };
6984 ColumnModel.prototype.processSecondaryColumnDefinitions = function (colDefs) {
6985 var columnCallback = this.gridOptionsWrapper.getProcessSecondaryColDefFunc();
6986 var groupCallback = this.gridOptionsWrapper.getProcessSecondaryColGroupDefFunc();
6987 if (!columnCallback && !groupCallback) {
6988 return undefined;
6989 }
6990 var searchForColDefs = function (colDefs2) {
6991 colDefs2.forEach(function (abstractColDef) {
6992 var isGroup = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(abstractColDef.children);
6993 if (isGroup) {
6994 var colGroupDef = abstractColDef;
6995 if (groupCallback) {
6996 groupCallback(colGroupDef);
6997 }
6998 searchForColDefs(colGroupDef.children);
6999 }
7000 else {
7001 var colDef = abstractColDef;
7002 if (columnCallback) {
7003 columnCallback(colDef);
7004 }
7005 }
7006 });
7007 };
7008 if (colDefs) {
7009 searchForColDefs(colDefs);
7010 }
7011 };
7012 // called from: setColumnState, setColumnDefs, setSecondaryColumns
7013 ColumnModel.prototype.updateGridColumns = function () {
7014 var _this = this;
7015 if (this.gridColsArePrimary) {
7016 this.lastPrimaryOrder = this.gridColumns;
7017 }
7018 else {
7019 this.lastSecondaryOrder = this.gridColumns;
7020 }
7021 if (this.secondaryColumns && this.secondaryBalancedTree) {
7022 var hasSameColumns = this.secondaryColumns.every(function (col) {
7023 return _this.gridColumnsMap[col.getColId()] !== undefined;
7024 });
7025 this.gridBalancedTree = this.secondaryBalancedTree.slice();
7026 this.gridHeaderRowCount = this.secondaryHeaderRowCount;
7027 this.gridColumns = this.secondaryColumns.slice();
7028 this.gridColsArePrimary = false;
7029 // If the current columns are the same or a subset of the previous
7030 // we keep the previous order, otherwise we go back to the order the pivot
7031 // cols are generated in
7032 if (hasSameColumns) {
7033 this.orderGridColsLike(this.lastSecondaryOrder);
7034 }
7035 }
7036 else if (this.primaryColumns) {
7037 this.gridBalancedTree = this.primaryColumnTree.slice();
7038 this.gridHeaderRowCount = this.primaryHeaderRowCount;
7039 this.gridColumns = this.primaryColumns.slice();
7040 this.gridColsArePrimary = true;
7041 // updateGridColumns gets called after user adds a row group. we want to maintain the order of the columns
7042 // when this happens (eg if user moved a column) rather than revert back to the original column order.
7043 // likewise if changing in/out of pivot mode, we want to maintain the order of the cols
7044 this.orderGridColsLike(this.lastPrimaryOrder);
7045 }
7046 this.addAutoGroupToGridColumns();
7047 this.gridColumns = this.placeLockedColumns(this.gridColumns);
7048 this.setupQuickFilterColumns();
7049 this.clearDisplayedAndViewportColumns();
7050 this.colSpanActive = this.checkColSpanActiveInCols(this.gridColumns);
7051 this.gridColumnsMap = {};
7052 this.gridColumns.forEach(function (col) { return _this.gridColumnsMap[col.getId()] = col; });
7053 this.setAutoHeightActive();
7054 var event = {
7055 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_GRID_COLUMNS_CHANGED,
7056 api: this.gridApi,
7057 columnApi: this.columnApi
7058 };
7059 this.eventService.dispatchEvent(event);
7060 };
7061 ColumnModel.prototype.setAutoHeightActive = function () {
7062 this.autoHeightActive = this.gridColumns.filter(function (col) { return col.isAutoHeight(); }).length > 0;
7063 if (this.autoHeightActive) {
7064 this.autoHeightActiveAtLeastOnce = true;
7065 var rowModelType = this.rowModel.getType();
7066 var supportedRowModel = rowModelType === _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE || rowModelType === _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].ROW_MODEL_TYPE_SERVER_SIDE;
7067 if (!supportedRowModel) {
7068 var message_1 = 'AG Grid - autoHeight columns only work with Client Side Row Model and Server Side Row Model.';
7069 Object(_utils_function__WEBPACK_IMPORTED_MODULE_12__["doOnce"])(function () { return console.warn(message_1); }, 'autoHeightActive.wrongRowModel');
7070 }
7071 }
7072 };
7073 ColumnModel.prototype.orderGridColsLike = function (colsOrder) {
7074 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(colsOrder)) {
7075 return;
7076 }
7077 var lastOrderMapped = Object(_utils_map__WEBPACK_IMPORTED_MODULE_11__["convertToMap"])(colsOrder.map(function (col, index) { return [col, index]; }));
7078 // only do the sort if at least one column is accounted for. columns will be not accounted for
7079 // if changing from secondary to primary columns
7080 var noColsFound = true;
7081 this.gridColumns.forEach(function (col) {
7082 if (lastOrderMapped.has(col)) {
7083 noColsFound = false;
7084 }
7085 });
7086 if (noColsFound) {
7087 return;
7088 }
7089 // order cols in the same order as before. we need to make sure that all
7090 // cols still exists, so filter out any that no longer exist.
7091 var gridColsMap = Object(_utils_map__WEBPACK_IMPORTED_MODULE_11__["convertToMap"])(this.gridColumns.map(function (col) { return [col, true]; }));
7092 var oldColsOrdered = colsOrder.filter(function (col) { return gridColsMap.has(col); });
7093 var oldColsMap = Object(_utils_map__WEBPACK_IMPORTED_MODULE_11__["convertToMap"])(oldColsOrdered.map(function (col) { return [col, true]; }));
7094 var newColsOrdered = this.gridColumns.filter(function (col) { return !oldColsMap.has(col); });
7095 // add in the new columns, at the end (if no group), or at the end of the group (if a group)
7096 var newGridColumns = oldColsOrdered.slice();
7097 newColsOrdered.forEach(function (newCol) {
7098 var parent = newCol.getOriginalParent();
7099 // if no parent, means we are not grouping, so just add the column to the end
7100 if (!parent) {
7101 newGridColumns.push(newCol);
7102 return;
7103 }
7104 // find the group the column belongs to. if no siblings at the current level (eg col in group on it's
7105 // own) then go up one level and look for siblings there.
7106 var siblings = [];
7107 while (!siblings.length && parent) {
7108 var leafCols = parent.getLeafColumns();
7109 leafCols.forEach(function (leafCol) {
7110 var presentInNewGriColumns = newGridColumns.indexOf(leafCol) >= 0;
7111 var noYetInSiblings = siblings.indexOf(leafCol) < 0;
7112 if (presentInNewGriColumns && noYetInSiblings) {
7113 siblings.push(leafCol);
7114 }
7115 });
7116 parent = parent.getOriginalParent();
7117 }
7118 // if no siblings exist at any level, this means the col is in a group (or parent groups) on it's own
7119 if (!siblings.length) {
7120 newGridColumns.push(newCol);
7121 return;
7122 }
7123 // find index of last column in the group
7124 var indexes = siblings.map(function (col) { return newGridColumns.indexOf(col); });
7125 var lastIndex = Math.max.apply(Math, __spread(indexes));
7126 Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["insertIntoArray"])(newGridColumns, newCol, lastIndex + 1);
7127 });
7128 this.gridColumns = newGridColumns;
7129 };
7130 ColumnModel.prototype.isPrimaryColumnGroupsPresent = function () {
7131 return this.primaryHeaderRowCount > 1;
7132 };
7133 // if we are using autoGroupCols, then they should be included for quick filter. this covers the
7134 // following scenarios:
7135 // a) user provides 'field' into autoGroupCol of normal grid, so now because a valid col to filter leafs on
7136 // b) using tree data and user depends on autoGroupCol for first col, and we also want to filter on this
7137 // (tree data is a bit different, as parent rows can be filtered on, unlike row grouping)
7138 ColumnModel.prototype.setupQuickFilterColumns = function () {
7139 if (this.groupAutoColumns) {
7140 this.columnsForQuickFilter = (this.primaryColumns || []).concat(this.groupAutoColumns);
7141 }
7142 else if (this.primaryColumns) {
7143 this.columnsForQuickFilter = this.primaryColumns;
7144 }
7145 };
7146 ColumnModel.prototype.placeLockedColumns = function (cols) {
7147 var left = [];
7148 var normal = [];
7149 var right = [];
7150 cols.forEach(function (col) {
7151 var position = col.getColDef().lockPosition;
7152 if (position === 'right') {
7153 right.push(col);
7154 }
7155 else if (position === 'left' || position === true) {
7156 left.push(col);
7157 }
7158 else {
7159 normal.push(col);
7160 }
7161 });
7162 return __spread(left, normal, right);
7163 };
7164 ColumnModel.prototype.addAutoGroupToGridColumns = function () {
7165 // add in auto-group here
7166 this.createGroupAutoColumnsIfNeeded();
7167 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(this.groupAutoColumns)) {
7168 return;
7169 }
7170 this.gridColumns = this.groupAutoColumns ? this.groupAutoColumns.concat(this.gridColumns) : this.gridColumns;
7171 var autoColBalancedTree = this.columnFactory.createForAutoGroups(this.groupAutoColumns, this.gridBalancedTree);
7172 this.gridBalancedTree = autoColBalancedTree.concat(this.gridBalancedTree);
7173 };
7174 // gets called after we copy down grid columns, to make sure any part of the gui
7175 // that tries to draw, eg the header, it will get empty lists of columns rather
7176 // than stale columns. for example, the header will received gridColumnsChanged
7177 // event, so will try and draw, but it will draw successfully when it acts on the
7178 // virtualColumnsChanged event
7179 ColumnModel.prototype.clearDisplayedAndViewportColumns = function () {
7180 this.displayedTreeLeft = [];
7181 this.displayedTreeRight = [];
7182 this.displayedTreeCentre = [];
7183 this.viewportRowLeft = {};
7184 this.viewportRowRight = {};
7185 this.viewportRowCenter = {};
7186 this.displayedColumnsLeft = [];
7187 this.displayedColumnsRight = [];
7188 this.displayedColumnsCenter = [];
7189 this.displayedColumns = [];
7190 this.viewportColumns = [];
7191 };
7192 ColumnModel.prototype.updateGroupsAndDisplayedColumns = function (source) {
7193 this.updateOpenClosedVisibilityInColumnGroups();
7194 this.deriveDisplayedColumns(source);
7195 this.refreshFlexedColumns();
7196 this.extractViewport();
7197 this.updateBodyWidths();
7198 // this event is picked up by the gui, headerRenderer and rowRenderer, to recalculate what columns to display
7199 var event = {
7200 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED,
7201 api: this.gridApi,
7202 columnApi: this.columnApi
7203 };
7204 this.eventService.dispatchEvent(event);
7205 };
7206 ColumnModel.prototype.deriveDisplayedColumns = function (source) {
7207 this.derivedDisplayedColumnsFromDisplayedTree(this.displayedTreeLeft, this.displayedColumnsLeft);
7208 this.derivedDisplayedColumnsFromDisplayedTree(this.displayedTreeCentre, this.displayedColumnsCenter);
7209 this.derivedDisplayedColumnsFromDisplayedTree(this.displayedTreeRight, this.displayedColumnsRight);
7210 this.joinDisplayedColumns();
7211 this.setLeftValues(source);
7212 this.displayedAutoHeightCols = this.displayedColumns.filter(function (col) { return col.isAutoHeight(); });
7213 };
7214 ColumnModel.prototype.isAutoRowHeightActive = function () {
7215 return this.autoHeightActive;
7216 };
7217 ColumnModel.prototype.wasAutoRowHeightEverActive = function () {
7218 return this.autoHeightActiveAtLeastOnce;
7219 };
7220 ColumnModel.prototype.joinDisplayedColumns = function () {
7221 if (this.gridOptionsWrapper.isEnableRtl()) {
7222 this.displayedColumns = this.displayedColumnsRight
7223 .concat(this.displayedColumnsCenter)
7224 .concat(this.displayedColumnsLeft);
7225 }
7226 else {
7227 this.displayedColumns = this.displayedColumnsLeft
7228 .concat(this.displayedColumnsCenter)
7229 .concat(this.displayedColumnsRight);
7230 }
7231 };
7232 // sets the left pixel position of each column
7233 ColumnModel.prototype.setLeftValues = function (source) {
7234 this.setLeftValuesOfColumns(source);
7235 this.setLeftValuesOfGroups();
7236 };
7237 ColumnModel.prototype.setLeftValuesOfColumns = function (source) {
7238 var _this = this;
7239 if (!this.primaryColumns) {
7240 return;
7241 }
7242 // go through each list of displayed columns
7243 var allColumns = this.primaryColumns.slice(0);
7244 // let totalColumnWidth = this.getWidthOfColsInList()
7245 var doingRtl = this.gridOptionsWrapper.isEnableRtl();
7246 [
7247 this.displayedColumnsLeft,
7248 this.displayedColumnsRight,
7249 this.displayedColumnsCenter
7250 ].forEach(function (columns) {
7251 if (doingRtl) {
7252 // when doing RTL, we start at the top most pixel (ie RHS) and work backwards
7253 var left_1 = _this.getWidthOfColsInList(columns);
7254 columns.forEach(function (column) {
7255 left_1 -= column.getActualWidth();
7256 column.setLeft(left_1, source);
7257 });
7258 }
7259 else {
7260 // otherwise normal LTR, we start at zero
7261 var left_2 = 0;
7262 columns.forEach(function (column) {
7263 column.setLeft(left_2, source);
7264 left_2 += column.getActualWidth();
7265 });
7266 }
7267 Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["removeAllFromArray"])(allColumns, columns);
7268 });
7269 // items left in allColumns are columns not displayed, so remove the left position. this is
7270 // important for the rows, as if a col is made visible, then taken out, then made visible again,
7271 // we don't want the animation of the cell floating in from the old position, whatever that was.
7272 allColumns.forEach(function (column) {
7273 column.setLeft(null, source);
7274 });
7275 };
7276 ColumnModel.prototype.setLeftValuesOfGroups = function () {
7277 // a groups left value is the lest left value of it's children
7278 [
7279 this.displayedTreeLeft,
7280 this.displayedTreeRight,
7281 this.displayedTreeCentre
7282 ].forEach(function (columns) {
7283 columns.forEach(function (column) {
7284 if (column instanceof _entities_columnGroup__WEBPACK_IMPORTED_MODULE_0__["ColumnGroup"]) {
7285 var columnGroup = column;
7286 columnGroup.checkLeft();
7287 }
7288 });
7289 });
7290 };
7291 ColumnModel.prototype.derivedDisplayedColumnsFromDisplayedTree = function (tree, columns) {
7292 columns.length = 0;
7293 this.columnUtils.depthFirstDisplayedColumnTreeSearch(tree, function (child) {
7294 if (child instanceof _entities_column__WEBPACK_IMPORTED_MODULE_1__["Column"]) {
7295 columns.push(child);
7296 }
7297 });
7298 };
7299 ColumnModel.prototype.extractViewportColumns = function () {
7300 if (this.suppressColumnVirtualisation) {
7301 // no virtualisation, so don't filter
7302 this.viewportColumnsCenter = this.displayedColumnsCenter;
7303 }
7304 else {
7305 // filter out what should be visible
7306 this.viewportColumnsCenter = this.filterOutColumnsWithinViewport();
7307 }
7308 this.viewportColumns = this.viewportColumnsCenter
7309 .concat(this.displayedColumnsLeft)
7310 .concat(this.displayedColumnsRight);
7311 };
7312 ColumnModel.prototype.getVirtualHeaderGroupRow = function (type, dept) {
7313 var result;
7314 switch (type) {
7315 case _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].PINNED_LEFT:
7316 result = this.viewportRowLeft[dept];
7317 break;
7318 case _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].PINNED_RIGHT:
7319 result = this.viewportRowRight[dept];
7320 break;
7321 default:
7322 result = this.viewportRowCenter[dept];
7323 break;
7324 }
7325 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(result)) {
7326 result = [];
7327 }
7328 return result;
7329 };
7330 ColumnModel.prototype.extractViewportRows = function () {
7331 // go through each group, see if any of it's cols are displayed, and if yes,
7332 // then this group is included
7333 this.viewportRowLeft = {};
7334 this.viewportRowRight = {};
7335 this.viewportRowCenter = {};
7336 // for easy lookup when building the groups.
7337 var virtualColIds = {};
7338 this.viewportColumns.forEach(function (col) { return virtualColIds[col.getId()] = true; });
7339 var testGroup = function (children, result, dept) {
7340 var returnValue = false;
7341 for (var i = 0; i < children.length; i++) {
7342 // see if this item is within viewport
7343 var child = children[i];
7344 var addThisItem = false;
7345 if (child instanceof _entities_column__WEBPACK_IMPORTED_MODULE_1__["Column"]) {
7346 // for column, test if column is included
7347 addThisItem = virtualColIds[child.getId()] === true;
7348 }
7349 else {
7350 // if group, base decision on children
7351 var columnGroup = child;
7352 var displayedChildren = columnGroup.getDisplayedChildren();
7353 if (displayedChildren) {
7354 addThisItem = testGroup(displayedChildren, result, dept + 1);
7355 }
7356 }
7357 if (addThisItem) {
7358 returnValue = true;
7359 if (!result[dept]) {
7360 result[dept] = [];
7361 }
7362 result[dept].push(child);
7363 }
7364 }
7365 return returnValue;
7366 };
7367 testGroup(this.displayedTreeLeft, this.viewportRowLeft, 0);
7368 testGroup(this.displayedTreeRight, this.viewportRowRight, 0);
7369 testGroup(this.displayedTreeCentre, this.viewportRowCenter, 0);
7370 };
7371 ColumnModel.prototype.extractViewport = function () {
7372 this.extractViewportColumns();
7373 this.extractViewportRows();
7374 };
7375 ColumnModel.prototype.filterOutColumnsWithinViewport = function () {
7376 return this.displayedColumnsCenter.filter(this.isColumnInViewport.bind(this));
7377 };
7378 ColumnModel.prototype.refreshFlexedColumns = function (params) {
7379 var _this = this;
7380 if (params === void 0) { params = {}; }
7381 var source = params.source ? params.source : 'flex';
7382 if (params.viewportWidth != null) {
7383 this.flexViewportWidth = params.viewportWidth;
7384 }
7385 if (!this.flexViewportWidth) {
7386 return [];
7387 }
7388 // If the grid has left-over space, divide it between flexing columns in proportion to their flex value.
7389 // A "flexing column" is one that has a 'flex' value set and is not currently being constrained by its
7390 // minWidth or maxWidth rules.
7391 var flexAfterDisplayIndex = -1;
7392 if (params.resizingCols) {
7393 params.resizingCols.forEach(function (col) {
7394 var indexOfCol = _this.displayedColumnsCenter.indexOf(col);
7395 if (flexAfterDisplayIndex < indexOfCol) {
7396 flexAfterDisplayIndex = indexOfCol;
7397 }
7398 });
7399 }
7400 var isColFlex = function (col) {
7401 var afterResizingCols = _this.displayedColumnsCenter.indexOf(col) > flexAfterDisplayIndex;
7402 return col.getFlex() && afterResizingCols;
7403 };
7404 var knownWidthColumns = this.displayedColumnsCenter.filter(function (col) { return !isColFlex(col); });
7405 var flexingColumns = this.displayedColumnsCenter.filter(function (col) { return isColFlex(col); });
7406 var changedColumns = [];
7407 if (!flexingColumns.length) {
7408 return [];
7409 }
7410 var flexingColumnSizes = [];
7411 var spaceForFlexingColumns;
7412 outer: while (true) {
7413 var totalFlex = flexingColumns.reduce(function (count, col) { return count + col.getFlex(); }, 0);
7414 spaceForFlexingColumns = this.flexViewportWidth - this.getWidthOfColsInList(knownWidthColumns);
7415 for (var i = 0; i < flexingColumns.length; i++) {
7416 var col = flexingColumns[i];
7417 var widthByFlexRule = spaceForFlexingColumns * col.getFlex() / totalFlex;
7418 var constrainedWidth = 0;
7419 var minWidth = col.getMinWidth();
7420 var maxWidth = col.getMaxWidth();
7421 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(minWidth) && widthByFlexRule < minWidth) {
7422 constrainedWidth = minWidth;
7423 }
7424 else if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(maxWidth) && widthByFlexRule > maxWidth) {
7425 constrainedWidth = maxWidth;
7426 }
7427 if (constrainedWidth) {
7428 // This column is not in fact flexing as it is being constrained to a specific size
7429 // so remove it from the list of flexing columns and start again
7430 col.setActualWidth(constrainedWidth, source);
7431 Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["removeFromArray"])(flexingColumns, col);
7432 changedColumns.push(col);
7433 knownWidthColumns.push(col);
7434 continue outer;
7435 }
7436 flexingColumnSizes[i] = Math.round(widthByFlexRule);
7437 }
7438 break;
7439 }
7440 var remainingSpace = spaceForFlexingColumns;
7441 flexingColumns.forEach(function (col, i) {
7442 col.setActualWidth(Math.min(flexingColumnSizes[i], remainingSpace), source);
7443 changedColumns.push(col);
7444 remainingSpace -= flexingColumnSizes[i];
7445 });
7446 if (!params.skipSetLeft) {
7447 this.setLeftValues(source);
7448 }
7449 if (params.updateBodyWidths) {
7450 this.updateBodyWidths();
7451 }
7452 if (params.fireResizedEvent) {
7453 this.fireColumnResizedEvent(changedColumns, true, source, flexingColumns);
7454 }
7455 // if the user sets rowData directly into GridOptions, then the row data is set before
7456 // grid is attached to the DOM. this means the columns are not flexed, and then the rows
7457 // have the wrong height (as they depend on column widths). so once the columns have
7458 // been flexed for the first time (only happens once grid is attached to DOM, as dependency
7459 // on getting the grid width, which only happens after attached after ResizeObserver fires)
7460 // we get get rows to re-calc their heights.
7461 if (!this.flexColsCalculatedAtLestOnce) {
7462 if (this.gridOptionsWrapper.isRowModelDefault()) {
7463 this.rowModel.resetRowHeights();
7464 }
7465 this.flexColsCalculatedAtLestOnce = true;
7466 }
7467 return flexingColumns;
7468 };
7469 // called from api
7470 ColumnModel.prototype.sizeColumnsToFit = function (gridWidth, source, silent) {
7471 if (source === void 0) { source = "sizeColumnsToFit"; }
7472 // avoid divide by zero
7473 var allDisplayedColumns = this.getAllDisplayedColumns();
7474 if (gridWidth <= 0 || !allDisplayedColumns.length) {
7475 return;
7476 }
7477 var colsToSpread = [];
7478 var colsToNotSpread = [];
7479 allDisplayedColumns.forEach(function (column) {
7480 if (column.getColDef().suppressSizeToFit === true) {
7481 colsToNotSpread.push(column);
7482 }
7483 else {
7484 colsToSpread.push(column);
7485 }
7486 });
7487 // make a copy of the cols that are going to be resized
7488 var colsToFireEventFor = colsToSpread.slice(0);
7489 var finishedResizing = false;
7490 var moveToNotSpread = function (column) {
7491 Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["removeFromArray"])(colsToSpread, column);
7492 colsToNotSpread.push(column);
7493 };
7494 // resetting cols to their original width makes the sizeColumnsToFit more deterministic,
7495 // rather than depending on the current size of the columns. most users call sizeColumnsToFit
7496 // immediately after grid is created, so will make no difference. however if application is calling
7497 // sizeColumnsToFit repeatedly (eg after column group is opened / closed repeatedly) we don't want
7498 // the columns to start shrinking / growing over time.
7499 //
7500 // NOTE: the process below will assign values to `this.actualWidth` of each column without firing events
7501 // for this reason we need to manually fire resize events after the resize has been done for each column.
7502 colsToSpread.forEach(function (column) { return column.resetActualWidth(source); });
7503 while (!finishedResizing) {
7504 finishedResizing = true;
7505 var availablePixels = gridWidth - this.getWidthOfColsInList(colsToNotSpread);
7506 if (availablePixels <= 0) {
7507 // no width, set everything to minimum
7508 colsToSpread.forEach(function (column) {
7509 column.setMinimum(source);
7510 });
7511 }
7512 else {
7513 var scale = availablePixels / this.getWidthOfColsInList(colsToSpread);
7514 // we set the pixels for the last col based on what's left, as otherwise
7515 // we could be a pixel or two short or extra because of rounding errors.
7516 var pixelsForLastCol = availablePixels;
7517 // backwards through loop, as we are removing items as we go
7518 for (var i = colsToSpread.length - 1; i >= 0; i--) {
7519 var column = colsToSpread[i];
7520 var minWidth = column.getMinWidth();
7521 var maxWidth = column.getMaxWidth();
7522 var newWidth = Math.round(column.getActualWidth() * scale);
7523 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(minWidth) && newWidth < minWidth) {
7524 newWidth = minWidth;
7525 moveToNotSpread(column);
7526 finishedResizing = false;
7527 }
7528 else if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(maxWidth) && column.isGreaterThanMax(newWidth)) {
7529 newWidth = maxWidth;
7530 moveToNotSpread(column);
7531 finishedResizing = false;
7532 }
7533 else if (i === 0) { // if this is the last column
7534 newWidth = pixelsForLastCol;
7535 }
7536 column.setActualWidth(newWidth, source, true);
7537 pixelsForLastCol -= newWidth;
7538 }
7539 }
7540 }
7541 // see notes above
7542 colsToFireEventFor.forEach(function (col) {
7543 col.fireColumnWidthChangedEvent(source);
7544 });
7545 this.setLeftValues(source);
7546 this.updateBodyWidths();
7547 if (silent) {
7548 return;
7549 }
7550 this.fireColumnResizedEvent(colsToFireEventFor, true, source);
7551 };
7552 ColumnModel.prototype.buildDisplayedTrees = function (visibleColumns) {
7553 var leftVisibleColumns = [];
7554 var rightVisibleColumns = [];
7555 var centerVisibleColumns = [];
7556 visibleColumns.forEach(function (column) {
7557 switch (column.getPinned()) {
7558 case "left":
7559 leftVisibleColumns.push(column);
7560 break;
7561 case "right":
7562 rightVisibleColumns.push(column);
7563 break;
7564 default:
7565 centerVisibleColumns.push(column);
7566 break;
7567 }
7568 });
7569 var groupInstanceIdCreator = new _groupInstanceIdCreator__WEBPACK_IMPORTED_MODULE_5__["GroupInstanceIdCreator"]();
7570 this.displayedTreeLeft = this.displayedGroupCreator.createDisplayedGroups(leftVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].PINNED_LEFT, this.displayedTreeLeft);
7571 this.displayedTreeRight = this.displayedGroupCreator.createDisplayedGroups(rightVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, _constants_constants__WEBPACK_IMPORTED_MODULE_7__["Constants"].PINNED_RIGHT, this.displayedTreeRight);
7572 this.displayedTreeCentre = this.displayedGroupCreator.createDisplayedGroups(centerVisibleColumns, this.gridBalancedTree, groupInstanceIdCreator, null, this.displayedTreeCentre);
7573 this.updateDisplayedMap();
7574 };
7575 ColumnModel.prototype.updateDisplayedMap = function () {
7576 var _this = this;
7577 this.displayedColumnsAndGroupsMap = {};
7578 var func = function (child) {
7579 _this.displayedColumnsAndGroupsMap[child.getUniqueId()] = child;
7580 };
7581 this.columnUtils.depthFirstAllColumnTreeSearch(this.displayedTreeCentre, func);
7582 this.columnUtils.depthFirstAllColumnTreeSearch(this.displayedTreeLeft, func);
7583 this.columnUtils.depthFirstAllColumnTreeSearch(this.displayedTreeRight, func);
7584 };
7585 ColumnModel.prototype.isDisplayed = function (item) {
7586 var fromMap = this.displayedColumnsAndGroupsMap[item.getUniqueId()];
7587 // check for reference, in case new column / group with same id is now present
7588 return fromMap === item;
7589 };
7590 ColumnModel.prototype.updateOpenClosedVisibilityInColumnGroups = function () {
7591 var allColumnGroups = this.getAllDisplayedTrees();
7592 this.columnUtils.depthFirstAllColumnTreeSearch(allColumnGroups, function (child) {
7593 if (child instanceof _entities_columnGroup__WEBPACK_IMPORTED_MODULE_0__["ColumnGroup"]) {
7594 var columnGroup = child;
7595 columnGroup.calculateDisplayedColumns();
7596 }
7597 });
7598 };
7599 ColumnModel.prototype.getGroupAutoColumns = function () {
7600 return this.groupAutoColumns;
7601 };
7602 ColumnModel.prototype.createGroupAutoColumnsIfNeeded = function () {
7603 if (!this.autoGroupsNeedBuilding) {
7604 return;
7605 }
7606 this.autoGroupsNeedBuilding = false;
7607 var groupFullWidthRow = this.gridOptionsWrapper.isGroupUseEntireRow(this.pivotMode);
7608 // we need to allow suppressing auto-column separately for group and pivot as the normal situation
7609 // is CSRM and user provides group column themselves for normal view, but when they go into pivot the
7610 // columns are generated by the grid so no opportunity for user to provide group column. so need a way
7611 // to suppress auto-col for grouping only, and not pivot.
7612 // however if using Viewport RM or SSRM and user is providing the columns, the user may wish full control
7613 // of the group column in this instance.
7614 var suppressAutoColumn = this.pivotMode ?
7615 this.gridOptionsWrapper.isPivotSuppressAutoColumn() : this.gridOptionsWrapper.isGroupSuppressAutoColumn();
7616 var groupingActive = this.rowGroupColumns.length > 0 || this.usingTreeData;
7617 var needAutoColumns = groupingActive && !suppressAutoColumn && !groupFullWidthRow;
7618 if (needAutoColumns) {
7619 var existingCols = this.groupAutoColumns || [];
7620 var newAutoGroupCols = this.autoGroupColService.createAutoGroupColumns(existingCols, this.rowGroupColumns);
7621 var autoColsDifferent = !this.autoColsEqual(newAutoGroupCols, this.groupAutoColumns);
7622 // we force recreate when suppressColumnStateEvents changes, so new group cols pick up the new
7623 // definitions. otherwise we could ignore the new cols because they appear to be the same.
7624 if (autoColsDifferent || this.forceRecreateAutoGroups) {
7625 this.groupAutoColumns = newAutoGroupCols;
7626 }
7627 }
7628 else {
7629 this.groupAutoColumns = null;
7630 }
7631 };
7632 ColumnModel.prototype.autoColsEqual = function (colsA, colsB) {
7633 return Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["areEqual"])(colsA, colsB, function (a, b) { return a.getColId() === b.getColId(); });
7634 };
7635 ColumnModel.prototype.getWidthOfColsInList = function (columnList) {
7636 return columnList.reduce(function (width, col) { return width + col.getActualWidth(); }, 0);
7637 };
7638 ColumnModel.prototype.getGridBalancedTree = function () {
7639 return this.gridBalancedTree;
7640 };
7641 ColumnModel.prototype.hasFloatingFilters = function () {
7642 if (!this.gridColumns) {
7643 return false;
7644 }
7645 var res = this.gridColumns.some(function (col) { return col.getColDef().floatingFilter; });
7646 return res;
7647 };
7648 ColumnModel.prototype.getFirstDisplayedColumn = function () {
7649 var isRtl = this.gridOptionsWrapper.isEnableRtl();
7650 var queryOrder = [
7651 'getDisplayedLeftColumns',
7652 'getDisplayedCenterColumns',
7653 'getDisplayedRightColumns'
7654 ];
7655 if (isRtl) {
7656 queryOrder.reverse();
7657 }
7658 for (var i = 0; i < queryOrder.length; i++) {
7659 var container = this[queryOrder[i]]();
7660 if (container.length) {
7661 return isRtl ? Object(_utils_array__WEBPACK_IMPORTED_MODULE_8__["last"])(container) : container[0];
7662 }
7663 }
7664 return null;
7665 };
7666 __decorate([
7667 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Autowired"])('expressionService')
7668 ], ColumnModel.prototype, "expressionService", void 0);
7669 __decorate([
7670 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Autowired"])('columnFactory')
7671 ], ColumnModel.prototype, "columnFactory", void 0);
7672 __decorate([
7673 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Autowired"])('displayedGroupCreator')
7674 ], ColumnModel.prototype, "displayedGroupCreator", void 0);
7675 __decorate([
7676 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Autowired"])('ctrlsService')
7677 ], ColumnModel.prototype, "ctrlsService", void 0);
7678 __decorate([
7679 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Autowired"])('autoWidthCalculator')
7680 ], ColumnModel.prototype, "autoWidthCalculator", void 0);
7681 __decorate([
7682 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Autowired"])('columnUtils')
7683 ], ColumnModel.prototype, "columnUtils", void 0);
7684 __decorate([
7685 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Autowired"])('columnAnimationService')
7686 ], ColumnModel.prototype, "columnAnimationService", void 0);
7687 __decorate([
7688 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Autowired"])('autoGroupColService')
7689 ], ColumnModel.prototype, "autoGroupColService", void 0);
7690 __decorate([
7691 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Optional"])('aggFuncService')
7692 ], ColumnModel.prototype, "aggFuncService", void 0);
7693 __decorate([
7694 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Optional"])('valueCache')
7695 ], ColumnModel.prototype, "valueCache", void 0);
7696 __decorate([
7697 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Optional"])('animationFrameService')
7698 ], ColumnModel.prototype, "animationFrameService", void 0);
7699 __decorate([
7700 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Autowired"])('rowModel')
7701 ], ColumnModel.prototype, "rowModel", void 0);
7702 __decorate([
7703 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Autowired"])('columnApi')
7704 ], ColumnModel.prototype, "columnApi", void 0);
7705 __decorate([
7706 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Autowired"])('gridApi')
7707 ], ColumnModel.prototype, "gridApi", void 0);
7708 __decorate([
7709 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Autowired"])('sortController')
7710 ], ColumnModel.prototype, "sortController", void 0);
7711 __decorate([
7712 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Autowired"])('columnDefFactory')
7713 ], ColumnModel.prototype, "columnDefFactory", void 0);
7714 __decorate([
7715 _context_context__WEBPACK_IMPORTED_MODULE_6__["PostConstruct"]
7716 ], ColumnModel.prototype, "init", null);
7717 __decorate([
7718 __param(0, Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Qualifier"])('loggerFactory'))
7719 ], ColumnModel.prototype, "setBeans", null);
7720 ColumnModel = __decorate([
7721 Object(_context_context__WEBPACK_IMPORTED_MODULE_6__["Bean"])('columnModel')
7722 ], ColumnModel);
7723 return ColumnModel;
7724}(_context_beanStub__WEBPACK_IMPORTED_MODULE_3__["BeanStub"]));
7725
7726
7727
7728
7729
7730/***/ }),
7731/* 23 */
7732/***/ (function(module, __webpack_exports__, __webpack_require__) {
7733
7734"use strict";
7735__webpack_require__.r(__webpack_exports__);
7736/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(24);
7737/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Events", function() { return _eventKeys__WEBPACK_IMPORTED_MODULE_0__["Events"]; });
7738
7739/**
7740 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
7741 * @version v27.3.0
7742 * @link https://www.ag-grid.com/
7743 * @license MIT
7744 */
7745
7746
7747
7748
7749
7750/***/ }),
7751/* 24 */
7752/***/ (function(module, __webpack_exports__, __webpack_require__) {
7753
7754"use strict";
7755__webpack_require__.r(__webpack_exports__);
7756/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Events", function() { return Events; });
7757/**
7758 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
7759 * @version v27.3.0
7760 * @link https://www.ag-grid.com/
7761 * @license MIT
7762 */
7763var Events = /** @class */ (function () {
7764 function Events() {
7765 }
7766 /** Everything has changed with the columns. Either complete new set of columns set, or user called setState() */
7767 /** @deprecated - grid no longer uses this, and setSate() also fires individual events */
7768 Events.EVENT_COLUMN_EVERYTHING_CHANGED = 'columnEverythingChanged';
7769 /** User has set in new columns. */
7770 Events.EVENT_NEW_COLUMNS_LOADED = 'newColumnsLoaded';
7771 /** The pivot mode flag was changed */
7772 Events.EVENT_COLUMN_PIVOT_MODE_CHANGED = 'columnPivotModeChanged';
7773 /** A row group column was added, removed or order changed. */
7774 Events.EVENT_COLUMN_ROW_GROUP_CHANGED = 'columnRowGroupChanged';
7775 /** expandAll / collapseAll was called from the api. */
7776 Events.EVENT_EXPAND_COLLAPSE_ALL = 'expandOrCollapseAll';
7777 /** A pivot column was added, removed or order changed. */
7778 Events.EVENT_COLUMN_PIVOT_CHANGED = 'columnPivotChanged';
7779 /** The list of grid columns has changed. */
7780 Events.EVENT_GRID_COLUMNS_CHANGED = 'gridColumnsChanged';
7781 /** A value column was added, removed or agg function was changed. */
7782 Events.EVENT_COLUMN_VALUE_CHANGED = 'columnValueChanged';
7783 /** A column was moved */
7784 Events.EVENT_COLUMN_MOVED = 'columnMoved';
7785 /** One or more columns was shown / hidden */
7786 Events.EVENT_COLUMN_VISIBLE = 'columnVisible';
7787 /** One or more columns was pinned / unpinned*/
7788 Events.EVENT_COLUMN_PINNED = 'columnPinned';
7789 /** A column group was opened / closed */
7790 Events.EVENT_COLUMN_GROUP_OPENED = 'columnGroupOpened';
7791 /** One or more columns was resized. If just one, the column in the event is set. */
7792 Events.EVENT_COLUMN_RESIZED = 'columnResized';
7793 /** The list of displayed columns has changed, can result from columns open / close, column move, pivot, group, etc */
7794 Events.EVENT_DISPLAYED_COLUMNS_CHANGED = 'displayedColumnsChanged';
7795 /** The list of virtual columns has changed, results from viewport changing */
7796 Events.EVENT_VIRTUAL_COLUMNS_CHANGED = 'virtualColumnsChanged';
7797 /** Async Transactions Executed */
7798 Events.EVENT_ASYNC_TRANSACTIONS_FLUSHED = 'asyncTransactionsFlushed';
7799 /** A row group was opened / closed */
7800 Events.EVENT_ROW_GROUP_OPENED = 'rowGroupOpened';
7801 /** The client has set new data into the grid */
7802 Events.EVENT_ROW_DATA_CHANGED = 'rowDataChanged';
7803 /** The client has updated data for the grid */
7804 Events.EVENT_ROW_DATA_UPDATED = 'rowDataUpdated';
7805 /** The client has set new floating data into the grid */
7806 Events.EVENT_PINNED_ROW_DATA_CHANGED = 'pinnedRowDataChanged';
7807 /** Range selection has changed */
7808 Events.EVENT_RANGE_SELECTION_CHANGED = 'rangeSelectionChanged';
7809 /** Chart was created */
7810 Events.EVENT_CHART_CREATED = 'chartCreated';
7811 /** Chart Range selection has changed */
7812 Events.EVENT_CHART_RANGE_SELECTION_CHANGED = 'chartRangeSelectionChanged';
7813 /** Chart Options have changed */
7814 Events.EVENT_CHART_OPTIONS_CHANGED = 'chartOptionsChanged';
7815 /** Chart was destroyed */
7816 Events.EVENT_CHART_DESTROYED = 'chartDestroyed';
7817 /** For when the tool panel is shown / hidden */
7818 Events.EVENT_TOOL_PANEL_VISIBLE_CHANGED = 'toolPanelVisibleChanged';
7819 Events.EVENT_COLUMN_PANEL_ITEM_DRAG_START = 'columnPanelItemDragStart';
7820 Events.EVENT_COLUMN_PANEL_ITEM_DRAG_END = 'columnPanelItemDragEnd';
7821 /** Model was updated - grid updates the drawn rows when this happens */
7822 Events.EVENT_MODEL_UPDATED = 'modelUpdated';
7823 Events.EVENT_PASTE_START = 'pasteStart';
7824 Events.EVENT_PASTE_END = 'pasteEnd';
7825 Events.EVENT_FILL_START = 'fillStart';
7826 Events.EVENT_FILL_END = 'fillEnd';
7827 Events.EVENT_CELL_CLICKED = 'cellClicked';
7828 Events.EVENT_CELL_DOUBLE_CLICKED = 'cellDoubleClicked';
7829 Events.EVENT_CELL_MOUSE_DOWN = 'cellMouseDown';
7830 Events.EVENT_CELL_CONTEXT_MENU = 'cellContextMenu';
7831 Events.EVENT_CELL_VALUE_CHANGED = 'cellValueChanged';
7832 Events.EVENT_CELL_EDIT_REQUEST = 'cellEditRequest';
7833 Events.EVENT_ROW_VALUE_CHANGED = 'rowValueChanged';
7834 Events.EVENT_CELL_FOCUSED = 'cellFocused';
7835 Events.EVENT_FULL_WIDTH_ROW_FOCUSED = 'fullWidthRowFocused';
7836 Events.EVENT_ROW_SELECTED = 'rowSelected';
7837 Events.EVENT_SELECTION_CHANGED = 'selectionChanged';
7838 Events.EVENT_CELL_KEY_DOWN = 'cellKeyDown';
7839 Events.EVENT_CELL_KEY_PRESS = 'cellKeyPress';
7840 Events.EVENT_CELL_MOUSE_OVER = 'cellMouseOver';
7841 Events.EVENT_CELL_MOUSE_OUT = 'cellMouseOut';
7842 /** 2 events for filtering. The grid LISTENS for filterChanged and afterFilterChanged */
7843 Events.EVENT_FILTER_CHANGED = 'filterChanged';
7844 /** Filter was change but not applied. Only useful if apply buttons are used in filters. */
7845 Events.EVENT_FILTER_MODIFIED = 'filterModified';
7846 Events.EVENT_FILTER_OPENED = 'filterOpened';
7847 Events.EVENT_SORT_CHANGED = 'sortChanged';
7848 /** A row was removed from the dom, for any reason. Use to clean up resources (if any) used by the row. */
7849 Events.EVENT_VIRTUAL_ROW_REMOVED = 'virtualRowRemoved';
7850 Events.EVENT_ROW_CLICKED = 'rowClicked';
7851 Events.EVENT_ROW_DOUBLE_CLICKED = 'rowDoubleClicked';
7852 /** Gets called once after the grid has finished initialising. */
7853 Events.EVENT_GRID_READY = 'gridReady';
7854 /** Width of height of the main grid div has changed. Grid listens for this and does layout of grid if it's
7855 * changed, so always filling the space it was given. */
7856 Events.EVENT_GRID_SIZE_CHANGED = 'gridSizeChanged';
7857 /** The indexes of the rows rendered has changed, eg user has scrolled to a new vertical position. */
7858 Events.EVENT_VIEWPORT_CHANGED = 'viewportChanged';
7859 /* The width of the scrollbar has been calculated */
7860 Events.EVENT_SCROLLBAR_WIDTH_CHANGED = 'scrollbarWidthChanged';
7861 /** Rows were rendered for the first time (ie on async data load). */
7862 Events.EVENT_FIRST_DATA_RENDERED = 'firstDataRendered';
7863 /** A column drag has started, either resizing a column or moving a column. */
7864 Events.EVENT_DRAG_STARTED = 'dragStarted';
7865 /** A column drag has stopped */
7866 Events.EVENT_DRAG_STOPPED = 'dragStopped';
7867 Events.EVENT_CHECKBOX_CHANGED = 'checkboxChanged';
7868 Events.EVENT_ROW_EDITING_STARTED = 'rowEditingStarted';
7869 Events.EVENT_ROW_EDITING_STOPPED = 'rowEditingStopped';
7870 Events.EVENT_CELL_EDITING_STARTED = 'cellEditingStarted';
7871 Events.EVENT_CELL_EDITING_STOPPED = 'cellEditingStopped';
7872 /** Main body of grid has scrolled, either horizontally or vertically */
7873 Events.EVENT_BODY_SCROLL = 'bodyScroll';
7874 /** Main body of the grid has stopped scrolling, either horizontally or vertically */
7875 Events.EVENT_BODY_SCROLL_END = 'bodyScrollEnd';
7876 Events.EVENT_HEIGHT_SCALE_CHANGED = 'heightScaleChanged';
7877 /** The displayed page for pagination has changed. For example the data was filtered or sorted,
7878 * or the user has moved to a different page. */
7879 Events.EVENT_PAGINATION_CHANGED = 'paginationChanged';
7880 /** Only used by React, Angular, Web Components and VueJS AG Grid components
7881 * (not used if doing plain JavaScript). If the grid receives changes due
7882 * to bound properties, this event fires after the grid has finished processing the change. */
7883 Events.EVENT_COMPONENT_STATE_CHANGED = 'componentStateChanged';
7884 /***************************** INTERNAL EVENTS: START ******************************************* */
7885 /** Please remember to add to ComponentUtil.EXCLUDED_INTERNAL_EVENTS to not have these events exposed to framework components. */
7886 /** All items from here down are used internally by the grid, not intended for external use. */
7887 // not documented, either experimental, or we just don't want users using an depending on them
7888 Events.EVENT_BODY_HEIGHT_CHANGED = 'bodyHeightChanged';
7889 Events.EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED = 'displayedColumnsWidthChanged';
7890 Events.EVENT_SCROLL_VISIBILITY_CHANGED = 'scrollVisibilityChanged';
7891 Events.EVENT_COLUMN_HOVER_CHANGED = 'columnHoverChanged';
7892 Events.EVENT_FLASH_CELLS = 'flashCells';
7893 Events.EVENT_PAGINATION_PIXEL_OFFSET_CHANGED = 'paginationPixelOffsetChanged';
7894 Events.EVENT_DISPLAYED_ROWS_CHANGED = 'displayedRowsChanged';
7895 Events.EVENT_LEFT_PINNED_WIDTH_CHANGED = 'leftPinnedWidthChanged';
7896 Events.EVENT_RIGHT_PINNED_WIDTH_CHANGED = 'rightPinnedWidthChanged';
7897 Events.EVENT_ROW_CONTAINER_HEIGHT_CHANGED = 'rowContainerHeightChanged';
7898 Events.EVENT_ROW_DRAG_ENTER = 'rowDragEnter';
7899 Events.EVENT_ROW_DRAG_MOVE = 'rowDragMove';
7900 Events.EVENT_ROW_DRAG_LEAVE = 'rowDragLeave';
7901 Events.EVENT_ROW_DRAG_END = 'rowDragEnd';
7902 // primarily for charts
7903 Events.EVENT_POPUP_TO_FRONT = 'popupToFront';
7904 // these are used for server side group and agg - only used by CS with Viewport Row Model - intention is
7905 // to design these better around server side functions and then release to general public when fully working with
7906 // all the row models.
7907 Events.EVENT_COLUMN_ROW_GROUP_CHANGE_REQUEST = 'columnRowGroupChangeRequest';
7908 Events.EVENT_COLUMN_PIVOT_CHANGE_REQUEST = 'columnPivotChangeRequest';
7909 Events.EVENT_COLUMN_VALUE_CHANGE_REQUEST = 'columnValueChangeRequest';
7910 Events.EVENT_COLUMN_AGG_FUNC_CHANGE_REQUEST = 'columnAggFuncChangeRequest';
7911 Events.EVENT_KEYBOARD_FOCUS = 'keyboardFocus';
7912 Events.EVENT_MOUSE_FOCUS = 'mouseFocus';
7913 Events.EVENT_STORE_UPDATED = 'storeUpdated';
7914 return Events;
7915}());
7916
7917
7918
7919
7920
7921/***/ }),
7922/* 25 */
7923/***/ (function(module, __webpack_exports__, __webpack_require__) {
7924
7925"use strict";
7926__webpack_require__.r(__webpack_exports__);
7927/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GroupInstanceIdCreator", function() { return GroupInstanceIdCreator; });
7928/**
7929 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
7930 * @version v27.3.0
7931 * @link https://www.ag-grid.com/
7932 * @license MIT
7933 */
7934// class returns unique instance id's for columns.
7935// eg, the following calls (in this order) will result in:
7936//
7937// getInstanceIdForKey('country') => 0
7938// getInstanceIdForKey('country') => 1
7939// getInstanceIdForKey('country') => 2
7940// getInstanceIdForKey('country') => 3
7941// getInstanceIdForKey('age') => 0
7942// getInstanceIdForKey('age') => 1
7943// getInstanceIdForKey('country') => 4
7944var GroupInstanceIdCreator = /** @class */ (function () {
7945 function GroupInstanceIdCreator() {
7946 // this map contains keys to numbers, so we remember what the last call was
7947 this.existingIds = {};
7948 }
7949 GroupInstanceIdCreator.prototype.getInstanceIdForKey = function (key) {
7950 var lastResult = this.existingIds[key];
7951 var result;
7952 if (typeof lastResult !== 'number') {
7953 // first time this key
7954 result = 0;
7955 }
7956 else {
7957 result = lastResult + 1;
7958 }
7959 this.existingIds[key] = result;
7960 return result;
7961 };
7962 return GroupInstanceIdCreator;
7963}());
7964
7965
7966
7967
7968
7969/***/ }),
7970/* 26 */
7971/***/ (function(module, __webpack_exports__, __webpack_require__) {
7972
7973"use strict";
7974__webpack_require__.r(__webpack_exports__);
7975/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "utf8_encode", function() { return utf8_encode; });
7976/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "camelCaseToHyphen", function() { return camelCaseToHyphen; });
7977/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hyphenToCamelCase", function() { return hyphenToCamelCase; });
7978/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "capitalise", function() { return capitalise; });
7979/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "escapeString", function() { return escapeString; });
7980/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "camelCaseToHumanText", function() { return camelCaseToHumanText; });
7981/**
7982 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
7983 * @version v27.3.0
7984 * @link https://www.ag-grid.com/
7985 * @license MIT
7986 */
7987var reUnescapedHtml = /[&<>"']/g;
7988/**
7989 * HTML Escapes.
7990 */
7991var HTML_ESCAPES = {
7992 '&': '&amp;',
7993 '<': '&lt;',
7994 '>': '&gt;',
7995 '"': '&quot;',
7996 "'": '&#39;'
7997};
7998/**
7999 * It encodes any string in UTF-8 format
8000 * taken from https://github.com/mathiasbynens/utf8.js
8001 * @param {string} s
8002 * @returns {string}
8003 */
8004function utf8_encode(s) {
8005 var stringFromCharCode = String.fromCharCode;
8006 function ucs2decode(string) {
8007 var output = [];
8008 if (!string) {
8009 return [];
8010 }
8011 var len = string.length;
8012 var counter = 0;
8013 var value;
8014 var extra;
8015 while (counter < len) {
8016 value = string.charCodeAt(counter++);
8017 if (value >= 0xD800 && value <= 0xDBFF && counter < len) {
8018 // high surrogate, and there is a next character
8019 extra = string.charCodeAt(counter++);
8020 if ((extra & 0xFC00) == 0xDC00) { // low surrogate
8021 output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
8022 }
8023 else {
8024 // unmatched surrogate; only append this code unit, in case the next
8025 // code unit is the high surrogate of a surrogate pair
8026 output.push(value);
8027 counter--;
8028 }
8029 }
8030 else {
8031 output.push(value);
8032 }
8033 }
8034 return output;
8035 }
8036 function checkScalarValue(point) {
8037 if (point >= 0xD800 && point <= 0xDFFF) {
8038 throw Error('Lone surrogate U+' + point.toString(16).toUpperCase() +
8039 ' is not a scalar value');
8040 }
8041 }
8042 function createByte(point, shift) {
8043 return stringFromCharCode(((point >> shift) & 0x3F) | 0x80);
8044 }
8045 function encodeCodePoint(point) {
8046 if ((point >= 0 && point <= 31 && point !== 10)) {
8047 var convertedCode = point.toString(16).toUpperCase();
8048 var paddedCode = convertedCode.padStart(4, '0');
8049 return "_x" + paddedCode + "_";
8050 }
8051 if ((point & 0xFFFFFF80) == 0) { // 1-byte sequence
8052 return stringFromCharCode(point);
8053 }
8054 var symbol = '';
8055 if ((point & 0xFFFFF800) == 0) { // 2-byte sequence
8056 symbol = stringFromCharCode(((point >> 6) & 0x1F) | 0xC0);
8057 }
8058 else if ((point & 0xFFFF0000) == 0) { // 3-byte sequence
8059 checkScalarValue(point);
8060 symbol = stringFromCharCode(((point >> 12) & 0x0F) | 0xE0);
8061 symbol += createByte(point, 6);
8062 }
8063 else if ((point & 0xFFE00000) == 0) { // 4-byte sequence
8064 symbol = stringFromCharCode(((point >> 18) & 0x07) | 0xF0);
8065 symbol += createByte(point, 12);
8066 symbol += createByte(point, 6);
8067 }
8068 symbol += stringFromCharCode((point & 0x3F) | 0x80);
8069 return symbol;
8070 }
8071 var codePoints = ucs2decode(s);
8072 var length = codePoints.length;
8073 var index = -1;
8074 var codePoint;
8075 var byteString = '';
8076 while (++index < length) {
8077 codePoint = codePoints[index];
8078 byteString += encodeCodePoint(codePoint);
8079 }
8080 return byteString;
8081}
8082/**
8083 * Converts a camelCase string into hyphenated string
8084 * from https://gist.github.com/youssman/745578062609e8acac9f
8085 * @param {string} str
8086 * @return {string}
8087 */
8088function camelCaseToHyphen(str) {
8089 if (str === null || str === undefined) {
8090 return null;
8091 }
8092 return str.replace(/([A-Z])/g, function (g) { return '-' + g[0].toLowerCase(); });
8093}
8094/**
8095 * Converts a hyphenated string into camelCase string
8096 * from https://stackoverflow.com/questions/6660977/convert-hyphens-to-camel-case-camelcase
8097 * @param {string} str
8098 * @return {string}
8099 */
8100function hyphenToCamelCase(str) {
8101 if (str === null || str === undefined) {
8102 return null;
8103 }
8104 return str.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); });
8105}
8106function capitalise(str) {
8107 return str[0].toUpperCase() + str.substr(1).toLowerCase();
8108}
8109function escapeString(toEscape) {
8110 // we call toString() twice, in case value is an object, where user provides
8111 // a toString() method, and first call to toString() returns back something other
8112 // than a string (eg a number to render)
8113 return toEscape == null ? null : toEscape.toString().toString().replace(reUnescapedHtml, function (chr) { return HTML_ESCAPES[chr]; });
8114}
8115/**
8116 * Converts a camelCase string into regular text
8117 * from: https://stackoverflow.com/questions/15369566/putting-space-in-camel-case-string-using-regular-expression
8118 * @param {string} camelCase
8119 * @return {string}
8120 */
8121function camelCaseToHumanText(camelCase) {
8122 if (!camelCase || camelCase == null) {
8123 return null;
8124 }
8125 var rex = /([A-Z])([A-Z])([a-z])|([a-z])([A-Z])/g;
8126 var words = camelCase.replace(rex, '$1$4 $2$3$5').replace('.', ' ').split(' ');
8127 return words.map(function (word) { return word.substring(0, 1).toUpperCase() + ((word.length > 1) ? word.substring(1, word.length) : ''); }).join(' ');
8128}
8129
8130
8131
8132
8133/***/ }),
8134/* 27 */
8135/***/ (function(module, __webpack_exports__, __webpack_require__) {
8136
8137"use strict";
8138__webpack_require__.r(__webpack_exports__);
8139/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "convertToMap", function() { return convertToMap; });
8140/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mapById", function() { return mapById; });
8141/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "keys", function() { return keys; });
8142/**
8143 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
8144 * @version v27.3.0
8145 * @link https://www.ag-grid.com/
8146 * @license MIT
8147 */
8148function convertToMap(arr) {
8149 var map = new Map();
8150 arr.forEach(function (pair) { return map.set(pair[0], pair[1]); });
8151 return map;
8152}
8153// handy for organising a list into a map, where each item is mapped by an attribute, eg mapping Columns by ID
8154function mapById(arr, callback) {
8155 var map = new Map();
8156 arr.forEach(function (item) { return map.set(callback(item), item); });
8157 return map;
8158}
8159function keys(map) {
8160 var arr = [];
8161 map.forEach(function (_, key) { return arr.push(key); });
8162 return arr;
8163}
8164
8165
8166
8167
8168/***/ }),
8169/* 28 */
8170/***/ (function(module, __webpack_exports__, __webpack_require__) {
8171
8172"use strict";
8173__webpack_require__.r(__webpack_exports__);
8174/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColumnUtils", function() { return ColumnUtils; });
8175/* harmony import */ var _entities_columnGroup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9);
8176/* harmony import */ var _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8);
8177/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
8178/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20);
8179/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
8180/**
8181 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
8182 * @version v27.3.0
8183 * @link https://www.ag-grid.com/
8184 * @license MIT
8185 */
8186var __extends = (undefined && undefined.__extends) || (function () {
8187 var extendStatics = function (d, b) {
8188 extendStatics = Object.setPrototypeOf ||
8189 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
8190 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
8191 return extendStatics(d, b);
8192 };
8193 return function (d, b) {
8194 extendStatics(d, b);
8195 function __() { this.constructor = d; }
8196 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
8197 };
8198})();
8199var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
8200 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
8201 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
8202 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
8203 return c > 3 && r && Object.defineProperty(target, key, r), r;
8204};
8205
8206
8207
8208
8209
8210// takes in a list of columns, as specified by the column definitions, and returns column groups
8211var ColumnUtils = /** @class */ (function (_super) {
8212 __extends(ColumnUtils, _super);
8213 function ColumnUtils() {
8214 return _super !== null && _super.apply(this, arguments) || this;
8215 }
8216 ColumnUtils.prototype.calculateColMinWidth = function (colDef) {
8217 return colDef.minWidth != null ? colDef.minWidth : this.gridOptionsWrapper.getMinColWidth();
8218 };
8219 ColumnUtils.prototype.calculateColMaxWidth = function (colDef) {
8220 return colDef.maxWidth != null ? colDef.maxWidth : (this.gridOptionsWrapper.getMaxColWidth() || Number.MAX_SAFE_INTEGER);
8221 };
8222 ColumnUtils.prototype.calculateColInitialWidth = function (colDef) {
8223 var minColWidth = this.calculateColMinWidth(colDef);
8224 var maxColWidth = this.calculateColMaxWidth(colDef);
8225 var width;
8226 var colDefWidth = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_4__["attrToNumber"])(colDef.width);
8227 var colDefInitialWidth = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_4__["attrToNumber"])(colDef.initialWidth);
8228 if (colDefWidth != null) {
8229 width = colDefWidth;
8230 }
8231 else if (colDefInitialWidth != null) {
8232 width = colDefInitialWidth;
8233 }
8234 else {
8235 width = this.gridOptionsWrapper.getColWidth();
8236 }
8237 return Math.max(Math.min(width, maxColWidth), minColWidth);
8238 };
8239 ColumnUtils.prototype.getOriginalPathForColumn = function (column, originalBalancedTree) {
8240 var result = [];
8241 var found = false;
8242 var recursePath = function (balancedColumnTree, dept) {
8243 for (var i = 0; i < balancedColumnTree.length; i++) {
8244 if (found) {
8245 return;
8246 }
8247 // quit the search, so 'result' is kept with the found result
8248 var node = balancedColumnTree[i];
8249 if (node instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"]) {
8250 var nextNode = node;
8251 recursePath(nextNode.getChildren(), dept + 1);
8252 result[dept] = node;
8253 }
8254 else if (node === column) {
8255 found = true;
8256 }
8257 }
8258 };
8259 recursePath(originalBalancedTree, 0);
8260 // we should always find the path, but in case there is a bug somewhere, returning null
8261 // will make it fail rather than provide a 'hard to track down' bug
8262 return found ? result : null;
8263 };
8264 ColumnUtils.prototype.depthFirstOriginalTreeSearch = function (parent, tree, callback) {
8265 var _this = this;
8266 if (!tree) {
8267 return;
8268 }
8269 tree.forEach(function (child) {
8270 if (child instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"]) {
8271 _this.depthFirstOriginalTreeSearch(child, child.getChildren(), callback);
8272 }
8273 callback(child, parent);
8274 });
8275 };
8276 ColumnUtils.prototype.depthFirstAllColumnTreeSearch = function (tree, callback) {
8277 var _this = this;
8278 if (!tree) {
8279 return;
8280 }
8281 tree.forEach(function (child) {
8282 if (child instanceof _entities_columnGroup__WEBPACK_IMPORTED_MODULE_0__["ColumnGroup"]) {
8283 _this.depthFirstAllColumnTreeSearch(child.getChildren(), callback);
8284 }
8285 callback(child);
8286 });
8287 };
8288 ColumnUtils.prototype.depthFirstDisplayedColumnTreeSearch = function (tree, callback) {
8289 var _this = this;
8290 if (!tree) {
8291 return;
8292 }
8293 tree.forEach(function (child) {
8294 if (child instanceof _entities_columnGroup__WEBPACK_IMPORTED_MODULE_0__["ColumnGroup"]) {
8295 _this.depthFirstDisplayedColumnTreeSearch(child.getDisplayedChildren(), callback);
8296 }
8297 callback(child);
8298 });
8299 };
8300 ColumnUtils = __decorate([
8301 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Bean"])('columnUtils')
8302 ], ColumnUtils);
8303 return ColumnUtils;
8304}(_context_beanStub__WEBPACK_IMPORTED_MODULE_3__["BeanStub"]));
8305
8306
8307
8308
8309
8310/***/ }),
8311/* 29 */
8312/***/ (function(module, __webpack_exports__, __webpack_require__) {
8313
8314"use strict";
8315__webpack_require__.r(__webpack_exports__);
8316/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DisplayedGroupCreator", function() { return DisplayedGroupCreator; });
8317/* harmony import */ var _entities_columnGroup__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9);
8318/* harmony import */ var _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8);
8319/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
8320/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20);
8321/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(18);
8322/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7);
8323/**
8324 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
8325 * @version v27.3.0
8326 * @link https://www.ag-grid.com/
8327 * @license MIT
8328 */
8329var __extends = (undefined && undefined.__extends) || (function () {
8330 var extendStatics = function (d, b) {
8331 extendStatics = Object.setPrototypeOf ||
8332 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
8333 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
8334 return extendStatics(d, b);
8335 };
8336 return function (d, b) {
8337 extendStatics(d, b);
8338 function __() { this.constructor = d; }
8339 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
8340 };
8341})();
8342var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
8343 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
8344 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
8345 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
8346 return c > 3 && r && Object.defineProperty(target, key, r), r;
8347};
8348
8349
8350
8351
8352
8353
8354// takes in a list of columns, as specified by the column definitions, and returns column groups
8355var DisplayedGroupCreator = /** @class */ (function (_super) {
8356 __extends(DisplayedGroupCreator, _super);
8357 function DisplayedGroupCreator() {
8358 return _super !== null && _super.apply(this, arguments) || this;
8359 }
8360 DisplayedGroupCreator.prototype.createDisplayedGroups = function (
8361 // all displayed columns sorted - this is the columns the grid should show
8362 sortedVisibleColumns,
8363 // the tree of columns, as provided by the users, used to know what groups columns roll up into
8364 balancedColumnTree,
8365 // creates unique id's for the group
8366 groupInstanceIdCreator,
8367 // whether it's left, right or center col
8368 pinned,
8369 // we try to reuse old groups if we can, to allow gui to do animation
8370 oldDisplayedGroups) {
8371 var _this = this;
8372 var result = [];
8373 var previousRealPath;
8374 var previousOriginalPath;
8375 var oldColumnsMapped = this.mapOldGroupsById(oldDisplayedGroups);
8376 // go through each column, then do a bottom up comparison to the previous column, and start
8377 // to share groups if they converge at any point.
8378 sortedVisibleColumns.forEach(function (currentColumn) {
8379 var currentOriginalPath = _this.getOriginalPathForColumn(balancedColumnTree, currentColumn);
8380 var currentRealPath = [];
8381 var firstColumn = !previousOriginalPath;
8382 for (var i = 0; i < currentOriginalPath.length; i++) {
8383 if (firstColumn || currentOriginalPath[i] !== previousOriginalPath[i]) {
8384 // new group needed
8385 var newGroup = _this.createColumnGroup(currentOriginalPath[i], groupInstanceIdCreator, oldColumnsMapped, pinned);
8386 currentRealPath[i] = newGroup;
8387 // if top level, add to result, otherwise add to parent
8388 if (i == 0) {
8389 result.push(newGroup);
8390 }
8391 else {
8392 currentRealPath[i - 1].addChild(newGroup);
8393 }
8394 }
8395 else {
8396 // reuse old group
8397 currentRealPath[i] = previousRealPath[i];
8398 }
8399 }
8400 var noColumnGroups = currentRealPath.length === 0;
8401 if (noColumnGroups) {
8402 // if we are not grouping, then the result of the above is an empty
8403 // path (no groups), and we just add the column to the root list.
8404 result.push(currentColumn);
8405 }
8406 else {
8407 var leafGroup = Object(_utils_array__WEBPACK_IMPORTED_MODULE_4__["last"])(currentRealPath);
8408 leafGroup.addChild(currentColumn);
8409 }
8410 previousRealPath = currentRealPath;
8411 previousOriginalPath = currentOriginalPath;
8412 });
8413 this.setupParentsIntoColumns(result, null);
8414 return result;
8415 };
8416 DisplayedGroupCreator.prototype.createColumnGroup = function (providedGroup, groupInstanceIdCreator, oldColumnsMapped, pinned) {
8417 var groupId = providedGroup.getGroupId();
8418 var instanceId = groupInstanceIdCreator.getInstanceIdForKey(groupId);
8419 var uniqueId = _entities_columnGroup__WEBPACK_IMPORTED_MODULE_0__["ColumnGroup"].createUniqueId(groupId, instanceId);
8420 var columnGroup = oldColumnsMapped[uniqueId];
8421 // if the user is setting new colDefs, it is possible that the id's overlap, and we
8422 // would have a false match from above. so we double check we are talking about the
8423 // same original column group.
8424 if (columnGroup && columnGroup.getProvidedColumnGroup() !== providedGroup) {
8425 columnGroup = null;
8426 }
8427 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["exists"])(columnGroup)) {
8428 // clean out the old column group here, as we will be adding children into it again
8429 columnGroup.reset();
8430 }
8431 else {
8432 columnGroup = new _entities_columnGroup__WEBPACK_IMPORTED_MODULE_0__["ColumnGroup"](providedGroup, groupId, instanceId, pinned);
8433 this.context.createBean(columnGroup);
8434 }
8435 return columnGroup;
8436 };
8437 // returns back a 2d map of ColumnGroup as follows: groupId -> instanceId -> ColumnGroup
8438 DisplayedGroupCreator.prototype.mapOldGroupsById = function (displayedGroups) {
8439 var result = {};
8440 var recursive = function (columnsOrGroups) {
8441 columnsOrGroups.forEach(function (columnOrGroup) {
8442 if (columnOrGroup instanceof _entities_columnGroup__WEBPACK_IMPORTED_MODULE_0__["ColumnGroup"]) {
8443 var columnGroup = columnOrGroup;
8444 result[columnOrGroup.getUniqueId()] = columnGroup;
8445 recursive(columnGroup.getChildren());
8446 }
8447 });
8448 };
8449 if (displayedGroups) {
8450 recursive(displayedGroups);
8451 }
8452 return result;
8453 };
8454 DisplayedGroupCreator.prototype.setupParentsIntoColumns = function (columnsOrGroups, parent) {
8455 var _this = this;
8456 columnsOrGroups.forEach(function (columnsOrGroup) {
8457 columnsOrGroup.setParent(parent);
8458 if (columnsOrGroup instanceof _entities_columnGroup__WEBPACK_IMPORTED_MODULE_0__["ColumnGroup"]) {
8459 var columnGroup = columnsOrGroup;
8460 _this.setupParentsIntoColumns(columnGroup.getChildren(), columnGroup);
8461 }
8462 });
8463 };
8464 DisplayedGroupCreator.prototype.getOriginalPathForColumn = function (balancedColumnTree, column) {
8465 var result = [];
8466 var found = false;
8467 var recursePath = function (columnTree, dept) {
8468 for (var i = 0; i < columnTree.length; i++) {
8469 // quit the search, so 'result' is kept with the found result
8470 if (found) {
8471 return;
8472 }
8473 var node = columnTree[i];
8474 if (node instanceof _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"]) {
8475 recursePath(node.getChildren(), dept + 1);
8476 result[dept] = node;
8477 }
8478 else if (node === column) {
8479 found = true;
8480 }
8481 }
8482 };
8483 recursePath(balancedColumnTree, 0);
8484 // it's possible we didn't find a path. this happens if the column is generated
8485 // by the grid (auto-group), in that the definition didn't come from the client. in this case,
8486 // we create a fake original path.
8487 if (found) {
8488 return result;
8489 }
8490 console.warn('AG Grid: could not get path');
8491 return null;
8492 };
8493 DisplayedGroupCreator = __decorate([
8494 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Bean"])('displayedGroupCreator')
8495 ], DisplayedGroupCreator);
8496 return DisplayedGroupCreator;
8497}(_context_beanStub__WEBPACK_IMPORTED_MODULE_3__["BeanStub"]));
8498
8499
8500
8501
8502
8503/***/ }),
8504/* 30 */
8505/***/ (function(module, __webpack_exports__, __webpack_require__) {
8506
8507"use strict";
8508__webpack_require__.r(__webpack_exports__);
8509/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ComponentUtil", function() { return ComponentUtil; });
8510/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(23);
8511/* harmony import */ var _propertyKeys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(31);
8512/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13);
8513/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(18);
8514/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
8515/**
8516 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
8517 * @version v27.3.0
8518 * @link https://www.ag-grid.com/
8519 * @license MIT
8520 */
8521var __assign = (undefined && undefined.__assign) || function () {
8522 __assign = Object.assign || function(t) {
8523 for (var s, i = 1, n = arguments.length; i < n; i++) {
8524 s = arguments[i];
8525 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
8526 t[p] = s[p];
8527 }
8528 return t;
8529 };
8530 return __assign.apply(this, arguments);
8531};
8532var __read = (undefined && undefined.__read) || function (o, n) {
8533 var m = typeof Symbol === "function" && o[Symbol.iterator];
8534 if (!m) return o;
8535 var i = m.call(o), r, ar = [], e;
8536 try {
8537 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8538 }
8539 catch (error) { e = { error: error }; }
8540 finally {
8541 try {
8542 if (r && !r.done && (m = i["return"])) m.call(i);
8543 }
8544 finally { if (e) throw e.error; }
8545 }
8546 return ar;
8547};
8548var __spread = (undefined && undefined.__spread) || function () {
8549 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
8550 return ar;
8551};
8552
8553
8554
8555
8556
8557var ComponentUtil = /** @class */ (function () {
8558 function ComponentUtil() {
8559 }
8560 ComponentUtil.getEventCallbacks = function () {
8561 if (!ComponentUtil.EVENT_CALLBACKS) {
8562 ComponentUtil.EVENT_CALLBACKS = ComponentUtil.EVENTS.map(function (event) { return ComponentUtil.getCallbackForEvent(event); });
8563 }
8564 return ComponentUtil.EVENT_CALLBACKS;
8565 };
8566 ComponentUtil.copyAttributesToGridOptions = function (gridOptions, component, skipEventDeprecationCheck) {
8567 if (skipEventDeprecationCheck === void 0) { skipEventDeprecationCheck = false; }
8568 // create empty grid options if none were passed
8569 if (typeof gridOptions !== 'object') {
8570 gridOptions = {};
8571 }
8572 // to allow array style lookup in TypeScript, take type away from 'this' and 'gridOptions'
8573 var pGridOptions = gridOptions;
8574 var keyExists = function (key) { return typeof component[key] !== 'undefined'; };
8575 // if groupAggFiltering exists and isn't a function, handle as a boolean.
8576 if (keyExists('groupAggFiltering') && typeof component.groupAggFiltering !== 'function') {
8577 pGridOptions.groupAggFiltering = ComponentUtil.toBoolean(component.groupAggFiltering);
8578 delete component.groupAggFiltering;
8579 }
8580 // add in all the simple properties
8581 __spread(ComponentUtil.ARRAY_PROPERTIES, ComponentUtil.STRING_PROPERTIES, ComponentUtil.OBJECT_PROPERTIES, ComponentUtil.FUNCTION_PROPERTIES, ComponentUtil.getEventCallbacks()).filter(keyExists)
8582 .forEach(function (key) { return pGridOptions[key] = component[key]; });
8583 ComponentUtil.BOOLEAN_PROPERTIES
8584 .filter(keyExists)
8585 .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toBoolean(component[key]); });
8586 ComponentUtil.NUMBER_PROPERTIES
8587 .filter(keyExists)
8588 .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toNumber(component[key]); });
8589 return gridOptions;
8590 };
8591 ComponentUtil.getCallbackForEvent = function (eventName) {
8592 if (!eventName || eventName.length < 2) {
8593 return eventName;
8594 }
8595 return 'on' + eventName[0].toUpperCase() + eventName.substr(1);
8596 };
8597 ComponentUtil.processOnChange = function (changes, gridOptions, api, columnApi) {
8598 if (!changes) {
8599 return;
8600 }
8601 var changesToApply = __assign({}, changes);
8602 // to allow array style lookup in TypeScript, take type away from 'this' and 'gridOptions'
8603 var pGridOptions = gridOptions;
8604 var keyExists = function (key) { return changesToApply[key]; };
8605 // if groupAggFiltering exists and isn't a function, handle as a boolean.
8606 if (keyExists('groupAggFiltering')) {
8607 if (typeof changesToApply.groupAggFiltering === 'function') {
8608 pGridOptions.groupAggFiltering = changesToApply.groupAggFiltering;
8609 }
8610 else {
8611 pGridOptions.groupAggFiltering = ComponentUtil.toBoolean(changesToApply.groupAggFiltering);
8612 }
8613 delete changesToApply.groupAggFiltering;
8614 }
8615 // we need to do this before the generic handling, otherwise value gets set before we
8616 // try to set it, and the grid then doesn't refresh the rows as it doesn't see any change.
8617 // also it's possible we use the generic code setXXX below and put it up there instead,
8618 // cover all cases.
8619 if (changesToApply.rowClass) {
8620 api.setRowClass(changesToApply.rowClass.currentValue);
8621 delete changesToApply.rowClass;
8622 }
8623 // check if any change for the simple types, and if so, then just copy in the new value
8624 __spread(ComponentUtil.ARRAY_PROPERTIES, ComponentUtil.OBJECT_PROPERTIES, ComponentUtil.STRING_PROPERTIES, ComponentUtil.getEventCallbacks()).filter(keyExists)
8625 .forEach(function (key) { return pGridOptions[key] = changesToApply[key].currentValue; });
8626 ComponentUtil.BOOLEAN_PROPERTIES
8627 .filter(keyExists)
8628 .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toBoolean(changesToApply[key].currentValue); });
8629 ComponentUtil.NUMBER_PROPERTIES
8630 .filter(keyExists)
8631 .forEach(function (key) { return pGridOptions[key] = ComponentUtil.toNumber(changesToApply[key].currentValue); });
8632 if (changesToApply.enableCellTextSelection) {
8633 api.setEnableCellTextSelection(ComponentUtil.toBoolean(changesToApply.enableCellTextSelection.currentValue));
8634 delete changesToApply.enableCellTextSelection;
8635 }
8636 if (changesToApply.quickFilterText) {
8637 api.setQuickFilter(changesToApply.quickFilterText.currentValue);
8638 delete changesToApply.quickFilterText;
8639 }
8640 if (changesToApply.autoGroupColumnDef) {
8641 api.setAutoGroupColumnDef(changesToApply.autoGroupColumnDef.currentValue, "gridOptionsChanged");
8642 delete changesToApply.autoGroupColumnDef;
8643 }
8644 if (changesToApply.columnDefs) {
8645 api.setColumnDefs(changesToApply.columnDefs.currentValue, "gridOptionsChanged");
8646 delete changesToApply.columnDefs;
8647 }
8648 if (changesToApply.defaultColDef) {
8649 api.setDefaultColDef(changesToApply.defaultColDef.currentValue, "gridOptionsChanged");
8650 delete changesToApply.defaultColDef;
8651 }
8652 if (changesToApply.paginationPageSize) {
8653 api.paginationSetPageSize(ComponentUtil.toNumber(changesToApply.paginationPageSize.currentValue));
8654 delete changesToApply.paginationPageSize;
8655 }
8656 if (changesToApply.pivotMode) {
8657 columnApi.setPivotMode(ComponentUtil.toBoolean(changesToApply.pivotMode.currentValue));
8658 delete changesToApply.pivotMode;
8659 }
8660 if (changesToApply.groupRemoveSingleChildren) {
8661 api.setGroupRemoveSingleChildren(ComponentUtil.toBoolean(changesToApply.groupRemoveSingleChildren.currentValue));
8662 delete changesToApply.groupRemoveSingleChildren;
8663 }
8664 if (changesToApply.suppressRowDrag) {
8665 api.setSuppressRowDrag(ComponentUtil.toBoolean(changesToApply.suppressRowDrag.currentValue));
8666 delete changesToApply.suppressRowDrag;
8667 }
8668 if (changesToApply.suppressMoveWhenRowDragging) {
8669 api.setSuppressMoveWhenRowDragging(ComponentUtil.toBoolean(changesToApply.suppressMoveWhenRowDragging.currentValue));
8670 delete changesToApply.suppressMoveWhenRowDragging;
8671 }
8672 if (changesToApply.suppressRowClickSelection) {
8673 api.setSuppressRowClickSelection(ComponentUtil.toBoolean(changesToApply.suppressRowClickSelection.currentValue));
8674 delete changesToApply.suppressRowClickSelection;
8675 }
8676 if (changesToApply.suppressClipboardPaste) {
8677 api.setSuppressClipboardPaste(ComponentUtil.toBoolean(changesToApply.suppressClipboardPaste.currentValue));
8678 delete changesToApply.suppressClipboardPaste;
8679 }
8680 if (changesToApply.headerHeight) {
8681 api.setHeaderHeight(ComponentUtil.toNumber(changesToApply.headerHeight.currentValue));
8682 delete changesToApply.headerHeight;
8683 }
8684 // any remaining properties can be set in a generic way
8685 // ie the setter takes the form of setXXX and the argument requires no formatting/translation first
8686 var dynamicApi = api;
8687 Object.keys(changesToApply)
8688 .forEach(function (property) {
8689 var setterName = "set" + property.charAt(0).toUpperCase() + property.substring(1);
8690 if (dynamicApi[setterName]) {
8691 dynamicApi[setterName](changes[property].currentValue);
8692 }
8693 });
8694 // copy changes into an event for dispatch
8695 var event = {
8696 type: _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COMPONENT_STATE_CHANGED,
8697 api: gridOptions.api,
8698 columnApi: gridOptions.columnApi
8699 };
8700 Object(_utils_object__WEBPACK_IMPORTED_MODULE_2__["iterateObject"])(changes, function (key, value) {
8701 event[key] = value;
8702 });
8703 api.dispatchEvent(event);
8704 };
8705 ComponentUtil.toBoolean = function (value) {
8706 if (typeof value === 'boolean') {
8707 return value;
8708 }
8709 if (typeof value === 'string') {
8710 // for boolean, compare to empty String to allow attributes appearing with
8711 // no value to be treated as 'true'
8712 return value.toUpperCase() === 'TRUE' || value == '';
8713 }
8714 return false;
8715 };
8716 ComponentUtil.toNumber = function (value) {
8717 if (typeof value === 'number') {
8718 return value;
8719 }
8720 if (typeof value === 'string') {
8721 return Number(value);
8722 }
8723 };
8724 // all the events are populated in here AFTER this class (at the bottom of the file).
8725 ComponentUtil.EVENTS = [];
8726 // events that are available for use by users of AG Grid and so should be documented
8727 ComponentUtil.PUBLIC_EVENTS = [];
8728 // events that are internal to AG Grid and should not be exposed to users via documentation or generated framework components
8729 ComponentUtil.EXCLUDED_INTERNAL_EVENTS = [];
8730 ComponentUtil.STRING_PROPERTIES = _propertyKeys__WEBPACK_IMPORTED_MODULE_1__["PropertyKeys"].STRING_PROPERTIES;
8731 ComponentUtil.OBJECT_PROPERTIES = _propertyKeys__WEBPACK_IMPORTED_MODULE_1__["PropertyKeys"].OBJECT_PROPERTIES;
8732 ComponentUtil.ARRAY_PROPERTIES = _propertyKeys__WEBPACK_IMPORTED_MODULE_1__["PropertyKeys"].ARRAY_PROPERTIES;
8733 ComponentUtil.NUMBER_PROPERTIES = _propertyKeys__WEBPACK_IMPORTED_MODULE_1__["PropertyKeys"].NUMBER_PROPERTIES;
8734 ComponentUtil.BOOLEAN_PROPERTIES = _propertyKeys__WEBPACK_IMPORTED_MODULE_1__["PropertyKeys"].BOOLEAN_PROPERTIES;
8735 ComponentUtil.FUNCTION_PROPERTIES = _propertyKeys__WEBPACK_IMPORTED_MODULE_1__["PropertyKeys"].FUNCTION_PROPERTIES;
8736 ComponentUtil.ALL_PROPERTIES = _propertyKeys__WEBPACK_IMPORTED_MODULE_1__["PropertyKeys"].ALL_PROPERTIES;
8737 return ComponentUtil;
8738}());
8739
8740ComponentUtil.EVENTS = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_4__["values"])(_events__WEBPACK_IMPORTED_MODULE_0__["Events"]);
8741/** Exclude the following internal events from code generation to prevent exposing these events via framework components */
8742ComponentUtil.EXCLUDED_INTERNAL_EVENTS = [
8743 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_SCROLLBAR_WIDTH_CHANGED,
8744 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_CHECKBOX_CHANGED,
8745 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_HEIGHT_SCALE_CHANGED,
8746 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_BODY_HEIGHT_CHANGED,
8747 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED,
8748 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_SCROLL_VISIBILITY_CHANGED,
8749 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_HOVER_CHANGED,
8750 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_FLASH_CELLS,
8751 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_PAGINATION_PIXEL_OFFSET_CHANGED,
8752 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_DISPLAYED_ROWS_CHANGED,
8753 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_LEFT_PINNED_WIDTH_CHANGED,
8754 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_RIGHT_PINNED_WIDTH_CHANGED,
8755 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_ROW_CONTAINER_HEIGHT_CHANGED,
8756 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_POPUP_TO_FRONT,
8757 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_KEYBOARD_FOCUS,
8758 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_MOUSE_FOCUS,
8759 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_STORE_UPDATED,
8760 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_PANEL_ITEM_DRAG_START,
8761 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_PANEL_ITEM_DRAG_END,
8762 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_FILL_START,
8763 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_FILL_END,
8764 _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_FULL_WIDTH_ROW_FOCUSED
8765];
8766/** EVENTS that should be exposed via code generation for the framework components. */
8767ComponentUtil.PUBLIC_EVENTS = ComponentUtil.EVENTS.filter(function (e) { return !Object(_utils_array__WEBPACK_IMPORTED_MODULE_3__["includes"])(ComponentUtil.EXCLUDED_INTERNAL_EVENTS, e); });
8768
8769
8770
8771
8772/***/ }),
8773/* 31 */
8774/***/ (function(module, __webpack_exports__, __webpack_require__) {
8775
8776"use strict";
8777__webpack_require__.r(__webpack_exports__);
8778/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PropertyKeys", function() { return PropertyKeys; });
8779/**
8780 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
8781 * @version v27.3.0
8782 * @link https://www.ag-grid.com/
8783 * @license MIT
8784 */
8785var __read = (undefined && undefined.__read) || function (o, n) {
8786 var m = typeof Symbol === "function" && o[Symbol.iterator];
8787 if (!m) return o;
8788 var i = m.call(o), r, ar = [], e;
8789 try {
8790 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8791 }
8792 catch (error) { e = { error: error }; }
8793 finally {
8794 try {
8795 if (r && !r.done && (m = i["return"])) m.call(i);
8796 }
8797 finally { if (e) throw e.error; }
8798 }
8799 return ar;
8800};
8801var __spread = (undefined && undefined.__spread) || function () {
8802 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
8803 return ar;
8804};
8805/**
8806 * These keys are used for validating properties supplied on a gridOptions object, and for code generation.
8807 * If you change the properties on the gridOptions interface, you *must* update this file as well to be consistent.
8808 */
8809var PropertyKeys = /** @class */ (function () {
8810 function PropertyKeys() {
8811 }
8812 PropertyKeys.STRING_PROPERTIES = [
8813 'sortingOrder', 'rowClass', 'rowSelection', 'overlayLoadingTemplate', 'overlayNoRowsTemplate',
8814 'quickFilterText', 'rowModelType', 'editType', 'domLayout', 'clipboardDelimiter', 'rowGroupPanelShow',
8815 'multiSortKey', 'pivotColumnGroupTotals', 'pivotRowTotals', 'pivotPanelShow', 'fillHandleDirection',
8816 'serverSideStoreType', 'groupDisplayType', 'treeDataDisplayType'
8817 ];
8818 PropertyKeys.OBJECT_PROPERTIES = [
8819 'components', 'frameworkComponents', 'rowStyle', 'context', 'autoGroupColumnDef', 'localeText', 'icons',
8820 'datasource', 'serverSideDatasource', 'viewportDatasource', 'groupRowRendererParams', 'aggFuncs', 'fullWidthCellRendererParams',
8821 'defaultColGroupDef', 'defaultColDef', 'defaultExportParams', 'defaultCsvExportParams', 'defaultExcelExportParams', 'columnTypes',
8822 'rowClassRules', 'detailCellRendererParams', 'loadingCellRendererParams', 'loadingOverlayComponentParams',
8823 'noRowsOverlayComponentParams', 'popupParent', 'colResizeDefault', 'statusBar', 'sideBar', 'chartThemeOverrides',
8824 'customChartThemes'
8825 ];
8826 PropertyKeys.ARRAY_PROPERTIES = [
8827 'alignedGrids', 'rowData', 'columnDefs', 'excelStyles', 'pinnedTopRowData', 'pinnedBottomRowData', 'chartThemes'
8828 ];
8829 PropertyKeys.NUMBER_PROPERTIES = [
8830 'rowHeight', 'detailRowHeight', 'rowBuffer', 'colWidth', 'headerHeight', 'groupHeaderHeight', 'floatingFiltersHeight',
8831 'pivotHeaderHeight', 'pivotGroupHeaderHeight', 'groupDefaultExpanded', 'minColWidth', 'maxColWidth', 'viewportRowModelPageSize',
8832 'viewportRowModelBufferSize', 'autoSizePadding', 'maxBlocksInCache', 'maxConcurrentDatasourceRequests', 'tooltipShowDelay',
8833 'tooltipHideDelay', 'cacheOverflowSize', 'paginationPageSize', 'cacheBlockSize', 'infiniteInitialRowCount', 'scrollbarWidth',
8834 'batchUpdateWaitMillis', 'asyncTransactionWaitMillis', 'blockLoadDebounceMillis', 'keepDetailRowsCount',
8835 'undoRedoCellEditingLimit', 'cellFlashDelay', 'cellFadeDelay', 'tabIndex'
8836 ];
8837 PropertyKeys.BOOLEAN_PROPERTIES = [
8838 'suppressMakeColumnVisibleAfterUnGroup', 'suppressRowClickSelection', 'suppressCellSelection', 'suppressCellFocus', 'suppressHorizontalScroll',
8839 'alwaysShowHorizontalScroll', 'alwaysShowVerticalScroll', 'debug', 'enableBrowserTooltips', 'enableCellExpressions',
8840 'angularCompileRows', 'angularCompileFilters', 'groupSuppressAutoColumn', 'groupSelectsChildren', 'groupIncludeFooter',
8841 'groupIncludeTotalFooter', 'groupUseEntireRow', 'groupSuppressBlankHeader', 'suppressMenuHide', 'suppressRowDeselection',
8842 'unSortIcon', 'suppressMultiSort', 'alwaysMultiSort', 'singleClickEdit', 'suppressLoadingOverlay', 'suppressNoRowsOverlay', 'suppressAutoSize',
8843 'skipHeaderOnAutoSize', 'suppressParentsInRowNodes', 'suppressColumnMoveAnimation', 'suppressMovableColumns',
8844 'suppressFieldDotNotation', 'enableRangeSelection', 'enableRangeHandle', 'enableFillHandle', 'suppressClearOnFillReduction',
8845 'deltaSort', 'suppressTouch', 'suppressAsyncEvents', 'allowContextMenuWithControlKey', 'suppressContextMenu',
8846 'rememberGroupStateWhenNewData', 'enableCellChangeFlash', 'suppressDragLeaveHidesColumns', 'suppressMiddleClickScrolls',
8847 'suppressPreventDefaultOnMouseWheel', 'suppressCopyRowsToClipboard', 'copyHeadersToClipboard', 'copyGroupHeadersToClipboard',
8848 'pivotMode', 'suppressAggFuncInHeader', 'suppressColumnVirtualisation', 'suppressAggAtRootLevel', 'suppressFocusAfterRefresh',
8849 'functionsPassive', 'functionsReadOnly', 'animateRows', 'groupSelectsFiltered', 'groupRemoveSingleChildren',
8850 'groupRemoveLowestSingleChildren', 'enableRtl', 'suppressClickEdit', 'rowDragEntireRow', 'rowDragManaged', 'suppressRowDrag',
8851 'suppressMoveWhenRowDragging', 'rowDragMultiRow', 'enableGroupEdit', 'embedFullWidthRows', 'deprecatedEmbedFullWidthRows',
8852 'suppressPaginationPanel', 'groupHideOpenParents', 'groupMultiAutoColumn', 'pagination',
8853 'stopEditingWhenGridLosesFocus', 'paginationAutoPageSize', 'suppressScrollOnNewData', 'suppressScrollWhenPopupsAreOpen',
8854 'purgeClosedRowNodes', 'cacheQuickFilter', 'deltaRowDataMode', 'ensureDomOrder', 'accentedSort', 'suppressChangeDetection',
8855 'valueCache', 'valueCacheNeverExpires', 'aggregateOnlyChangedColumns', 'suppressAnimationFrame', 'suppressExcelExport',
8856 'suppressCsvExport', 'treeData', 'masterDetail', 'suppressMultiRangeSelection', 'enterMovesDownAfterEdit', 'enterMovesDown',
8857 'suppressPropertyNamesCheck', 'rowMultiSelectWithClick', 'suppressEnterpriseResetOnNewColumns',
8858 'suppressRowHoverHighlight', 'suppressRowTransform', 'suppressClipboardPaste', 'suppressLastEmptyLineOnPaste',
8859 'serverSideSortingAlwaysResets', 'suppressSetColumnStateEvents', 'suppressColumnStateEvents', 'enableCharts', 'deltaColumnMode',
8860 'suppressMaintainUnsortedOrder', 'enableCellTextSelection', 'suppressBrowserResizeObserver', 'suppressMaxRenderedRowRestriction',
8861 'excludeChildrenWhenTreeDataFiltering', 'tooltipMouseTrack', 'keepDetailRows', 'paginateChildRows', 'preventDefaultOnContextMenu',
8862 'undoRedoCellEditing', 'allowDragFromColumnsToolPanel', 'immutableData', 'immutableColumns', 'pivotSuppressAutoColumn',
8863 'suppressExpandablePivotGroups', 'applyColumnDefOrder', 'debounceVerticalScrollbar', 'detailRowAutoHeight',
8864 'serverSideFilteringAlwaysResets', 'suppressAggFilteredOnly', 'showOpenedGroup', 'suppressClipboardApi',
8865 'suppressModelUpdateAfterUpdateTransaction', 'stopEditingWhenCellsLoseFocus', 'maintainColumnOrder', 'groupMaintainOrder',
8866 'columnHoverHighlight', 'reactUi', 'suppressReactUi', 'readOnlyEdit', 'suppressRowVirtualisation',
8867 'resetRowDataOnUpdate', 'removePivotHeaderRowWhenSingleValueColumn', 'suppressCopySingleCellRanges'
8868 ];
8869 /** You do not need to include event callbacks in this list, as they are generated automatically. */
8870 PropertyKeys.FUNCTION_PROPERTIES = [
8871 'localeTextFunc', 'getLocaleText', 'groupRowInnerRenderer', 'groupRowInnerRendererFramework',
8872 'groupRowRenderer', 'groupRowRendererFramework', 'isExternalFilterPresent', 'getRowHeight', 'doesExternalFilterPass',
8873 'getRowClass', 'getRowStyle', 'getContextMenuItems', 'getMainMenuItems', 'processRowPostCreate', 'processCellForClipboard',
8874 'groupRowAggNodes', 'getGroupRowAgg', 'getRowNodeId', 'isFullWidthCell', 'isFullWidthRow', 'fullWidthCellRenderer', 'fullWidthCellRendererFramework',
8875 'processSecondaryColDef', 'processSecondaryColGroupDef',
8876 'getBusinessKeyForNode', 'sendToClipboard', 'navigateToNextHeader',
8877 'tabToNextHeader', 'navigateToNextCell', 'tabToNextCell', 'processCellFromClipboard', 'getDocument', 'postProcessPopup',
8878 'getChildCount', 'getDataPath', 'loadingCellRenderer', 'loadingCellRendererFramework', 'loadingOverlayComponent',
8879 'loadingOverlayComponentFramework', 'noRowsOverlayComponent', 'noRowsOverlayComponentFramework', 'detailCellRenderer',
8880 'detailCellRendererFramework', 'isRowMaster', 'isRowSelectable', 'postSort', 'postSortRows', 'processHeaderForClipboard', 'processGroupHeaderForClipboard',
8881 'paginationNumberFormatter', 'processDataFromClipboard', 'getServerSideGroupKey', 'isServerSideGroup', 'suppressKeyboardEvent',
8882 'createChartContainer', 'getChartToolbarItems', 'fillOperation', 'isApplyServerSideTransaction', 'getServerSideStoreParams',
8883 'isServerSideGroupOpenByDefault', 'isGroupOpenByDefault', 'defaultGroupSortComparator', 'defaultGroupOrderComparator', 'initialGroupOrderComparator',
8884 'loadingCellRendererSelector', 'getRowId', 'groupAggFiltering'
8885 ];
8886 PropertyKeys.ALL_PROPERTIES = __spread(PropertyKeys.ARRAY_PROPERTIES, PropertyKeys.OBJECT_PROPERTIES, PropertyKeys.STRING_PROPERTIES, PropertyKeys.NUMBER_PROPERTIES, PropertyKeys.FUNCTION_PROPERTIES, PropertyKeys.BOOLEAN_PROPERTIES);
8887 /**
8888 * Used when performing property checks. This avoids noise caused when using frameworks, which can add their own
8889 * framework-specific properties to colDefs, gridOptions etc.
8890 */
8891 PropertyKeys.FRAMEWORK_PROPERTIES = [
8892 '__ob__', '__v_skip', '__metadata__', 'mappedColumnProperties', 'hasChildColumns', 'toColDef', 'createColDefFromGridColumn'
8893 ];
8894 return PropertyKeys;
8895}());
8896
8897
8898
8899
8900
8901/***/ }),
8902/* 32 */
8903/***/ (function(module, __webpack_exports__, __webpack_require__) {
8904
8905"use strict";
8906__webpack_require__.r(__webpack_exports__);
8907/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgStackComponentsRegistry", function() { return AgStackComponentsRegistry; });
8908/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
8909/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
8910/**
8911 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
8912 * @version v27.3.0
8913 * @link https://www.ag-grid.com/
8914 * @license MIT
8915 */
8916var __extends = (undefined && undefined.__extends) || (function () {
8917 var extendStatics = function (d, b) {
8918 extendStatics = Object.setPrototypeOf ||
8919 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
8920 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
8921 return extendStatics(d, b);
8922 };
8923 return function (d, b) {
8924 extendStatics(d, b);
8925 function __() { this.constructor = d; }
8926 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
8927 };
8928})();
8929var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
8930 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
8931 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
8932 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
8933 return c > 3 && r && Object.defineProperty(target, key, r), r;
8934};
8935
8936
8937var AgStackComponentsRegistry = /** @class */ (function (_super) {
8938 __extends(AgStackComponentsRegistry, _super);
8939 function AgStackComponentsRegistry() {
8940 var _this = _super !== null && _super.apply(this, arguments) || this;
8941 _this.componentsMappedByName = {};
8942 return _this;
8943 }
8944 AgStackComponentsRegistry.prototype.setupComponents = function (components) {
8945 var _this = this;
8946 if (components) {
8947 components.forEach(function (componentMeta) { return _this.addComponent(componentMeta); });
8948 }
8949 };
8950 AgStackComponentsRegistry.prototype.addComponent = function (componentMeta) {
8951 // get name of the class as a string
8952 // let className = getNameOfClass(ComponentClass);
8953 // insert a dash after every capital letter
8954 // let classEscaped = className.replace(/([A-Z])/g, "-$1").toLowerCase();
8955 var classEscaped = componentMeta.componentName.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
8956 // put all to upper case
8957 var classUpperCase = classEscaped.toUpperCase();
8958 // finally store
8959 this.componentsMappedByName[classUpperCase] = componentMeta.componentClass;
8960 };
8961 AgStackComponentsRegistry.prototype.getComponentClass = function (htmlTag) {
8962 return this.componentsMappedByName[htmlTag];
8963 };
8964 AgStackComponentsRegistry = __decorate([
8965 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('agStackComponentsRegistry')
8966 ], AgStackComponentsRegistry);
8967 return AgStackComponentsRegistry;
8968}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
8969
8970
8971
8972
8973
8974/***/ }),
8975/* 33 */
8976/***/ (function(module, __webpack_exports__, __webpack_require__) {
8977
8978"use strict";
8979__webpack_require__.r(__webpack_exports__);
8980/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColDefUtil", function() { return ColDefUtil; });
8981/**
8982 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
8983 * @version v27.3.0
8984 * @link https://www.ag-grid.com/
8985 * @license MIT
8986 */
8987var __read = (undefined && undefined.__read) || function (o, n) {
8988 var m = typeof Symbol === "function" && o[Symbol.iterator];
8989 if (!m) return o;
8990 var i = m.call(o), r, ar = [], e;
8991 try {
8992 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8993 }
8994 catch (error) { e = { error: error }; }
8995 finally {
8996 try {
8997 if (r && !r.done && (m = i["return"])) m.call(i);
8998 }
8999 finally { if (e) throw e.error; }
9000 }
9001 return ar;
9002};
9003var __spread = (undefined && undefined.__spread) || function () {
9004 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
9005 return ar;
9006};
9007var ColDefUtil = /** @class */ (function () {
9008 function ColDefUtil() {
9009 }
9010 ColDefUtil.STRING_PROPERTIES = [
9011 'headerName',
9012 'columnGroupShow',
9013 'headerClass',
9014 'toolPanelClass',
9015 'headerValueGetter',
9016 'pivotKeys',
9017 'groupId',
9018 'colId',
9019 'sort',
9020 'initialSort',
9021 'field',
9022 'type',
9023 'tooltipComponent',
9024 'tooltipField',
9025 'headerTooltip',
9026 'cellClass',
9027 'showRowGroup',
9028 'filter',
9029 'initialAggFunc',
9030 'defaultAggFunc',
9031 'aggFunc',
9032 'pinned',
9033 'initialPinned',
9034 'chartDataType',
9035 'cellEditorPopupPosition'
9036 ];
9037 ColDefUtil.OBJECT_PROPERTIES = [
9038 'headerGroupComponent',
9039 'headerGroupComponentFramework',
9040 'headerGroupComponentParams',
9041 'cellStyle',
9042 'cellRenderer',
9043 'cellRendererParams',
9044 'cellRendererFramework',
9045 'cellEditor',
9046 'cellEditorFramework',
9047 'cellEditorParams',
9048 'pinnedRowCellRendererFramework',
9049 'pinnedRowCellRendererParams',
9050 'filterFramework',
9051 'filterParams',
9052 'pivotValueColumn',
9053 'headerComponent',
9054 'headerComponentFramework',
9055 'headerComponentParams',
9056 'floatingFilterComponent',
9057 'floatingFilterComponentParams',
9058 'floatingFilterComponentFramework',
9059 'floatingFilterFramework',
9060 'tooltipComponent',
9061 'tooltipComponentParams',
9062 'tooltipComponentFramework',
9063 'refData',
9064 'columnsMenuParams'
9065 ];
9066 ColDefUtil.ARRAY_PROPERTIES = [
9067 'children',
9068 'sortingOrder',
9069 'allowedAggFuncs',
9070 'menuTabs',
9071 'pivotTotalColumnIds',
9072 'cellClassRules',
9073 'icons'
9074 ];
9075 ColDefUtil.NUMBER_PROPERTIES = [
9076 'sortedAt',
9077 'sortIndex',
9078 'initialSortIndex',
9079 'flex',
9080 'initialFlex',
9081 'width',
9082 'initialWidth',
9083 'minWidth',
9084 'maxWidth',
9085 'rowGroupIndex',
9086 'initialRowGroupIndex',
9087 'pivotIndex',
9088 'initialPivotIndex'
9089 ];
9090 ColDefUtil.BOOLEAN_PROPERTIES = [
9091 'suppressCellFlash',
9092 'suppressColumnsToolPanel',
9093 'suppressFiltersToolPanel',
9094 'openByDefault',
9095 'marryChildren',
9096 'hide',
9097 'initialHide',
9098 'rowGroup',
9099 'initialRowGroup',
9100 'pivot',
9101 'initialPivot',
9102 'checkboxSelection',
9103 'headerCheckboxSelection',
9104 'headerCheckboxSelectionFilteredOnly',
9105 'suppressMenu',
9106 'suppressMovable',
9107 'lockPosition',
9108 'lockVisible',
9109 'lockPinned',
9110 'unSortIcon',
9111 'suppressSizeToFit',
9112 'suppressAutoSize',
9113 'enableRowGroup',
9114 'enablePivot',
9115 'enableValue',
9116 'editable',
9117 'suppressPaste',
9118 'suppressNavigable',
9119 'enableCellChangeFlash',
9120 'rowDrag',
9121 'dndSource',
9122 'autoHeight',
9123 'wrapText',
9124 'sortable',
9125 'resizable',
9126 'singleClickEdit',
9127 'floatingFilter',
9128 'cellEditorPopup',
9129 'suppressFillHandle'
9130 ];
9131 ColDefUtil.FUNCTION_PROPERTIES = [
9132 'dndSourceOnRowDrag',
9133 'valueGetter',
9134 'valueSetter',
9135 'filterValueGetter',
9136 'keyCreator',
9137 'pinnedRowCellRenderer',
9138 'valueFormatter',
9139 'pinnedRowValueFormatter',
9140 'valueParser',
9141 'comparator',
9142 'equals',
9143 'pivotComparator',
9144 'suppressKeyboardEvent',
9145 'suppressHeaderKeyboardEvent',
9146 'colSpan',
9147 'rowSpan',
9148 'getQuickFilterText',
9149 'newValueHandler',
9150 'onCellValueChanged',
9151 'onCellClicked',
9152 'onCellDoubleClicked',
9153 'onCellContextMenu',
9154 'rowDragText',
9155 'tooltipValueGetter',
9156 'tooltipComponent',
9157 'tooltipComponentFramework',
9158 'cellRendererSelector',
9159 'cellEditorSelector'
9160 ];
9161 ColDefUtil.ALL_PROPERTIES = __spread(ColDefUtil.ARRAY_PROPERTIES, ColDefUtil.OBJECT_PROPERTIES, ColDefUtil.STRING_PROPERTIES, ColDefUtil.NUMBER_PROPERTIES, ColDefUtil.FUNCTION_PROPERTIES, ColDefUtil.BOOLEAN_PROPERTIES);
9162 // used when doing property checks - this causes noise when using frameworks which can add their own fw specific
9163 // properties to colDefs, gridOptions etc
9164 ColDefUtil.FRAMEWORK_PROPERTIES = [
9165 '__ob__',
9166 '__v_skip',
9167 '__metadata__',
9168 'mappedColumnProperties',
9169 'hasChildColumns',
9170 'toColDef',
9171 'createColDefFromGridColumn'
9172 ];
9173 return ColDefUtil;
9174}());
9175
9176
9177
9178
9179
9180/***/ }),
9181/* 34 */
9182/***/ (function(module, __webpack_exports__, __webpack_require__) {
9183
9184"use strict";
9185__webpack_require__.r(__webpack_exports__);
9186/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UserComponentRegistry", function() { return UserComponentRegistry; });
9187/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
9188/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
9189/* harmony import */ var _filter_floating_provided_readOnlyFloatingFilter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(35);
9190/* harmony import */ var _filter_provided_date_dateFilter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(58);
9191/* harmony import */ var _filter_provided_date_dateFloatingFilter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(73);
9192/* harmony import */ var _filter_provided_date_defaultDateComponent__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(75);
9193/* harmony import */ var _filter_provided_number_numberFilter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(76);
9194/* harmony import */ var _filter_provided_number_numberFloatingFilter__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(77);
9195/* harmony import */ var _filter_provided_text_textFilter__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(79);
9196/* harmony import */ var _filter_provided_text_textFloatingFilter__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(80);
9197/* harmony import */ var _headerRendering_cells_column_headerComp__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(81);
9198/* harmony import */ var _headerRendering_cells_columnGroup_headerGroupComp__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(83);
9199/* harmony import */ var _rendering_cellEditors_largeTextCellEditor__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(84);
9200/* harmony import */ var _rendering_cellEditors_popupSelectCellEditor__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(86);
9201/* harmony import */ var _rendering_cellEditors_popupTextCellEditor__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(88);
9202/* harmony import */ var _rendering_cellEditors_selectCellEditor__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(87);
9203/* harmony import */ var _rendering_cellEditors_textCellEditor__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(89);
9204/* harmony import */ var _rendering_cellRenderers_animateShowChangeCellRenderer__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(90);
9205/* harmony import */ var _rendering_cellRenderers_animateSlideCellRenderer__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(91);
9206/* harmony import */ var _rendering_cellRenderers_groupCellRenderer__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(92);
9207/* harmony import */ var _rendering_cellRenderers_loadingCellRenderer__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(98);
9208/* harmony import */ var _rendering_overlays_loadingOverlayComponent__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(99);
9209/* harmony import */ var _rendering_overlays_noRowsOverlayComponent__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(100);
9210/* harmony import */ var _rendering_tooltipComponent__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(101);
9211/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(14);
9212/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(13);
9213/**
9214 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
9215 * @version v27.3.0
9216 * @link https://www.ag-grid.com/
9217 * @license MIT
9218 */
9219var __extends = (undefined && undefined.__extends) || (function () {
9220 var extendStatics = function (d, b) {
9221 extendStatics = Object.setPrototypeOf ||
9222 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
9223 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
9224 return extendStatics(d, b);
9225 };
9226 return function (d, b) {
9227 extendStatics(d, b);
9228 function __() { this.constructor = d; }
9229 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
9230 };
9231})();
9232var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
9233 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
9234 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
9235 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
9236 return c > 3 && r && Object.defineProperty(target, key, r), r;
9237};
9238
9239
9240
9241
9242
9243
9244
9245
9246
9247
9248
9249
9250
9251
9252
9253
9254
9255
9256
9257
9258
9259
9260
9261
9262
9263
9264var UserComponentRegistry = /** @class */ (function (_super) {
9265 __extends(UserComponentRegistry, _super);
9266 function UserComponentRegistry() {
9267 var _this = _super !== null && _super.apply(this, arguments) || this;
9268 _this.agGridDefaults = {
9269 //date
9270 agDateInput: _filter_provided_date_defaultDateComponent__WEBPACK_IMPORTED_MODULE_5__["DefaultDateComponent"],
9271 //header
9272 agColumnHeader: _headerRendering_cells_column_headerComp__WEBPACK_IMPORTED_MODULE_10__["HeaderComp"],
9273 agColumnGroupHeader: _headerRendering_cells_columnGroup_headerGroupComp__WEBPACK_IMPORTED_MODULE_11__["HeaderGroupComp"],
9274 //floating filters
9275 agTextColumnFloatingFilter: _filter_provided_text_textFloatingFilter__WEBPACK_IMPORTED_MODULE_9__["TextFloatingFilter"],
9276 agNumberColumnFloatingFilter: _filter_provided_number_numberFloatingFilter__WEBPACK_IMPORTED_MODULE_7__["NumberFloatingFilter"],
9277 agDateColumnFloatingFilter: _filter_provided_date_dateFloatingFilter__WEBPACK_IMPORTED_MODULE_4__["DateFloatingFilter"],
9278 agReadOnlyFloatingFilter: _filter_floating_provided_readOnlyFloatingFilter__WEBPACK_IMPORTED_MODULE_2__["ReadOnlyFloatingFilter"],
9279 // renderers
9280 agAnimateShowChangeCellRenderer: _rendering_cellRenderers_animateShowChangeCellRenderer__WEBPACK_IMPORTED_MODULE_17__["AnimateShowChangeCellRenderer"],
9281 agAnimateSlideCellRenderer: _rendering_cellRenderers_animateSlideCellRenderer__WEBPACK_IMPORTED_MODULE_18__["AnimateSlideCellRenderer"],
9282 agGroupCellRenderer: _rendering_cellRenderers_groupCellRenderer__WEBPACK_IMPORTED_MODULE_19__["GroupCellRenderer"],
9283 agGroupRowRenderer: _rendering_cellRenderers_groupCellRenderer__WEBPACK_IMPORTED_MODULE_19__["GroupCellRenderer"],
9284 agLoadingCellRenderer: _rendering_cellRenderers_loadingCellRenderer__WEBPACK_IMPORTED_MODULE_20__["LoadingCellRenderer"],
9285 //editors
9286 agCellEditor: _rendering_cellEditors_textCellEditor__WEBPACK_IMPORTED_MODULE_16__["TextCellEditor"],
9287 agTextCellEditor: _rendering_cellEditors_textCellEditor__WEBPACK_IMPORTED_MODULE_16__["TextCellEditor"],
9288 agSelectCellEditor: _rendering_cellEditors_selectCellEditor__WEBPACK_IMPORTED_MODULE_15__["SelectCellEditor"],
9289 agPopupTextCellEditor: _rendering_cellEditors_popupTextCellEditor__WEBPACK_IMPORTED_MODULE_14__["PopupTextCellEditor"],
9290 agPopupSelectCellEditor: _rendering_cellEditors_popupSelectCellEditor__WEBPACK_IMPORTED_MODULE_13__["PopupSelectCellEditor"],
9291 agLargeTextCellEditor: _rendering_cellEditors_largeTextCellEditor__WEBPACK_IMPORTED_MODULE_12__["LargeTextCellEditor"],
9292 //filter
9293 agTextColumnFilter: _filter_provided_text_textFilter__WEBPACK_IMPORTED_MODULE_8__["TextFilter"],
9294 agNumberColumnFilter: _filter_provided_number_numberFilter__WEBPACK_IMPORTED_MODULE_6__["NumberFilter"],
9295 agDateColumnFilter: _filter_provided_date_dateFilter__WEBPACK_IMPORTED_MODULE_3__["DateFilter"],
9296 //overlays
9297 agLoadingOverlay: _rendering_overlays_loadingOverlayComponent__WEBPACK_IMPORTED_MODULE_21__["LoadingOverlayComponent"],
9298 agNoRowsOverlay: _rendering_overlays_noRowsOverlayComponent__WEBPACK_IMPORTED_MODULE_22__["NoRowsOverlayComponent"],
9299 // tooltips
9300 agTooltipComponent: _rendering_tooltipComponent__WEBPACK_IMPORTED_MODULE_23__["TooltipComponent"]
9301 };
9302 _this.agDeprecatedNames = {
9303 set: {
9304 newComponentName: 'agSetColumnFilter',
9305 propertyHolder: 'filter'
9306 },
9307 text: {
9308 newComponentName: 'agTextColumnFilter',
9309 propertyHolder: 'filter'
9310 },
9311 number: {
9312 newComponentName: 'agNumberColumnFilter',
9313 propertyHolder: 'filter'
9314 },
9315 date: {
9316 newComponentName: 'agDateColumnFilter',
9317 propertyHolder: 'filter'
9318 },
9319 group: {
9320 newComponentName: 'agGroupCellRenderer',
9321 propertyHolder: 'cellRenderer'
9322 },
9323 animateShowChange: {
9324 newComponentName: 'agAnimateShowChangeCellRenderer',
9325 propertyHolder: 'cellRenderer'
9326 },
9327 animateSlide: {
9328 newComponentName: 'agAnimateSlideCellRenderer',
9329 propertyHolder: 'cellRenderer'
9330 },
9331 select: {
9332 newComponentName: 'agSelectCellEditor',
9333 propertyHolder: 'cellEditor'
9334 },
9335 largeText: {
9336 newComponentName: 'agLargeTextCellEditor',
9337 propertyHolder: 'cellEditor'
9338 },
9339 popupSelect: {
9340 newComponentName: 'agPopupSelectCellEditor',
9341 propertyHolder: 'cellEditor'
9342 },
9343 popupText: {
9344 newComponentName: 'agPopupTextCellEditor',
9345 propertyHolder: 'cellEditor'
9346 },
9347 richSelect: {
9348 newComponentName: 'agRichSelectCellEditor',
9349 propertyHolder: 'cellEditor'
9350 },
9351 headerComponent: {
9352 newComponentName: 'agColumnHeader',
9353 propertyHolder: 'headerComponent'
9354 }
9355 };
9356 _this.jsComps = {};
9357 _this.fwComps = {};
9358 return _this;
9359 }
9360 UserComponentRegistry.prototype.init = function () {
9361 var _this = this;
9362 if (this.gridOptions.components != null) {
9363 Object(_utils_object__WEBPACK_IMPORTED_MODULE_25__["iterateObject"])(this.gridOptions.components, function (key, component) { return _this.registerJsComponent(key, component); });
9364 }
9365 if (this.gridOptions.frameworkComponents != null) {
9366 Object(_utils_object__WEBPACK_IMPORTED_MODULE_25__["iterateObject"])(this.gridOptions.frameworkComponents, function (key, component) { return _this.registerFwComponent(key, component); });
9367 }
9368 };
9369 UserComponentRegistry.prototype.registerDefaultComponent = function (rawName, component) {
9370 var name = this.translateIfDeprecated(rawName);
9371 if (this.agGridDefaults[name]) {
9372 console.error("Trying to overwrite a default component. You should call registerComponent");
9373 return;
9374 }
9375 this.agGridDefaults[name] = component;
9376 };
9377 UserComponentRegistry.prototype.registerJsComponent = function (rawName, component) {
9378 var name = this.translateIfDeprecated(rawName);
9379 if (this.fwComps[name]) {
9380 console.error("Trying to register a component that you have already registered for frameworks: " + name);
9381 return;
9382 }
9383 this.jsComps[name] = component;
9384 };
9385 /**
9386 * B the business interface (ie IHeader)
9387 * A the agGridComponent interface (ie IHeaderComp). The final object acceptable by ag-grid
9388 */
9389 UserComponentRegistry.prototype.registerFwComponent = function (rawName, component) {
9390 var warningMessage = "AG Grid: As of v27, registering components via grid property frameworkComponents is deprecated. Instead register both JavaScript AND Framework Components via the components property.";
9391 Object(_utils_function__WEBPACK_IMPORTED_MODULE_24__["doOnce"])(function () { return console.warn(warningMessage); }, "UserComponentRegistry.frameworkComponentsDeprecated");
9392 var name = this.translateIfDeprecated(rawName);
9393 this.fwComps[name] = component;
9394 };
9395 UserComponentRegistry.prototype.retrieve = function (rawName) {
9396 var name = this.translateIfDeprecated(rawName);
9397 var createResult = function (component, componentFromFramework) { return ({ componentFromFramework: componentFromFramework, component: component }); };
9398 // FrameworkOverrides.frameworkComponent() is used in two locations:
9399 // 1) for Vue, user provided components get registered via a framework specific way.
9400 // 2) for React, it's how the React UI provides alternative default components (eg GroupCellRenderer and DetailCellRenderer)
9401 var registeredViaFrameworkComp = this.getFrameworkOverrides().frameworkComponent(name);
9402 if (registeredViaFrameworkComp != null) {
9403 return createResult(registeredViaFrameworkComp, true);
9404 }
9405 var frameworkComponent = this.fwComps[name];
9406 if (frameworkComponent) {
9407 return createResult(frameworkComponent, true);
9408 }
9409 var jsComponent = this.jsComps[name];
9410 if (jsComponent) {
9411 var isFwkComp = this.getFrameworkOverrides().isFrameworkComponent(jsComponent);
9412 return createResult(jsComponent, isFwkComp);
9413 }
9414 var defaultComponent = this.agGridDefaults[name];
9415 if (defaultComponent) {
9416 return createResult(defaultComponent, false);
9417 }
9418 if (Object.keys(this.agGridDefaults).indexOf(name) < 0) {
9419 console.warn("AG Grid: Looking for component [" + name + "] but it wasn't found.");
9420 }
9421 return null;
9422 };
9423 UserComponentRegistry.prototype.translateIfDeprecated = function (raw) {
9424 var deprecatedInfo = this.agDeprecatedNames[raw];
9425 if (deprecatedInfo != null) {
9426 Object(_utils_function__WEBPACK_IMPORTED_MODULE_24__["doOnce"])(function () {
9427 console.warn("ag-grid. Since v15.0 component names have been renamed to be namespaced. You should rename " + deprecatedInfo.propertyHolder + ":" + raw + " to " + deprecatedInfo.propertyHolder + ":" + deprecatedInfo.newComponentName);
9428 }, 'DEPRECATE_COMPONENT_' + raw);
9429 return deprecatedInfo.newComponentName;
9430 }
9431 return raw;
9432 };
9433 __decorate([
9434 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridOptions')
9435 ], UserComponentRegistry.prototype, "gridOptions", void 0);
9436 __decorate([
9437 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('agComponentUtils')
9438 ], UserComponentRegistry.prototype, "agComponentUtils", void 0);
9439 __decorate([
9440 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
9441 ], UserComponentRegistry.prototype, "init", null);
9442 UserComponentRegistry = __decorate([
9443 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('userComponentRegistry')
9444 ], UserComponentRegistry);
9445 return UserComponentRegistry;
9446}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
9447
9448
9449
9450
9451
9452/***/ }),
9453/* 35 */
9454/***/ (function(module, __webpack_exports__, __webpack_require__) {
9455
9456"use strict";
9457__webpack_require__.r(__webpack_exports__);
9458/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ReadOnlyFloatingFilter", function() { return ReadOnlyFloatingFilter; });
9459/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
9460/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
9461/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
9462/**
9463 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
9464 * @version v27.3.0
9465 * @link https://www.ag-grid.com/
9466 * @license MIT
9467 */
9468var __extends = (undefined && undefined.__extends) || (function () {
9469 var extendStatics = function (d, b) {
9470 extendStatics = Object.setPrototypeOf ||
9471 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
9472 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
9473 return extendStatics(d, b);
9474 };
9475 return function (d, b) {
9476 extendStatics(d, b);
9477 function __() { this.constructor = d; }
9478 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
9479 };
9480})();
9481var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
9482 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
9483 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
9484 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
9485 return c > 3 && r && Object.defineProperty(target, key, r), r;
9486};
9487
9488
9489
9490// optional floating filter for user provided filters - instead of providing a floating filter,
9491// they can provide a getModelAsString() method on the filter instead. this class just displays
9492// the string returned from getModelAsString()
9493var ReadOnlyFloatingFilter = /** @class */ (function (_super) {
9494 __extends(ReadOnlyFloatingFilter, _super);
9495 function ReadOnlyFloatingFilter() {
9496 return _super.call(this, /* html */ "\n <div class=\"ag-floating-filter-input\" role=\"presentation\">\n <ag-input-text-field ref=\"eFloatingFilterText\"></ag-input-text-field>\n </div>") || this;
9497 }
9498 // this is a user component, and IComponent has "public destroy()" as part of the interface.
9499 // so we need to override destroy() just to make the method public.
9500 ReadOnlyFloatingFilter.prototype.destroy = function () {
9501 _super.prototype.destroy.call(this);
9502 };
9503 ReadOnlyFloatingFilter.prototype.init = function (params) {
9504 this.params = params;
9505 var displayName = this.columnModel.getDisplayNameForColumn(params.column, 'header', true);
9506 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
9507 this.eFloatingFilterText
9508 .setDisabled(true)
9509 .setInputAriaLabel(displayName + " " + translate('ariaFilterInput', 'Filter Input'));
9510 };
9511 ReadOnlyFloatingFilter.prototype.onParentModelChanged = function (parentModel) {
9512 var _this = this;
9513 if (!parentModel) {
9514 this.eFloatingFilterText.setValue('');
9515 return;
9516 }
9517 this.params.parentFilterInstance(function (filterInstance) {
9518 // it would be nice to check if getModelAsString was present before creating this component,
9519 // however that is not possible, as React Hooks and VueJS don't attached the methods to the Filter until
9520 // AFTER the filter is created, not allowing inspection before this (we create floating filters as columns
9521 // are drawn, but the parent filters are only created when needed).
9522 if (filterInstance.getModelAsString) {
9523 var modelAsString = filterInstance.getModelAsString(parentModel);
9524 _this.eFloatingFilterText.setValue(modelAsString);
9525 }
9526 });
9527 };
9528 __decorate([
9529 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eFloatingFilterText')
9530 ], ReadOnlyFloatingFilter.prototype, "eFloatingFilterText", void 0);
9531 __decorate([
9532 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('columnModel')
9533 ], ReadOnlyFloatingFilter.prototype, "columnModel", void 0);
9534 return ReadOnlyFloatingFilter;
9535}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
9536
9537
9538
9539
9540
9541/***/ }),
9542/* 36 */
9543/***/ (function(module, __webpack_exports__, __webpack_require__) {
9544
9545"use strict";
9546__webpack_require__.r(__webpack_exports__);
9547/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CssClassManager", function() { return CssClassManager; });
9548/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Component", function() { return Component; });
9549/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
9550/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
9551/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(37);
9552/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42);
9553/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(14);
9554/* harmony import */ var _customTooltipFeature__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(56);
9555/**
9556 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
9557 * @version v27.3.0
9558 * @link https://www.ag-grid.com/
9559 * @license MIT
9560 */
9561var __extends = (undefined && undefined.__extends) || (function () {
9562 var extendStatics = function (d, b) {
9563 extendStatics = Object.setPrototypeOf ||
9564 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
9565 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
9566 return extendStatics(d, b);
9567 };
9568 return function (d, b) {
9569 extendStatics(d, b);
9570 function __() { this.constructor = d; }
9571 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
9572 };
9573})();
9574var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
9575 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
9576 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
9577 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
9578 return c > 3 && r && Object.defineProperty(target, key, r), r;
9579};
9580
9581
9582
9583
9584
9585
9586var compIdSequence = new _utils__WEBPACK_IMPORTED_MODULE_2__["NumberSequence"]();
9587var CssClassManager = /** @class */ (function () {
9588 function CssClassManager(getGui) {
9589 // to minimise DOM hits, we only apply CSS classes if they have changed. as adding a CSS class that is already
9590 // there, or removing one that wasn't present, all takes CPU.
9591 this.cssClassStates = {};
9592 this.getGui = getGui;
9593 }
9594 CssClassManager.prototype.addCssClass = function (className) {
9595 var _this = this;
9596 var list = (className || '').split(' ');
9597 if (list.length > 1) {
9598 list.forEach(function (cls) { return _this.addCssClass(cls); });
9599 return;
9600 }
9601 var updateNeeded = this.cssClassStates[className] !== true;
9602 if (updateNeeded && className.length) {
9603 this.getGui().classList.add(className);
9604 this.cssClassStates[className] = true;
9605 }
9606 };
9607 CssClassManager.prototype.removeCssClass = function (className) {
9608 var _this = this;
9609 var list = (className || '').split(' ');
9610 if (list.length > 1) {
9611 list.forEach(function (cls) { return _this.removeCssClass(cls); });
9612 return;
9613 }
9614 var updateNeeded = this.cssClassStates[className] !== false;
9615 if (updateNeeded && className.length) {
9616 this.getGui().classList.remove(className);
9617 this.cssClassStates[className] = false;
9618 }
9619 };
9620 CssClassManager.prototype.containsCssClass = function (className) {
9621 return this.getGui().classList.contains(className);
9622 };
9623 CssClassManager.prototype.addOrRemoveCssClass = function (className, addOrRemove) {
9624 var _this = this;
9625 var list = (className || '').split(' ');
9626 if (list.length > 1) {
9627 list.forEach(function (cls) { return _this.addOrRemoveCssClass(cls, addOrRemove); });
9628 return;
9629 }
9630 var updateNeeded = this.cssClassStates[className] !== addOrRemove;
9631 if (updateNeeded && className.length) {
9632 this.getGui().classList.toggle(className, addOrRemove);
9633 this.cssClassStates[className] = addOrRemove;
9634 }
9635 };
9636 return CssClassManager;
9637}());
9638
9639var Component = /** @class */ (function (_super) {
9640 __extends(Component, _super);
9641 function Component(template) {
9642 var _this = _super.call(this) || this;
9643 // if false, then CSS class "ag-hidden" is applied, which sets "display: none"
9644 _this.displayed = true;
9645 // if false, then CSS class "ag-invisible" is applied, which sets "visibility: hidden"
9646 _this.visible = true;
9647 // unique id for this row component. this is used for getting a reference to the HTML dom.
9648 // we cannot use the RowNode id as this is not unique (due to animation, old rows can be lying
9649 // around as we create a new rowComp instance for the same row node).
9650 _this.compId = compIdSequence.next();
9651 _this.cssClassManager = new CssClassManager(function () { return _this.eGui; });
9652 if (template) {
9653 _this.setTemplate(template);
9654 }
9655 return _this;
9656 }
9657 Component.prototype.preConstructOnComponent = function () {
9658 this.usingBrowserTooltips = this.gridOptionsWrapper.isEnableBrowserTooltips();
9659 };
9660 Component.prototype.getCompId = function () {
9661 return this.compId;
9662 };
9663 Component.prototype.getTooltipParams = function () {
9664 return {
9665 value: this.tooltipText,
9666 location: 'UNKNOWN'
9667 };
9668 };
9669 Component.prototype.setTooltip = function (newTooltipText) {
9670 var _this = this;
9671 var removeTooltip = function () {
9672 if (_this.usingBrowserTooltips) {
9673 _this.getGui().removeAttribute('title');
9674 }
9675 else {
9676 _this.tooltipFeature = _this.destroyBean(_this.tooltipFeature);
9677 }
9678 };
9679 var addTooltip = function () {
9680 if (_this.usingBrowserTooltips) {
9681 _this.getGui().setAttribute('title', _this.tooltipText);
9682 }
9683 else {
9684 _this.tooltipFeature = _this.createBean(new _customTooltipFeature__WEBPACK_IMPORTED_MODULE_5__["CustomTooltipFeature"](_this));
9685 }
9686 };
9687 if (this.tooltipText != newTooltipText) {
9688 if (this.tooltipText) {
9689 removeTooltip();
9690 }
9691 if (newTooltipText != null) {
9692 this.tooltipText = newTooltipText;
9693 if (this.tooltipText) {
9694 addTooltip();
9695 }
9696 }
9697 }
9698 };
9699 // for registered components only, eg creates AgCheckbox instance from ag-checkbox HTML tag
9700 Component.prototype.createChildComponentsFromTags = function (parentNode, paramsMap) {
9701 var _this = this;
9702 // we MUST take a copy of the list first, as the 'swapComponentForNode' adds comments into the DOM
9703 // which messes up the traversal order of the children.
9704 var childNodeList = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["copyNodeList"])(parentNode.childNodes);
9705 childNodeList.forEach(function (childNode) {
9706 if (!(childNode instanceof HTMLElement)) {
9707 return;
9708 }
9709 var childComp = _this.createComponentFromElement(childNode, function (childComp) {
9710 // copy over all attributes, including css classes, so any attributes user put on the tag
9711 // wll be carried across
9712 var childGui = childComp.getGui();
9713 if (childGui) {
9714 _this.copyAttributesFromNode(childNode, childComp.getGui());
9715 }
9716 }, paramsMap);
9717 if (childComp) {
9718 if (childComp.addItems && childNode.children.length) {
9719 _this.createChildComponentsFromTags(childNode, paramsMap);
9720 // converting from HTMLCollection to Array
9721 var items = Array.prototype.slice.call(childNode.children);
9722 childComp.addItems(items);
9723 }
9724 // replace the tag (eg ag-checkbox) with the proper HTMLElement (eg 'div') in the dom
9725 _this.swapComponentForNode(childComp, parentNode, childNode);
9726 }
9727 else if (childNode.childNodes) {
9728 _this.createChildComponentsFromTags(childNode, paramsMap);
9729 }
9730 });
9731 };
9732 Component.prototype.createComponentFromElement = function (element, afterPreCreateCallback, paramsMap) {
9733 var key = element.nodeName;
9734 var componentParams = paramsMap ? paramsMap[element.getAttribute('ref')] : undefined;
9735 var ComponentClass = this.agStackComponentsRegistry.getComponentClass(key);
9736 if (ComponentClass) {
9737 Component.elementGettingCreated = element;
9738 var newComponent = new ComponentClass(componentParams);
9739 newComponent.setParentComponent(this);
9740 this.createBean(newComponent, null, afterPreCreateCallback);
9741 return newComponent;
9742 }
9743 return null;
9744 };
9745 Component.prototype.copyAttributesFromNode = function (source, dest) {
9746 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["iterateNamedNodeMap"])(source.attributes, function (name, value) { return dest.setAttribute(name, value); });
9747 };
9748 Component.prototype.swapComponentForNode = function (newComponent, parentNode, childNode) {
9749 var eComponent = newComponent.getGui();
9750 parentNode.replaceChild(eComponent, childNode);
9751 parentNode.insertBefore(document.createComment(childNode.nodeName), eComponent);
9752 this.addDestroyFunc(this.destroyBean.bind(this, newComponent));
9753 this.swapInComponentForQuerySelectors(newComponent, childNode);
9754 };
9755 Component.prototype.swapInComponentForQuerySelectors = function (newComponent, childNode) {
9756 var thisNoType = this;
9757 this.iterateOverQuerySelectors(function (querySelector) {
9758 if (thisNoType[querySelector.attributeName] === childNode) {
9759 thisNoType[querySelector.attributeName] = newComponent;
9760 }
9761 });
9762 };
9763 Component.prototype.iterateOverQuerySelectors = function (action) {
9764 var thisPrototype = Object.getPrototypeOf(this);
9765 while (thisPrototype != null) {
9766 var metaData = thisPrototype.__agComponentMetaData;
9767 var currentProtoName = Object(_utils_function__WEBPACK_IMPORTED_MODULE_4__["getFunctionName"])(thisPrototype.constructor);
9768 if (metaData && metaData[currentProtoName] && metaData[currentProtoName].querySelectors) {
9769 metaData[currentProtoName].querySelectors.forEach(function (querySelector) { return action(querySelector); });
9770 }
9771 thisPrototype = Object.getPrototypeOf(thisPrototype);
9772 }
9773 };
9774 Component.prototype.setTemplate = function (template, paramsMap) {
9775 var eGui = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["loadTemplate"])(template);
9776 this.setTemplateFromElement(eGui, paramsMap);
9777 };
9778 Component.prototype.setTemplateFromElement = function (element, paramsMap) {
9779 this.eGui = element;
9780 this.eGui.__agComponent = this;
9781 this.wireQuerySelectors();
9782 // context will not be available when user sets template in constructor
9783 if (!!this.getContext()) {
9784 this.createChildComponentsFromTags(this.getGui(), paramsMap);
9785 }
9786 };
9787 Component.prototype.createChildComponentsPreConstruct = function () {
9788 // ui exists if user sets template in constructor. when this happens, we have to wait for the context
9789 // to be autoWired first before we can create child components.
9790 if (!!this.getGui()) {
9791 this.createChildComponentsFromTags(this.getGui());
9792 }
9793 };
9794 Component.prototype.wireQuerySelectors = function () {
9795 var _this = this;
9796 if (!this.eGui) {
9797 return;
9798 }
9799 var thisNoType = this;
9800 this.iterateOverQuerySelectors(function (querySelector) {
9801 var setResult = function (result) { return thisNoType[querySelector.attributeName] = result; };
9802 // if it's a ref selector, and match is on top level component, we return
9803 // the element. otherwise no way of components putting ref=xxx on the top
9804 // level element as querySelector only looks at children.
9805 var topLevelRefMatch = querySelector.refSelector
9806 && _this.eGui.getAttribute('ref') === querySelector.refSelector;
9807 if (topLevelRefMatch) {
9808 setResult(_this.eGui);
9809 }
9810 else {
9811 // otherwise use querySelector, which looks at children
9812 var resultOfQuery = _this.eGui.querySelector(querySelector.querySelector);
9813 if (resultOfQuery) {
9814 setResult(resultOfQuery.__agComponent || resultOfQuery);
9815 }
9816 }
9817 });
9818 };
9819 Component.prototype.getGui = function () {
9820 return this.eGui;
9821 };
9822 Component.prototype.getFocusableElement = function () {
9823 return this.eGui;
9824 };
9825 Component.prototype.setParentComponent = function (component) {
9826 this.parentComponent = component;
9827 };
9828 Component.prototype.getParentComponent = function () {
9829 return this.parentComponent;
9830 };
9831 // this method is for older code, that wants to provide the gui element,
9832 // it is not intended for this to be in ag-Stack
9833 Component.prototype.setGui = function (eGui) {
9834 this.eGui = eGui;
9835 };
9836 Component.prototype.queryForHtmlElement = function (cssSelector) {
9837 return this.eGui.querySelector(cssSelector);
9838 };
9839 Component.prototype.queryForHtmlInputElement = function (cssSelector) {
9840 return this.eGui.querySelector(cssSelector);
9841 };
9842 Component.prototype.appendChild = function (newChild, container) {
9843 if (!container) {
9844 container = this.eGui;
9845 }
9846 if (newChild == null) {
9847 return;
9848 }
9849 if (Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["isNodeOrElement"])(newChild)) {
9850 container.appendChild(newChild);
9851 }
9852 else {
9853 var childComponent = newChild;
9854 container.appendChild(childComponent.getGui());
9855 this.addDestroyFunc(this.destroyBean.bind(this, childComponent));
9856 }
9857 };
9858 Component.prototype.isDisplayed = function () {
9859 return this.displayed;
9860 };
9861 Component.prototype.setVisible = function (visible) {
9862 if (visible !== this.visible) {
9863 this.visible = visible;
9864 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["setVisible"])(this.eGui, visible);
9865 }
9866 };
9867 Component.prototype.setDisplayed = function (displayed) {
9868 if (displayed !== this.displayed) {
9869 this.displayed = displayed;
9870 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["setDisplayed"])(this.eGui, displayed);
9871 var event_1 = {
9872 type: Component.EVENT_DISPLAYED_CHANGED,
9873 visible: this.displayed
9874 };
9875 this.dispatchEvent(event_1);
9876 }
9877 };
9878 Component.prototype.destroy = function () {
9879 if (this.tooltipFeature) {
9880 this.tooltipFeature = this.destroyBean(this.tooltipFeature);
9881 }
9882 _super.prototype.destroy.call(this);
9883 };
9884 Component.prototype.addGuiEventListener = function (event, listener) {
9885 var _this = this;
9886 this.eGui.addEventListener(event, listener);
9887 this.addDestroyFunc(function () { return _this.eGui.removeEventListener(event, listener); });
9888 };
9889 Component.prototype.addCssClass = function (className) {
9890 this.cssClassManager.addCssClass(className);
9891 };
9892 Component.prototype.removeCssClass = function (className) {
9893 this.cssClassManager.removeCssClass(className);
9894 };
9895 Component.prototype.containsCssClass = function (className) {
9896 return this.cssClassManager.containsCssClass(className);
9897 };
9898 Component.prototype.addOrRemoveCssClass = function (className, addOrRemove) {
9899 this.cssClassManager.addOrRemoveCssClass(className, addOrRemove);
9900 };
9901 Component.prototype.getAttribute = function (key) {
9902 var eGui = this.eGui;
9903 return eGui ? eGui.getAttribute(key) : null;
9904 };
9905 Component.prototype.getRefElement = function (refName) {
9906 return this.queryForHtmlElement("[ref=\"" + refName + "\"]");
9907 };
9908 Component.EVENT_DISPLAYED_CHANGED = 'displayedChanged';
9909 __decorate([
9910 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('agStackComponentsRegistry')
9911 ], Component.prototype, "agStackComponentsRegistry", void 0);
9912 __decorate([
9913 _context_context__WEBPACK_IMPORTED_MODULE_0__["PreConstruct"]
9914 ], Component.prototype, "preConstructOnComponent", null);
9915 __decorate([
9916 _context_context__WEBPACK_IMPORTED_MODULE_0__["PreConstruct"]
9917 ], Component.prototype, "createChildComponentsPreConstruct", null);
9918 return Component;
9919}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
9920
9921
9922
9923
9924
9925/***/ }),
9926/* 37 */
9927/***/ (function(module, __webpack_exports__, __webpack_require__) {
9928
9929"use strict";
9930__webpack_require__.r(__webpack_exports__);
9931/* harmony import */ var _color__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(38);
9932/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Color", function() { return _color__WEBPACK_IMPORTED_MODULE_0__["Color"]; });
9933
9934/* harmony import */ var _csv__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(39);
9935/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stringToArray", function() { return _csv__WEBPACK_IMPORTED_MODULE_1__["stringToArray"]; });
9936
9937/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(40);
9938/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "_", function() { return _utils__WEBPACK_IMPORTED_MODULE_2__["_"]; });
9939
9940/* harmony import */ var _numberSequence__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(53);
9941/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NumberSequence", function() { return _numberSequence__WEBPACK_IMPORTED_MODULE_3__["NumberSequence"]; });
9942
9943/* harmony import */ var _promise__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(54);
9944/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgPromiseStatus", function() { return _promise__WEBPACK_IMPORTED_MODULE_4__["AgPromiseStatus"]; });
9945
9946/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgPromise", function() { return _promise__WEBPACK_IMPORTED_MODULE_4__["AgPromise"]; });
9947
9948/* harmony import */ var _timer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(55);
9949/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Timer", function() { return _timer__WEBPACK_IMPORTED_MODULE_5__["Timer"]; });
9950
9951/**
9952 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
9953 * @version v27.3.0
9954 * @link https://www.ag-grid.com/
9955 * @license MIT
9956 */
9957
9958
9959
9960
9961
9962
9963
9964
9965
9966
9967/***/ }),
9968/* 38 */
9969/***/ (function(module, __webpack_exports__, __webpack_require__) {
9970
9971"use strict";
9972__webpack_require__.r(__webpack_exports__);
9973/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Color", function() { return Color; });
9974/**
9975 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
9976 * @version v27.3.0
9977 * @link https://www.ag-grid.com/
9978 * @license MIT
9979 */
9980var __read = (undefined && undefined.__read) || function (o, n) {
9981 var m = typeof Symbol === "function" && o[Symbol.iterator];
9982 if (!m) return o;
9983 var i = m.call(o), r, ar = [], e;
9984 try {
9985 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
9986 }
9987 catch (error) { e = { error: error }; }
9988 finally {
9989 try {
9990 if (r && !r.done && (m = i["return"])) m.call(i);
9991 }
9992 finally { if (e) throw e.error; }
9993 }
9994 return ar;
9995};
9996var Color = /** @class */ (function () {
9997 /**
9998 * Every color component should be in the [0, 1] range.
9999 * Some easing functions (such as elastic easing) can overshoot the target value by some amount.
10000 * So, when animating colors, if the source or target color components are already near
10001 * or at the edge of the allowed [0, 1] range, it is possible for the intermediate color
10002 * component value to end up outside of that range mid-animation. For this reason the constructor
10003 * performs range checking/constraining.
10004 * @param r Red component.
10005 * @param g Green component.
10006 * @param b Blue component.
10007 * @param a Alpha (opacity) component.
10008 */
10009 function Color(r, g, b, a) {
10010 if (a === void 0) { a = 1; }
10011 // NaN is treated as 0.
10012 this.r = Math.min(1, Math.max(0, r || 0));
10013 this.g = Math.min(1, Math.max(0, g || 0));
10014 this.b = Math.min(1, Math.max(0, b || 0));
10015 this.a = Math.min(1, Math.max(0, a || 0));
10016 }
10017 /**
10018 * The given string can be in one of the following formats:
10019 * - #rgb
10020 * - #rrggbb
10021 * - rgb(r, g, b)
10022 * - rgba(r, g, b, a)
10023 * - CSS color name such as 'white', 'orange', 'cyan', etc.
10024 * @param str
10025 */
10026 Color.fromString = function (str) {
10027 // hexadecimal notation
10028 if (str.indexOf('#') >= 0) { // there can be some leading whitespace
10029 return Color.fromHexString(str);
10030 }
10031 // color name
10032 var hex = Color.nameToHex[str];
10033 if (hex) {
10034 return Color.fromHexString(hex);
10035 }
10036 // rgb(a) notation
10037 if (str.indexOf('rgb') >= 0) {
10038 return Color.fromRgbaString(str);
10039 }
10040 throw new Error("Invalid color string: '" + str + "'");
10041 };
10042 // See https://drafts.csswg.org/css-color/#hex-notation
10043 Color.parseHex = function (input) {
10044 input = input.replace(/ /g, '').slice(1);
10045 var parts;
10046 switch (input.length) {
10047 case 6:
10048 case 8:
10049 parts = [];
10050 for (var i = 0; i < input.length; i += 2) {
10051 parts.push(parseInt("" + input[i] + input[i + 1], 16));
10052 }
10053 break;
10054 case 3:
10055 case 4:
10056 parts = input.split('').map(function (p) { return parseInt(p, 16); }).map(function (p) { return p + p * 16; });
10057 break;
10058 }
10059 if (parts.length >= 3) {
10060 if (parts.every(function (p) { return p >= 0; })) {
10061 if (parts.length === 3) {
10062 parts.push(255);
10063 }
10064 return parts;
10065 }
10066 }
10067 };
10068 Color.fromHexString = function (str) {
10069 var values = Color.parseHex(str);
10070 if (values) {
10071 var _a = __read(values, 4), r = _a[0], g = _a[1], b = _a[2], a = _a[3];
10072 return new Color(r / 255, g / 255, b / 255, a / 255);
10073 }
10074 throw new Error("Malformed hexadecimal color string: '" + str + "'");
10075 };
10076 Color.stringToRgba = function (str) {
10077 // Find positions of opening and closing parentheses.
10078 var _a = __read([NaN, NaN], 2), po = _a[0], pc = _a[1];
10079 for (var i = 0; i < str.length; i++) {
10080 var c = str[i];
10081 if (!po && c === '(') {
10082 po = i;
10083 }
10084 else if (c === ')') {
10085 pc = i;
10086 break;
10087 }
10088 }
10089 var contents = po && pc && str.substring(po + 1, pc);
10090 if (!contents) {
10091 return;
10092 }
10093 var parts = contents.split(',');
10094 var rgba = [];
10095 for (var i = 0; i < parts.length; i++) {
10096 var part = parts[i];
10097 var value = parseFloat(part);
10098 if (isNaN(value)) {
10099 return;
10100 }
10101 if (part.indexOf('%') >= 0) { // percentage r, g, or b value
10102 value = Math.max(0, Math.min(100, value));
10103 value /= 100;
10104 }
10105 else {
10106 if (i === 3) { // alpha component
10107 value = Math.max(0, Math.min(1, value));
10108 }
10109 else { // absolute r, g, or b value
10110 value = Math.max(0, Math.min(255, value));
10111 value /= 255;
10112 }
10113 }
10114 rgba.push(value);
10115 }
10116 return rgba;
10117 };
10118 Color.fromRgbaString = function (str) {
10119 var rgba = Color.stringToRgba(str);
10120 if (rgba) {
10121 if (rgba.length === 3) {
10122 return new Color(rgba[0], rgba[1], rgba[2]);
10123 }
10124 else if (rgba.length === 4) {
10125 return new Color(rgba[0], rgba[1], rgba[2], rgba[3]);
10126 }
10127 }
10128 throw new Error("Malformed rgb/rgba color string: '" + str + "'");
10129 };
10130 Color.fromArray = function (arr) {
10131 if (arr.length === 4) {
10132 return new Color(arr[0], arr[1], arr[2], arr[3]);
10133 }
10134 if (arr.length === 3) {
10135 return new Color(arr[0], arr[1], arr[2]);
10136 }
10137 throw new Error('The given array should contain 3 or 4 color components (numbers).');
10138 };
10139 Color.fromHSB = function (h, s, b, alpha) {
10140 if (alpha === void 0) { alpha = 1; }
10141 var rgb = Color.HSBtoRGB(h, s, b);
10142 return new Color(rgb[0], rgb[1], rgb[2], alpha);
10143 };
10144 Color.padHex = function (str) {
10145 // Can't use `padStart(2, '0')` here because of IE.
10146 return str.length === 1 ? '0' + str : str;
10147 };
10148 Color.prototype.toHexString = function () {
10149 var hex = '#'
10150 + Color.padHex(Math.round(this.r * 255).toString(16))
10151 + Color.padHex(Math.round(this.g * 255).toString(16))
10152 + Color.padHex(Math.round(this.b * 255).toString(16));
10153 if (this.a < 1) {
10154 hex += Color.padHex(Math.round(this.a * 255).toString(16));
10155 }
10156 return hex;
10157 };
10158 Color.prototype.toRgbaString = function (fractionDigits) {
10159 if (fractionDigits === void 0) { fractionDigits = 3; }
10160 var components = [
10161 Math.round(this.r * 255),
10162 Math.round(this.g * 255),
10163 Math.round(this.b * 255)
10164 ];
10165 var k = Math.pow(10, fractionDigits);
10166 if (this.a !== 1) {
10167 components.push(Math.round(this.a * k) / k);
10168 return "rgba(" + components.join(', ') + ")";
10169 }
10170 return "rgb(" + components.join(', ') + ")";
10171 };
10172 Color.prototype.toString = function () {
10173 if (this.a === 1) {
10174 return this.toHexString();
10175 }
10176 return this.toRgbaString();
10177 };
10178 Color.prototype.toHSB = function () {
10179 return Color.RGBtoHSB(this.r, this.g, this.b);
10180 };
10181 /**
10182 * Converts the given RGB triple to an array of HSB (HSV) components.
10183 * The hue component will be `NaN` for achromatic colors.
10184 */
10185 Color.RGBtoHSB = function (r, g, b) {
10186 var min = Math.min(r, g, b);
10187 var max = Math.max(r, g, b);
10188 var S = max !== 0 ? (max - min) / max : 0;
10189 var H = NaN;
10190 // min == max, means all components are the same
10191 // and the color is a shade of gray with no hue (H is NaN)
10192 if (min !== max) {
10193 var delta = max - min;
10194 var rc = (max - r) / delta;
10195 var gc = (max - g) / delta;
10196 var bc = (max - b) / delta;
10197 if (r === max) {
10198 H = bc - gc;
10199 }
10200 else if (g === max) {
10201 H = 2.0 + rc - bc;
10202 }
10203 else {
10204 H = 4.0 + gc - rc;
10205 }
10206 H /= 6.0;
10207 if (H < 0) {
10208 H = H + 1.0;
10209 }
10210 }
10211 return [H * 360, S, max];
10212 };
10213 /**
10214 * Converts the given HSB (HSV) triple to an array of RGB components.
10215 */
10216 Color.HSBtoRGB = function (H, S, B) {
10217 if (isNaN(H)) {
10218 H = 0;
10219 }
10220 H = (((H % 360) + 360) % 360) / 360; // normalize hue to [0, 360] interval, then scale to [0, 1]
10221 var r = 0;
10222 var g = 0;
10223 var b = 0;
10224 if (S === 0) {
10225 r = g = b = B;
10226 }
10227 else {
10228 var h = (H - Math.floor(H)) * 6;
10229 var f = h - Math.floor(h);
10230 var p = B * (1 - S);
10231 var q = B * (1 - S * f);
10232 var t = B * (1 - (S * (1 - f)));
10233 switch (h >> 0) { // discard the floating point part of the number
10234 case 0:
10235 r = B;
10236 g = t;
10237 b = p;
10238 break;
10239 case 1:
10240 r = q;
10241 g = B;
10242 b = p;
10243 break;
10244 case 2:
10245 r = p;
10246 g = B;
10247 b = t;
10248 break;
10249 case 3:
10250 r = p;
10251 g = q;
10252 b = B;
10253 break;
10254 case 4:
10255 r = t;
10256 g = p;
10257 b = B;
10258 break;
10259 case 5:
10260 r = B;
10261 g = p;
10262 b = q;
10263 break;
10264 }
10265 }
10266 return [r, g, b];
10267 };
10268 Color.prototype.derive = function (hueShift, saturationFactor, brightnessFactor, opacityFactor) {
10269 var hsb = Color.RGBtoHSB(this.r, this.g, this.b);
10270 var b = hsb[2];
10271 if (b == 0 && brightnessFactor > 1.0) {
10272 b = 0.05;
10273 }
10274 var h = (((hsb[0] + hueShift) % 360) + 360) % 360;
10275 var s = Math.max(Math.min(hsb[1] * saturationFactor, 1.0), 0.0);
10276 b = Math.max(Math.min(b * brightnessFactor, 1.0), 0.0);
10277 var a = Math.max(Math.min(this.a * opacityFactor, 1.0), 0.0);
10278 var rgba = Color.HSBtoRGB(h, s, b);
10279 rgba.push(a);
10280 return Color.fromArray(rgba);
10281 };
10282 Color.prototype.brighter = function () {
10283 return this.derive(0, 1.0, 1.0 / 0.7, 1.0);
10284 };
10285 Color.prototype.darker = function () {
10286 return this.derive(0, 1.0, 0.7, 1.0);
10287 };
10288 /**
10289 * CSS Color Module Level 4:
10290 * https://drafts.csswg.org/css-color/#named-colors
10291 */
10292 Color.nameToHex = Object.freeze({
10293 aliceblue: '#F0F8FF',
10294 antiquewhite: '#FAEBD7',
10295 aqua: '#00FFFF',
10296 aquamarine: '#7FFFD4',
10297 azure: '#F0FFFF',
10298 beige: '#F5F5DC',
10299 bisque: '#FFE4C4',
10300 black: '#000000',
10301 blanchedalmond: '#FFEBCD',
10302 blue: '#0000FF',
10303 blueviolet: '#8A2BE2',
10304 brown: '#A52A2A',
10305 burlywood: '#DEB887',
10306 cadetblue: '#5F9EA0',
10307 chartreuse: '#7FFF00',
10308 chocolate: '#D2691E',
10309 coral: '#FF7F50',
10310 cornflowerblue: '#6495ED',
10311 cornsilk: '#FFF8DC',
10312 crimson: '#DC143C',
10313 cyan: '#00FFFF',
10314 darkblue: '#00008B',
10315 darkcyan: '#008B8B',
10316 darkgoldenrod: '#B8860B',
10317 darkgray: '#A9A9A9',
10318 darkgreen: '#006400',
10319 darkgrey: '#A9A9A9',
10320 darkkhaki: '#BDB76B',
10321 darkmagenta: '#8B008B',
10322 darkolivegreen: '#556B2F',
10323 darkorange: '#FF8C00',
10324 darkorchid: '#9932CC',
10325 darkred: '#8B0000',
10326 darksalmon: '#E9967A',
10327 darkseagreen: '#8FBC8F',
10328 darkslateblue: '#483D8B',
10329 darkslategray: '#2F4F4F',
10330 darkslategrey: '#2F4F4F',
10331 darkturquoise: '#00CED1',
10332 darkviolet: '#9400D3',
10333 deeppink: '#FF1493',
10334 deepskyblue: '#00BFFF',
10335 dimgray: '#696969',
10336 dimgrey: '#696969',
10337 dodgerblue: '#1E90FF',
10338 firebrick: '#B22222',
10339 floralwhite: '#FFFAF0',
10340 forestgreen: '#228B22',
10341 fuchsia: '#FF00FF',
10342 gainsboro: '#DCDCDC',
10343 ghostwhite: '#F8F8FF',
10344 gold: '#FFD700',
10345 goldenrod: '#DAA520',
10346 gray: '#808080',
10347 green: '#008000',
10348 greenyellow: '#ADFF2F',
10349 grey: '#808080',
10350 honeydew: '#F0FFF0',
10351 hotpink: '#FF69B4',
10352 indianred: '#CD5C5C',
10353 indigo: '#4B0082',
10354 ivory: '#FFFFF0',
10355 khaki: '#F0E68C',
10356 lavender: '#E6E6FA',
10357 lavenderblush: '#FFF0F5',
10358 lawngreen: '#7CFC00',
10359 lemonchiffon: '#FFFACD',
10360 lightblue: '#ADD8E6',
10361 lightcoral: '#F08080',
10362 lightcyan: '#E0FFFF',
10363 lightgoldenrodyellow: '#FAFAD2',
10364 lightgray: '#D3D3D3',
10365 lightgreen: '#90EE90',
10366 lightgrey: '#D3D3D3',
10367 lightpink: '#FFB6C1',
10368 lightsalmon: '#FFA07A',
10369 lightseagreen: '#20B2AA',
10370 lightskyblue: '#87CEFA',
10371 lightslategray: '#778899',
10372 lightslategrey: '#778899',
10373 lightsteelblue: '#B0C4DE',
10374 lightyellow: '#FFFFE0',
10375 lime: '#00FF00',
10376 limegreen: '#32CD32',
10377 linen: '#FAF0E6',
10378 magenta: '#FF00FF',
10379 maroon: '#800000',
10380 mediumaquamarine: '#66CDAA',
10381 mediumblue: '#0000CD',
10382 mediumorchid: '#BA55D3',
10383 mediumpurple: '#9370DB',
10384 mediumseagreen: '#3CB371',
10385 mediumslateblue: '#7B68EE',
10386 mediumspringgreen: '#00FA9A',
10387 mediumturquoise: '#48D1CC',
10388 mediumvioletred: '#C71585',
10389 midnightblue: '#191970',
10390 mintcream: '#F5FFFA',
10391 mistyrose: '#FFE4E1',
10392 moccasin: '#FFE4B5',
10393 navajowhite: '#FFDEAD',
10394 navy: '#000080',
10395 oldlace: '#FDF5E6',
10396 olive: '#808000',
10397 olivedrab: '#6B8E23',
10398 orange: '#FFA500',
10399 orangered: '#FF4500',
10400 orchid: '#DA70D6',
10401 palegoldenrod: '#EEE8AA',
10402 palegreen: '#98FB98',
10403 paleturquoise: '#AFEEEE',
10404 palevioletred: '#DB7093',
10405 papayawhip: '#FFEFD5',
10406 peachpuff: '#FFDAB9',
10407 peru: '#CD853F',
10408 pink: '#FFC0CB',
10409 plum: '#DDA0DD',
10410 powderblue: '#B0E0E6',
10411 purple: '#800080',
10412 rebeccapurple: '#663399',
10413 red: '#FF0000',
10414 rosybrown: '#BC8F8F',
10415 royalblue: '#4169E1',
10416 saddlebrown: '#8B4513',
10417 salmon: '#FA8072',
10418 sandybrown: '#F4A460',
10419 seagreen: '#2E8B57',
10420 seashell: '#FFF5EE',
10421 sienna: '#A0522D',
10422 silver: '#C0C0C0',
10423 skyblue: '#87CEEB',
10424 slateblue: '#6A5ACD',
10425 slategray: '#708090',
10426 slategrey: '#708090',
10427 snow: '#FFFAFA',
10428 springgreen: '#00FF7F',
10429 steelblue: '#4682B4',
10430 tan: '#D2B48C',
10431 teal: '#008080',
10432 thistle: '#D8BFD8',
10433 tomato: '#FF6347',
10434 turquoise: '#40E0D0',
10435 violet: '#EE82EE',
10436 wheat: '#F5DEB3',
10437 white: '#FFFFFF',
10438 whitesmoke: '#F5F5F5',
10439 yellow: '#FFFF00',
10440 yellowgreen: '#9ACD32'
10441 });
10442 return Color;
10443}());
10444
10445
10446
10447
10448
10449/***/ }),
10450/* 39 */
10451/***/ (function(module, __webpack_exports__, __webpack_require__) {
10452
10453"use strict";
10454__webpack_require__.r(__webpack_exports__);
10455/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "stringToArray", function() { return stringToArray; });
10456/**
10457 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
10458 * @version v27.3.0
10459 * @link https://www.ag-grid.com/
10460 * @license MIT
10461 */
10462// Based on https://stackoverflow.com/a/14991797
10463// This will parse a delimited string into an array of arrays.
10464function stringToArray(strData, delimiter) {
10465 if (delimiter === void 0) { delimiter = ','; }
10466 var data = [];
10467 var isNewline = function (char) { return char === '\r' || char === '\n'; };
10468 var insideQuotedField = false;
10469 if (strData === '') {
10470 return [['']];
10471 }
10472 var _loop_1 = function (row, column, position) {
10473 var previousChar = strData[position - 1];
10474 var currentChar = strData[position];
10475 var nextChar = strData[position + 1];
10476 var ensureDataExists = function () {
10477 if (!data[row]) {
10478 // create row if it doesn't exist
10479 data[row] = [];
10480 }
10481 if (!data[row][column]) {
10482 // create column if it doesn't exist
10483 data[row][column] = '';
10484 }
10485 };
10486 ensureDataExists();
10487 if (currentChar === '"') {
10488 if (insideQuotedField) {
10489 if (nextChar === '"') {
10490 // unescape double quote
10491 data[row][column] += '"';
10492 position++;
10493 }
10494 else {
10495 // exit quoted field
10496 insideQuotedField = false;
10497 }
10498 return out_row_1 = row, out_column_1 = column, out_position_1 = position, "continue";
10499 }
10500 else if (previousChar === undefined || previousChar === delimiter || isNewline(previousChar)) {
10501 // enter quoted field
10502 insideQuotedField = true;
10503 return out_row_1 = row, out_column_1 = column, out_position_1 = position, "continue";
10504 }
10505 }
10506 if (!insideQuotedField) {
10507 if (currentChar === delimiter) {
10508 // move to next column
10509 column++;
10510 ensureDataExists();
10511 return out_row_1 = row, out_column_1 = column, out_position_1 = position, "continue";
10512 }
10513 else if (isNewline(currentChar)) {
10514 // move to next row
10515 column = 0;
10516 row++;
10517 ensureDataExists();
10518 if (currentChar === '\r' && nextChar === '\n') {
10519 // skip over second newline character if it exists
10520 position++;
10521 }
10522 return out_row_1 = row, out_column_1 = column, out_position_1 = position, "continue";
10523 }
10524 }
10525 // add current character to current column
10526 data[row][column] += currentChar;
10527 out_row_1 = row;
10528 out_column_1 = column;
10529 out_position_1 = position;
10530 };
10531 var out_row_1, out_column_1, out_position_1;
10532 // iterate over each character, keep track of current row and column (of the returned array)
10533 for (var row = 0, column = 0, position = 0; position < strData.length; position++) {
10534 _loop_1(row, column, position);
10535 row = out_row_1;
10536 column = out_column_1;
10537 position = out_position_1;
10538 }
10539 return data;
10540}
10541
10542
10543
10544
10545/***/ }),
10546/* 40 */
10547/***/ (function(module, __webpack_exports__, __webpack_require__) {
10548
10549"use strict";
10550__webpack_require__.r(__webpack_exports__);
10551/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "_", function() { return _; });
10552/* harmony import */ var _general__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(41);
10553/* harmony import */ var _aria__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(44);
10554/* harmony import */ var _array__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(18);
10555/* harmony import */ var _browser__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(43);
10556/* harmony import */ var _csv__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(39);
10557/* harmony import */ var _date__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(45);
10558/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(42);
10559/* harmony import */ var _event__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(21);
10560/* harmony import */ var _function__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(14);
10561/* harmony import */ var _fuzzyMatch__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(47);
10562/* harmony import */ var _generic__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(7);
10563/* harmony import */ var _icon__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(48);
10564/* harmony import */ var _keyboard__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(49);
10565/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(27);
10566/* harmony import */ var _mouse__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(50);
10567/* harmony import */ var _number__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(46);
10568/* harmony import */ var _object__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(13);
10569/* harmony import */ var _rowNode__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(51);
10570/* harmony import */ var _set__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(52);
10571/* harmony import */ var _string__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(26);
10572/**
10573 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
10574 * @version v27.3.0
10575 * @link https://www.ag-grid.com/
10576 * @license MIT
10577 */
10578var __assign = (undefined && undefined.__assign) || function () {
10579 __assign = Object.assign || function(t) {
10580 for (var s, i = 1, n = arguments.length; i < n; i++) {
10581 s = arguments[i];
10582 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
10583 t[p] = s[p];
10584 }
10585 return t;
10586 };
10587 return __assign.apply(this, arguments);
10588};
10589
10590
10591
10592
10593
10594
10595
10596
10597
10598
10599
10600
10601
10602
10603
10604
10605
10606
10607
10608
10609var utils = __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({}, _general__WEBPACK_IMPORTED_MODULE_0__), _aria__WEBPACK_IMPORTED_MODULE_1__), _array__WEBPACK_IMPORTED_MODULE_2__), _browser__WEBPACK_IMPORTED_MODULE_3__), _csv__WEBPACK_IMPORTED_MODULE_4__), _date__WEBPACK_IMPORTED_MODULE_5__), _dom__WEBPACK_IMPORTED_MODULE_6__), _event__WEBPACK_IMPORTED_MODULE_7__), _function__WEBPACK_IMPORTED_MODULE_8__), _fuzzyMatch__WEBPACK_IMPORTED_MODULE_9__), _generic__WEBPACK_IMPORTED_MODULE_10__), _icon__WEBPACK_IMPORTED_MODULE_11__), _keyboard__WEBPACK_IMPORTED_MODULE_12__), _map__WEBPACK_IMPORTED_MODULE_13__), _mouse__WEBPACK_IMPORTED_MODULE_14__), _number__WEBPACK_IMPORTED_MODULE_15__), _object__WEBPACK_IMPORTED_MODULE_16__), _rowNode__WEBPACK_IMPORTED_MODULE_17__), _set__WEBPACK_IMPORTED_MODULE_18__), _string__WEBPACK_IMPORTED_MODULE_19__);
10610var _ = utils;
10611
10612
10613
10614
10615/***/ }),
10616/* 41 */
10617/***/ (function(module, __webpack_exports__, __webpack_require__) {
10618
10619"use strict";
10620__webpack_require__.r(__webpack_exports__);
10621/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getNameOfClass", function() { return getNameOfClass; });
10622/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "findLineByLeastSquares", function() { return findLineByLeastSquares; });
10623/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cssStyleObjectToMarkup", function() { return cssStyleObjectToMarkup; });
10624/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "message", function() { return message; });
10625/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bindCellRendererToHtmlElement", function() { return bindCellRendererToHtmlElement; });
10626/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(42);
10627/* harmony import */ var _string__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26);
10628/* harmony import */ var _object__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13);
10629/**
10630 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
10631 * @version v27.3.0
10632 * @link https://www.ag-grid.com/
10633 * @license MIT
10634 */
10635
10636
10637
10638/** @deprecated */
10639function getNameOfClass(theClass) {
10640 var funcNameRegex = /function (.{1,})\(/;
10641 var funcAsString = theClass.toString();
10642 var results = funcNameRegex.exec(funcAsString);
10643 return results && results.length > 1 ? results[1] : "";
10644}
10645function findLineByLeastSquares(values) {
10646 var len = values.length;
10647 var maxDecimals = 0;
10648 if (len <= 1) {
10649 return values;
10650 }
10651 for (var i = 0; i < values.length; i++) {
10652 var value = values[i];
10653 var splitExponent = value.toString().split('e-');
10654 if (splitExponent.length > 1) {
10655 maxDecimals = Math.max(maxDecimals, parseInt(splitExponent[1], 10));
10656 continue;
10657 }
10658 if (Math.floor(value) === value) {
10659 continue;
10660 }
10661 maxDecimals = Math.max(maxDecimals, value.toString().split('.')[1].length);
10662 }
10663 var sum_x = 0;
10664 var sum_y = 0;
10665 var sum_xy = 0;
10666 var sum_xx = 0;
10667 var y = 0;
10668 for (var x = 0; x < len; x++) {
10669 y = values[x];
10670 sum_x += x;
10671 sum_y += y;
10672 sum_xx += x * x;
10673 sum_xy += x * y;
10674 }
10675 var m = (len * sum_xy - sum_x * sum_y) / (len * sum_xx - sum_x * sum_x);
10676 var b = (sum_y / len) - (m * sum_x) / len;
10677 var result = [];
10678 for (var x = 0; x <= len; x++) {
10679 result.push(parseFloat((x * m + b).toFixed(maxDecimals)));
10680 }
10681 return result;
10682}
10683/**
10684 * Converts a CSS object into string
10685 * @param {Object} stylesToUse an object eg: {color: 'black', top: '25px'}
10686 * @return {string} A string like "color: black; top: 25px;" for html
10687 */
10688function cssStyleObjectToMarkup(stylesToUse) {
10689 if (!stylesToUse) {
10690 return '';
10691 }
10692 var resParts = [];
10693 Object(_object__WEBPACK_IMPORTED_MODULE_2__["iterateObject"])(stylesToUse, function (styleKey, styleValue) {
10694 var styleKeyDashed = Object(_string__WEBPACK_IMPORTED_MODULE_1__["camelCaseToHyphen"])(styleKey);
10695 resParts.push(styleKeyDashed + ": " + styleValue + ";");
10696 });
10697 return resParts.join(' ');
10698}
10699/**
10700 * Displays a message to the browser. this is useful in iPad, where you can't easily see the console.
10701 * so the javascript code can use this to give feedback. this is NOT intended to be called in production.
10702 * it is intended the AG Grid developer calls this to troubleshoot, but then takes out the calls before
10703 * checking in.
10704 * @param {string} msg
10705 */
10706function message(msg) {
10707 var eMessage = document.createElement('div');
10708 var eBox = document.querySelector('#__ag__message');
10709 eMessage.innerHTML = msg;
10710 if (!eBox) {
10711 var template = "<div id=\"__ag__message\" style=\"display: inline-block; position: absolute; top: 0px; left: 0px; color: white; background-color: black; z-index: 20; padding: 2px; border: 1px solid darkred; height: 200px; overflow-y: auto;\"></div>";
10712 eBox = Object(_dom__WEBPACK_IMPORTED_MODULE_0__["loadTemplate"])(template);
10713 if (document.body) {
10714 document.body.appendChild(eBox);
10715 }
10716 }
10717 eBox.insertBefore(eMessage, eBox.children[0]);
10718}
10719/**
10720 * cell renderers are used in a few places. they bind to dom slightly differently to other cell renderes as they
10721 * can return back strings (instead of html elemnt) in the getGui() method. common code placed here to handle that.
10722 * @param {AgPromise<ICellRendererComp>} cellRendererPromise
10723 * @param {HTMLElement} eTarget
10724 */
10725function bindCellRendererToHtmlElement(cellRendererPromise, eTarget) {
10726 cellRendererPromise.then(function (cellRenderer) {
10727 var gui = cellRenderer.getGui();
10728 if (gui != null) {
10729 if (typeof gui === 'object') {
10730 eTarget.appendChild(gui);
10731 }
10732 else {
10733 eTarget.innerHTML = gui;
10734 }
10735 }
10736 });
10737}
10738
10739
10740
10741
10742/***/ }),
10743/* 42 */
10744/***/ (function(module, __webpack_exports__, __webpack_require__) {
10745
10746"use strict";
10747__webpack_require__.r(__webpack_exports__);
10748/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "radioCssClass", function() { return radioCssClass; });
10749/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFocusableFormField", function() { return isFocusableFormField; });
10750/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setDisplayed", function() { return setDisplayed; });
10751/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setVisible", function() { return setVisible; });
10752/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setDisabled", function() { return setDisabled; });
10753/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isElementChildOfClass", function() { return isElementChildOfClass; });
10754/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getElementSize", function() { return getElementSize; });
10755/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getInnerHeight", function() { return getInnerHeight; });
10756/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getInnerWidth", function() { return getInnerWidth; });
10757/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getAbsoluteHeight", function() { return getAbsoluteHeight; });
10758/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getAbsoluteWidth", function() { return getAbsoluteWidth; });
10759/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isRtlNegativeScroll", function() { return isRtlNegativeScroll; });
10760/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getScrollLeft", function() { return getScrollLeft; });
10761/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setScrollLeft", function() { return setScrollLeft; });
10762/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "clearElement", function() { return clearElement; });
10763/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeElement", function() { return removeElement; });
10764/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeFromParent", function() { return removeFromParent; });
10765/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isVisible", function() { return isVisible; });
10766/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "loadTemplate", function() { return loadTemplate; });
10767/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "appendHtml", function() { return appendHtml; });
10768/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getElementAttribute", function() { return getElementAttribute; });
10769/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "offsetHeight", function() { return offsetHeight; });
10770/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "offsetWidth", function() { return offsetWidth; });
10771/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ensureDomOrder", function() { return ensureDomOrder; });
10772/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setDomChildOrder", function() { return setDomChildOrder; });
10773/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "insertWithDomOrder", function() { return insertWithDomOrder; });
10774/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "prependDC", function() { return prependDC; });
10775/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addStylesToElement", function() { return addStylesToElement; });
10776/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isHorizontalScrollShowing", function() { return isHorizontalScrollShowing; });
10777/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isVerticalScrollShowing", function() { return isVerticalScrollShowing; });
10778/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setElementWidth", function() { return setElementWidth; });
10779/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setFixedWidth", function() { return setFixedWidth; });
10780/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setElementHeight", function() { return setElementHeight; });
10781/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setFixedHeight", function() { return setFixedHeight; });
10782/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "formatSize", function() { return formatSize; });
10783/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNode", function() { return isNode; });
10784/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isElement", function() { return isElement; });
10785/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNodeOrElement", function() { return isNodeOrElement; });
10786/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "copyNodeList", function() { return copyNodeList; });
10787/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "iterateNamedNodeMap", function() { return iterateNamedNodeMap; });
10788/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setCheckboxState", function() { return setCheckboxState; });
10789/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addOrRemoveAttribute", function() { return addOrRemoveAttribute; });
10790/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "nodeListForEach", function() { return nodeListForEach; });
10791/* harmony import */ var _browser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(43);
10792/* harmony import */ var _generic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7);
10793/* harmony import */ var _object__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(13);
10794/* harmony import */ var _string__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(26);
10795/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(15);
10796/**
10797 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
10798 * @version v27.3.0
10799 * @link https://www.ag-grid.com/
10800 * @license MIT
10801 */
10802
10803
10804
10805
10806
10807var rtlNegativeScroll;
10808/**
10809 * This method adds a class to an element and remove that class from all siblings.
10810 * Useful for toggling state.
10811 * @param {HTMLElement} element The element to receive the class
10812 * @param {string} elementClass The class to be assigned to the element
10813 * @param {boolean} otherElementClass The class to be assigned to siblings of the element, but not the element itself
10814 */
10815function radioCssClass(element, elementClass, otherElementClass) {
10816 var parent = element.parentElement;
10817 var sibling = parent && parent.firstChild;
10818 while (sibling) {
10819 if (elementClass) {
10820 sibling.classList.toggle(elementClass, sibling === element);
10821 }
10822 if (otherElementClass) {
10823 sibling.classList.toggle(otherElementClass, sibling !== element);
10824 }
10825 sibling = sibling.nextSibling;
10826 }
10827}
10828function isFocusableFormField(element) {
10829 var matches = Element.prototype.matches || Element.prototype.msMatchesSelector;
10830 var isFocusable = matches.call(element, _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].INPUT_SELECTOR);
10831 var isNotFocusable = matches.call(element, _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].FOCUSABLE_EXCLUDE);
10832 var isElementVisible = isVisible(element);
10833 var focusable = isFocusable && !isNotFocusable && isElementVisible;
10834 return focusable;
10835}
10836function setDisplayed(element, displayed) {
10837 element.classList.toggle('ag-hidden', !displayed);
10838}
10839function setVisible(element, visible) {
10840 element.classList.toggle('ag-invisible', !visible);
10841}
10842function setDisabled(element, disabled) {
10843 var attributeName = 'disabled';
10844 var addOrRemoveDisabledAttribute = disabled ?
10845 function (e) { return e.setAttribute(attributeName, ''); } :
10846 function (e) { return e.removeAttribute(attributeName); };
10847 addOrRemoveDisabledAttribute(element);
10848 nodeListForEach(element.querySelectorAll('input'), function (input) { return addOrRemoveDisabledAttribute(input); });
10849}
10850function isElementChildOfClass(element, cls, maxNest) {
10851 var counter = 0;
10852 while (element) {
10853 if (element.classList.contains(cls)) {
10854 return true;
10855 }
10856 element = element.parentElement;
10857 if (maxNest && ++counter > maxNest) {
10858 break;
10859 }
10860 }
10861 return false;
10862}
10863// returns back sizes as doubles instead of strings. similar to
10864// getBoundingClientRect, however getBoundingClientRect does not:
10865// a) work with fractions (eg browser is zooming)
10866// b) has CSS transitions applied (eg CSS scale, browser zoom), which we don't want, we want the un-transitioned values
10867function getElementSize(el) {
10868 var _a = window.getComputedStyle(el), height = _a.height, width = _a.width, paddingTop = _a.paddingTop, paddingRight = _a.paddingRight, paddingBottom = _a.paddingBottom, paddingLeft = _a.paddingLeft, marginTop = _a.marginTop, marginRight = _a.marginRight, marginBottom = _a.marginBottom, marginLeft = _a.marginLeft, boxSizing = _a.boxSizing;
10869 return {
10870 height: parseFloat(height),
10871 width: parseFloat(width),
10872 paddingTop: parseFloat(paddingTop),
10873 paddingRight: parseFloat(paddingRight),
10874 paddingBottom: parseFloat(paddingBottom),
10875 paddingLeft: parseFloat(paddingLeft),
10876 marginTop: parseFloat(marginTop),
10877 marginRight: parseFloat(marginRight),
10878 marginBottom: parseFloat(marginBottom),
10879 marginLeft: parseFloat(marginLeft),
10880 boxSizing: boxSizing
10881 };
10882}
10883function getInnerHeight(el) {
10884 var size = getElementSize(el);
10885 if (size.boxSizing === 'border-box') {
10886 return size.height - size.paddingTop - size.paddingBottom;
10887 }
10888 return size.height;
10889}
10890function getInnerWidth(el) {
10891 var size = getElementSize(el);
10892 if (size.boxSizing === 'border-box') {
10893 return size.width - size.paddingLeft - size.paddingRight;
10894 }
10895 return size.width;
10896}
10897function getAbsoluteHeight(el) {
10898 var size = getElementSize(el);
10899 var marginRight = size.marginBottom + size.marginTop;
10900 return Math.ceil(el.offsetHeight + marginRight);
10901}
10902function getAbsoluteWidth(el) {
10903 var size = getElementSize(el);
10904 var marginWidth = size.marginLeft + size.marginRight;
10905 return Math.ceil(el.offsetWidth + marginWidth);
10906}
10907function isRtlNegativeScroll() {
10908 if (typeof rtlNegativeScroll === "boolean") {
10909 return rtlNegativeScroll;
10910 }
10911 var template = document.createElement('div');
10912 template.style.direction = 'rtl';
10913 template.style.width = '1px';
10914 template.style.height = '1px';
10915 template.style.position = 'fixed';
10916 template.style.top = '0px';
10917 template.style.overflow = 'hidden';
10918 template.dir = 'rtl';
10919 template.innerHTML = /* html */
10920 "<div style=\"width: 2px\">\n <span style=\"display: inline-block; width: 1px\"></span>\n <span style=\"display: inline-block; width: 1px\"></span>\n </div>";
10921 document.body.appendChild(template);
10922 template.scrollLeft = 1;
10923 rtlNegativeScroll = Math.floor(template.scrollLeft) === 0;
10924 document.body.removeChild(template);
10925 return rtlNegativeScroll;
10926}
10927function getScrollLeft(element, rtl) {
10928 var scrollLeft = element.scrollLeft;
10929 if (rtl) {
10930 // Absolute value - for FF that reports RTL scrolls in negative numbers
10931 scrollLeft = Math.abs(scrollLeft);
10932 if (Object(_browser__WEBPACK_IMPORTED_MODULE_0__["isBrowserChrome"])() && !isRtlNegativeScroll()) {
10933 scrollLeft = element.scrollWidth - element.clientWidth - scrollLeft;
10934 }
10935 }
10936 return scrollLeft;
10937}
10938function setScrollLeft(element, value, rtl) {
10939 if (rtl) {
10940 // Chrome and Safari when doing RTL have the END position of the scroll as zero, not the start
10941 if (isRtlNegativeScroll()) {
10942 value *= -1;
10943 }
10944 else if (Object(_browser__WEBPACK_IMPORTED_MODULE_0__["isBrowserSafari"])() || Object(_browser__WEBPACK_IMPORTED_MODULE_0__["isBrowserChrome"])()) {
10945 value = element.scrollWidth - element.clientWidth - value;
10946 }
10947 }
10948 element.scrollLeft = value;
10949}
10950function clearElement(el) {
10951 while (el && el.firstChild) {
10952 el.removeChild(el.firstChild);
10953 }
10954}
10955/** @deprecated */
10956function removeElement(parent, cssSelector) {
10957 removeFromParent(parent.querySelector(cssSelector));
10958}
10959function removeFromParent(node) {
10960 if (node && node.parentNode) {
10961 node.parentNode.removeChild(node);
10962 }
10963}
10964function isVisible(element) {
10965 return element.offsetParent !== null;
10966}
10967/**
10968 * Loads the template and returns it as an element. makes up for no simple way in
10969 * the dom api to load html directly, eg we cannot do this: document.createElement(template)
10970 * @param {string} template
10971 * @returns {HTMLElement}
10972 */
10973function loadTemplate(template) {
10974 // we try the DOMParser first, as SalesForce doesn't like using innerHTML on a div
10975 if (DOMParser !== null) {
10976 var parser = new DOMParser();
10977 var doc = parser.parseFromString(template, "text/html");
10978 return doc.body.firstChild;
10979 }
10980 var tempDiv = document.createElement('div');
10981 tempDiv.innerHTML = (template || '').trim();
10982 return tempDiv.firstChild;
10983}
10984function appendHtml(eContainer, htmlTemplate) {
10985 if (eContainer.lastChild) {
10986 // https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML
10987 // we put the items at the start, so new items appear underneath old items,
10988 // so when expanding/collapsing groups, the new rows don't go on top of the
10989 // rows below that are moving our of the way
10990 eContainer.insertAdjacentHTML('afterbegin', htmlTemplate);
10991 }
10992 else {
10993 eContainer.innerHTML = htmlTemplate;
10994 }
10995}
10996/** @deprecated */
10997function getElementAttribute(element, attributeName) {
10998 if (element.attributes && element.attributes[attributeName]) {
10999 var attribute = element.attributes[attributeName];
11000 return attribute.value;
11001 }
11002 return null;
11003}
11004function offsetHeight(element) {
11005 return element && element.clientHeight ? element.clientHeight : 0;
11006}
11007function offsetWidth(element) {
11008 return element && element.clientWidth ? element.clientWidth : 0;
11009}
11010function ensureDomOrder(eContainer, eChild, eChildBefore) {
11011 // if already in right order, do nothing
11012 if (eChildBefore && eChildBefore.nextSibling === eChild) {
11013 return;
11014 }
11015 if (eChildBefore) {
11016 if (eChildBefore.nextSibling) {
11017 // insert between the eRowBefore and the row after it
11018 eContainer.insertBefore(eChild, eChildBefore.nextSibling);
11019 }
11020 else {
11021 // if nextSibling is missing, means other row is at end, so just append new row at the end
11022 eContainer.appendChild(eChild);
11023 }
11024 }
11025 else {
11026 // otherwise put at start
11027 if (eContainer.firstChild && eContainer.firstChild !== eChild) {
11028 // insert it at the first location
11029 eContainer.insertAdjacentElement('afterbegin', eChild);
11030 }
11031 }
11032}
11033function setDomChildOrder(eContainer, orderedChildren) {
11034 for (var i = 0; i < orderedChildren.length; i++) {
11035 var correctCellAtIndex = orderedChildren[i];
11036 var actualCellAtIndex = eContainer.children[i];
11037 if (actualCellAtIndex !== correctCellAtIndex) {
11038 eContainer.insertBefore(correctCellAtIndex, actualCellAtIndex);
11039 }
11040 }
11041}
11042function insertWithDomOrder(eContainer, eToInsert, eChildBefore) {
11043 if (eChildBefore) {
11044 // if previous element exists, just slot in after the previous element
11045 eChildBefore.insertAdjacentElement('afterend', eToInsert);
11046 }
11047 else {
11048 if (eContainer.firstChild) {
11049 // insert it at the first location
11050 eContainer.insertAdjacentElement('afterbegin', eToInsert);
11051 }
11052 else {
11053 // otherwise eContainer is empty, so just append it
11054 eContainer.appendChild(eToInsert);
11055 }
11056 }
11057}
11058/** @deprecated */
11059function prependDC(parent, documentFragment) {
11060 if (Object(_generic__WEBPACK_IMPORTED_MODULE_1__["exists"])(parent.firstChild)) {
11061 parent.insertBefore(documentFragment, parent.firstChild);
11062 }
11063 else {
11064 parent.appendChild(documentFragment);
11065 }
11066}
11067function addStylesToElement(eElement, styles) {
11068 if (!styles) {
11069 return;
11070 }
11071 Object.keys(styles).forEach(function (key) {
11072 var keyCamelCase = Object(_string__WEBPACK_IMPORTED_MODULE_3__["hyphenToCamelCase"])(key);
11073 if (keyCamelCase) {
11074 eElement.style[keyCamelCase] = styles[key];
11075 }
11076 });
11077}
11078function isHorizontalScrollShowing(element) {
11079 return element.clientWidth < element.scrollWidth;
11080}
11081function isVerticalScrollShowing(element) {
11082 return element.clientHeight < element.scrollHeight;
11083}
11084function setElementWidth(element, width) {
11085 if (width === 'flex') {
11086 element.style.removeProperty('width');
11087 element.style.removeProperty('minWidth');
11088 element.style.removeProperty('maxWidth');
11089 element.style.flex = '1 1 auto';
11090 }
11091 else {
11092 setFixedWidth(element, width);
11093 }
11094}
11095function setFixedWidth(element, width) {
11096 width = formatSize(width);
11097 element.style.width = width.toString();
11098 element.style.maxWidth = width.toString();
11099 element.style.minWidth = width.toString();
11100}
11101function setElementHeight(element, height) {
11102 if (height === 'flex') {
11103 element.style.removeProperty('height');
11104 element.style.removeProperty('minHeight');
11105 element.style.removeProperty('maxHeight');
11106 element.style.flex = '1 1 auto';
11107 }
11108 else {
11109 setFixedHeight(element, height);
11110 }
11111}
11112function setFixedHeight(element, height) {
11113 height = formatSize(height);
11114 element.style.height = height.toString();
11115 element.style.maxHeight = height.toString();
11116 element.style.minHeight = height.toString();
11117}
11118function formatSize(size) {
11119 if (typeof size === 'number') {
11120 return size + "px";
11121 }
11122 return size;
11123}
11124/**
11125 * Returns true if it is a DOM node
11126 * taken from: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object
11127 * @param {any} o
11128 * @return {boolean}
11129 */
11130function isNode(o) {
11131 return (typeof Node === 'function'
11132 ? o instanceof Node
11133 : o && typeof o === 'object' && typeof o.nodeType === 'number' && typeof o.nodeName === 'string');
11134}
11135//
11136/**
11137 * Returns true if it is a DOM element
11138 * taken from: http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object
11139 * @param {any} o
11140 * @returns {boolean}
11141 */
11142function isElement(o) {
11143 return (typeof HTMLElement === 'function'
11144 ? o instanceof HTMLElement //DOM2
11145 : o && Object(_object__WEBPACK_IMPORTED_MODULE_2__["isNonNullObject"])(o) && o.nodeType === 1 && typeof o.nodeName === 'string');
11146}
11147function isNodeOrElement(o) {
11148 return isNode(o) || isElement(o);
11149}
11150/**
11151 * Makes a copy of a node list into a list
11152 * @param {NodeList} nodeList
11153 * @returns {Node[]}
11154 */
11155function copyNodeList(nodeList) {
11156 if (nodeList == null) {
11157 return [];
11158 }
11159 var result = [];
11160 nodeListForEach(nodeList, function (node) { return result.push(node); });
11161 return result;
11162}
11163function iterateNamedNodeMap(map, callback) {
11164 if (!map) {
11165 return;
11166 }
11167 for (var i = 0; i < map.length; i++) {
11168 var attr = map[i];
11169 callback(attr.name, attr.value);
11170 }
11171}
11172/** @deprecated */
11173function setCheckboxState(eCheckbox, state) {
11174 if (typeof state === 'boolean') {
11175 eCheckbox.checked = state;
11176 eCheckbox.indeterminate = false;
11177 }
11178 else {
11179 // isNodeSelected returns back undefined if it's a group and the children
11180 // are a mix of selected and unselected
11181 eCheckbox.indeterminate = true;
11182 }
11183}
11184function addOrRemoveAttribute(element, name, value) {
11185 if (value == null) {
11186 element.removeAttribute(name);
11187 }
11188 else {
11189 element.setAttribute(name, value.toString());
11190 }
11191}
11192function nodeListForEach(nodeList, action) {
11193 if (nodeList == null) {
11194 return;
11195 }
11196 for (var i = 0; i < nodeList.length; i++) {
11197 action(nodeList[i]);
11198 }
11199}
11200
11201
11202
11203
11204/***/ }),
11205/* 43 */
11206/***/ (function(module, __webpack_exports__, __webpack_require__) {
11207
11208"use strict";
11209__webpack_require__.r(__webpack_exports__);
11210/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isBrowserEdge", function() { return isBrowserEdge; });
11211/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isBrowserSafari", function() { return isBrowserSafari; });
11212/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isBrowserChrome", function() { return isBrowserChrome; });
11213/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isBrowserFirefox", function() { return isBrowserFirefox; });
11214/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isIOSUserAgent", function() { return isIOSUserAgent; });
11215/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTabIndex", function() { return getTabIndex; });
11216/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getMaxDivHeight", function() { return getMaxDivHeight; });
11217/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getScrollbarWidth", function() { return getScrollbarWidth; });
11218/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isInvisibleScrollbar", function() { return isInvisibleScrollbar; });
11219/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasOverflowScrolling", function() { return hasOverflowScrolling; });
11220/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getBodyWidth", function() { return getBodyWidth; });
11221/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getBodyHeight", function() { return getBodyHeight; });
11222/**
11223 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
11224 * @version v27.3.0
11225 * @link https://www.ag-grid.com/
11226 * @license MIT
11227 */
11228var __values = (undefined && undefined.__values) || function(o) {
11229 var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
11230 if (m) return m.call(o);
11231 if (o && typeof o.length === "number") return {
11232 next: function () {
11233 if (o && i >= o.length) o = void 0;
11234 return { value: o && o[i++], done: !o };
11235 }
11236 };
11237 throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
11238};
11239/**
11240 * These variables are lazy loaded, as otherwise they try and get initialised when we are loading
11241 * unit tests and we don't have references to window or document in the unit tests
11242 * from http://stackoverflow.com/questions/9847580/how-to-detect-safari-chrome-ie-firefox-and-opera-browser
11243 */
11244var isSafari;
11245var isIE;
11246var isEdge;
11247var isChrome;
11248var isFirefox;
11249var isIOS;
11250var invisibleScrollbar;
11251var browserScrollbarWidth;
11252function isBrowserIE() {
11253 if (isIE === undefined) {
11254 isIE = /*@cc_on!@*/ false || !!document.documentMode; // At least IE6
11255 }
11256 return isIE;
11257}
11258function isBrowserEdge() {
11259 if (isEdge === undefined) {
11260 isEdge = !isBrowserIE() && !!window.StyleMedia;
11261 }
11262 return isEdge;
11263}
11264function isBrowserSafari() {
11265 if (isSafari === undefined) {
11266 // taken from https://stackoverflow.com/a/23522755/1388233
11267 isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
11268 }
11269 return isSafari;
11270}
11271function isBrowserChrome() {
11272 if (isChrome === undefined) {
11273 var win = window;
11274 isChrome = (!!win.chrome && (!!win.chrome.webstore || !!win.chrome.runtime)) ||
11275 (/Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor));
11276 }
11277 return isChrome;
11278}
11279function isBrowserFirefox() {
11280 if (isFirefox === undefined) {
11281 var win = window;
11282 isFirefox = typeof win.InstallTrigger !== 'undefined';
11283 }
11284 return isFirefox;
11285}
11286function isIOSUserAgent() {
11287 if (isIOS === undefined) {
11288 // taken from https://stackoverflow.com/a/58064481/1388233
11289 isIOS = (/iPad|iPhone|iPod/.test(navigator.platform) ||
11290 // eslint-disable-next-line
11291 (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) &&
11292 // @ts-ignore
11293 !window.MSStream;
11294 }
11295 return isIOS;
11296}
11297function getTabIndex(el) {
11298 if (!el) {
11299 return null;
11300 }
11301 var numberTabIndex = el.tabIndex;
11302 var tabIndex = el.getAttribute('tabIndex');
11303 if (numberTabIndex === -1 && (tabIndex === null || (tabIndex === '' && !isBrowserFirefox()))) {
11304 return null;
11305 }
11306 return numberTabIndex.toString();
11307}
11308function getMaxDivHeight() {
11309 if (!document.body) {
11310 return -1;
11311 }
11312 var res = 1000000;
11313 // FF reports the height back but still renders blank after ~6M px
11314 var testUpTo = navigator.userAgent.toLowerCase().match(/firefox/) ? 6000000 : 1000000000;
11315 var div = document.createElement('div');
11316 document.body.appendChild(div);
11317 while (true) {
11318 var test = res * 2;
11319 div.style.height = test + 'px';
11320 if (test > testUpTo || div.clientHeight !== test) {
11321 break;
11322 }
11323 else {
11324 res = test;
11325 }
11326 }
11327 document.body.removeChild(div);
11328 return res;
11329}
11330function getScrollbarWidth() {
11331 if (browserScrollbarWidth == null) {
11332 initScrollbarWidthAndVisibility();
11333 }
11334 return browserScrollbarWidth;
11335}
11336function initScrollbarWidthAndVisibility() {
11337 var body = document.body;
11338 var div = document.createElement('div');
11339 div.style.width = div.style.height = '100px';
11340 div.style.opacity = '0';
11341 div.style.overflow = 'scroll';
11342 div.style.msOverflowStyle = 'scrollbar'; // needed for WinJS apps
11343 div.style.position = 'absolute';
11344 body.appendChild(div);
11345 var width = div.offsetWidth - div.clientWidth;
11346 // if width is 0 and client width is 0, means the DOM isn't ready
11347 if (width === 0 && div.clientWidth === 0) {
11348 width = null;
11349 }
11350 // remove div
11351 if (div.parentNode) {
11352 div.parentNode.removeChild(div);
11353 }
11354 if (width != null) {
11355 browserScrollbarWidth = width;
11356 invisibleScrollbar = width === 0;
11357 }
11358}
11359function isInvisibleScrollbar() {
11360 if (invisibleScrollbar == null) {
11361 initScrollbarWidthAndVisibility();
11362 }
11363 return invisibleScrollbar;
11364}
11365/** @deprecated */
11366function hasOverflowScrolling() {
11367 var e_1, _a;
11368 var prefixes = ['webkit', 'moz', 'o', 'ms'];
11369 var div = document.createElement('div');
11370 var body = document.getElementsByTagName('body')[0];
11371 var found = false;
11372 var p;
11373 body.appendChild(div);
11374 div.setAttribute('style', prefixes.map(function (prefix) { return "-" + prefix + "-overflow-scrolling: touch"; }).concat('overflow-scrolling: touch').join(';'));
11375 var computedStyle = window.getComputedStyle(div);
11376 if (computedStyle.overflowScrolling === 'touch') {
11377 found = true;
11378 }
11379 if (!found) {
11380 try {
11381 for (var prefixes_1 = __values(prefixes), prefixes_1_1 = prefixes_1.next(); !prefixes_1_1.done; prefixes_1_1 = prefixes_1.next()) {
11382 p = prefixes_1_1.value;
11383 if (computedStyle[p + "OverflowScrolling"] === 'touch') {
11384 found = true;
11385 break;
11386 }
11387 }
11388 }
11389 catch (e_1_1) { e_1 = { error: e_1_1 }; }
11390 finally {
11391 try {
11392 if (prefixes_1_1 && !prefixes_1_1.done && (_a = prefixes_1.return)) _a.call(prefixes_1);
11393 }
11394 finally { if (e_1) throw e_1.error; }
11395 }
11396 }
11397 if (div.parentNode) {
11398 div.parentNode.removeChild(div);
11399 }
11400 return found;
11401}
11402/**
11403 * Gets the document body width
11404 * from: http://stackoverflow.com/questions/1038727/how-to-get-browser-width-using-javascript-code
11405 * @returns {number}
11406 */
11407function getBodyWidth() {
11408 if (document.body) {
11409 return document.body.clientWidth;
11410 }
11411 if (window.innerHeight) {
11412 return window.innerWidth;
11413 }
11414 if (document.documentElement && document.documentElement.clientWidth) {
11415 return document.documentElement.clientWidth;
11416 }
11417 return -1;
11418}
11419/**
11420 * Gets the body height
11421 * from: http://stackoverflow.com/questions/1038727/how-to-get-browser-width-using-javascript-code
11422 * @returns {number}
11423 */
11424function getBodyHeight() {
11425 if (document.body) {
11426 return document.body.clientHeight;
11427 }
11428 if (window.innerHeight) {
11429 return window.innerHeight;
11430 }
11431 if (document.documentElement && document.documentElement.clientHeight) {
11432 return document.documentElement.clientHeight;
11433 }
11434 return -1;
11435}
11436
11437
11438
11439
11440/***/ }),
11441/* 44 */
11442/***/ (function(module, __webpack_exports__, __webpack_require__) {
11443
11444"use strict";
11445__webpack_require__.r(__webpack_exports__);
11446/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaRole", function() { return setAriaRole; });
11447/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getAriaSortState", function() { return getAriaSortState; });
11448/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getAriaLevel", function() { return getAriaLevel; });
11449/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getAriaPosInSet", function() { return getAriaPosInSet; });
11450/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getAriaDescribedBy", function() { return getAriaDescribedBy; });
11451/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaLabel", function() { return setAriaLabel; });
11452/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaLabelledBy", function() { return setAriaLabelledBy; });
11453/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaDescription", function() { return setAriaDescription; });
11454/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaDescribedBy", function() { return setAriaDescribedBy; });
11455/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaLevel", function() { return setAriaLevel; });
11456/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaDisabled", function() { return setAriaDisabled; });
11457/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaExpanded", function() { return setAriaExpanded; });
11458/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeAriaExpanded", function() { return removeAriaExpanded; });
11459/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaSetSize", function() { return setAriaSetSize; });
11460/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaPosInSet", function() { return setAriaPosInSet; });
11461/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaMultiSelectable", function() { return setAriaMultiSelectable; });
11462/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaRowCount", function() { return setAriaRowCount; });
11463/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaRowIndex", function() { return setAriaRowIndex; });
11464/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaColCount", function() { return setAriaColCount; });
11465/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaColIndex", function() { return setAriaColIndex; });
11466/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaColSpan", function() { return setAriaColSpan; });
11467/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaSort", function() { return setAriaSort; });
11468/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeAriaSort", function() { return removeAriaSort; });
11469/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaSelected", function() { return setAriaSelected; });
11470/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAriaChecked", function() { return setAriaChecked; });
11471/**
11472 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
11473 * @version v27.3.0
11474 * @link https://www.ag-grid.com/
11475 * @license MIT
11476 */
11477// ARIA HELPER FUNCTIONS
11478function setAriaAttribute(element, attribute, value) {
11479 element.setAttribute(ariaAttributeName(attribute), value.toString());
11480}
11481function removeAriaAttribute(element, attribute) {
11482 element.removeAttribute(ariaAttributeName(attribute));
11483}
11484function ariaAttributeName(attribute) {
11485 return "aria-" + attribute;
11486}
11487function setAriaRole(element, role) {
11488 if (role) {
11489 element.setAttribute('role', role);
11490 }
11491 else {
11492 element.removeAttribute('role');
11493 }
11494}
11495function getAriaSortState(column) {
11496 var sort;
11497 if (column.isSortAscending()) {
11498 sort = 'ascending';
11499 }
11500 else if (column.isSortDescending()) {
11501 sort = 'descending';
11502 }
11503 else {
11504 sort = 'none';
11505 }
11506 return sort;
11507}
11508// ARIA ATTRIBUTE GETTERS
11509function getAriaLevel(element) {
11510 return parseInt(element.getAttribute('aria-level'), 10);
11511}
11512function getAriaPosInSet(element) {
11513 return parseInt(element.getAttribute('aria-posinset'), 10);
11514}
11515function getAriaDescribedBy(element) {
11516 return element.getAttribute('aria-describedby') || '';
11517}
11518// ARIA ATTRIBUTE SETTERS
11519function setAriaLabel(element, label) {
11520 var key = 'label';
11521 if (label) {
11522 setAriaAttribute(element, key, label);
11523 }
11524 else {
11525 removeAriaAttribute(element, key);
11526 }
11527}
11528function setAriaLabelledBy(element, labelledBy) {
11529 var key = 'labelledby';
11530 if (labelledBy) {
11531 setAriaAttribute(element, key, labelledBy);
11532 }
11533 else {
11534 removeAriaAttribute(element, key);
11535 }
11536}
11537function setAriaDescription(element, description) {
11538 var key = 'description';
11539 if (description) {
11540 setAriaAttribute(element, key, description);
11541 }
11542 else {
11543 removeAriaAttribute(element, key);
11544 }
11545}
11546function setAriaDescribedBy(element, describedby) {
11547 var key = 'describedby';
11548 if (describedby) {
11549 setAriaAttribute(element, key, describedby);
11550 }
11551 else {
11552 removeAriaAttribute(element, key);
11553 }
11554}
11555function setAriaLevel(element, level) {
11556 setAriaAttribute(element, 'level', level);
11557}
11558function setAriaDisabled(element, disabled) {
11559 setAriaAttribute(element, 'disabled', disabled);
11560}
11561function setAriaExpanded(element, expanded) {
11562 setAriaAttribute(element, 'expanded', expanded);
11563}
11564function removeAriaExpanded(element) {
11565 removeAriaAttribute(element, 'expanded');
11566}
11567function setAriaSetSize(element, setsize) {
11568 setAriaAttribute(element, 'setsize', setsize);
11569}
11570function setAriaPosInSet(element, position) {
11571 setAriaAttribute(element, 'posinset', position);
11572}
11573function setAriaMultiSelectable(element, multiSelectable) {
11574 setAriaAttribute(element, 'multiselectable', multiSelectable);
11575}
11576function setAriaRowCount(element, rowCount) {
11577 setAriaAttribute(element, 'rowcount', rowCount);
11578}
11579function setAriaRowIndex(element, rowIndex) {
11580 setAriaAttribute(element, 'rowindex', rowIndex);
11581}
11582function setAriaColCount(element, colCount) {
11583 setAriaAttribute(element, 'colcount', colCount);
11584}
11585function setAriaColIndex(element, colIndex) {
11586 setAriaAttribute(element, 'colindex', colIndex);
11587}
11588function setAriaColSpan(element, colSpan) {
11589 setAriaAttribute(element, 'colspan', colSpan);
11590}
11591function setAriaSort(element, sort) {
11592 setAriaAttribute(element, 'sort', sort);
11593}
11594function removeAriaSort(element) {
11595 removeAriaAttribute(element, 'sort');
11596}
11597function setAriaSelected(element, selected) {
11598 var attributeName = 'selected';
11599 if (selected) {
11600 setAriaAttribute(element, attributeName, selected);
11601 }
11602 else {
11603 removeAriaAttribute(element, attributeName);
11604 }
11605}
11606function setAriaChecked(element, checked) {
11607 setAriaAttribute(element, 'checked', checked === undefined ? 'mixed' : checked);
11608}
11609
11610
11611
11612
11613/***/ }),
11614/* 45 */
11615/***/ (function(module, __webpack_exports__, __webpack_require__) {
11616
11617"use strict";
11618__webpack_require__.r(__webpack_exports__);
11619/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "serialiseDate", function() { return serialiseDate; });
11620/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parseDateTimeFromString", function() { return parseDateTimeFromString; });
11621/* harmony import */ var _number__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(46);
11622/**
11623 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
11624 * @version v27.3.0
11625 * @link https://www.ag-grid.com/
11626 * @license MIT
11627 */
11628var __read = (undefined && undefined.__read) || function (o, n) {
11629 var m = typeof Symbol === "function" && o[Symbol.iterator];
11630 if (!m) return o;
11631 var i = m.call(o), r, ar = [], e;
11632 try {
11633 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
11634 }
11635 catch (error) { e = { error: error }; }
11636 finally {
11637 try {
11638 if (r && !r.done && (m = i["return"])) m.call(i);
11639 }
11640 finally { if (e) throw e.error; }
11641 }
11642 return ar;
11643};
11644
11645/**
11646 * Serialises a Date to a string of format `yyyy-MM-dd HH:mm:ss`.
11647 * An alternative separator can be provided to be used instead of hyphens.
11648 * @param date The date to serialise
11649 * @param includeTime Whether to include the time in the serialised string
11650 * @param separator The separator to use between date parts
11651 */
11652function serialiseDate(date, includeTime, separator) {
11653 if (includeTime === void 0) { includeTime = true; }
11654 if (separator === void 0) { separator = '-'; }
11655 if (!date) {
11656 return null;
11657 }
11658 var serialised = [date.getFullYear(), date.getMonth() + 1, date.getDate()].map(function (part) { return Object(_number__WEBPACK_IMPORTED_MODULE_0__["padStartWidthZeros"])(part, 2); }).join(separator);
11659 if (includeTime) {
11660 serialised += ' ' + [date.getHours(), date.getMinutes(), date.getSeconds()].map(function (part) { return Object(_number__WEBPACK_IMPORTED_MODULE_0__["padStartWidthZeros"])(part, 2); }).join(':');
11661 }
11662 return serialised;
11663}
11664/**
11665 * Parses a date and time from a string in the format `yyyy-MM-dd HH:mm:ss`
11666 */
11667function parseDateTimeFromString(value) {
11668 if (!value) {
11669 return null;
11670 }
11671 var _a = __read(value.split(' '), 2), dateStr = _a[0], timeStr = _a[1];
11672 if (!dateStr) {
11673 return null;
11674 }
11675 var fields = dateStr.split('-').map(function (f) { return parseInt(f, 10); });
11676 if (fields.filter(function (f) { return !isNaN(f); }).length !== 3) {
11677 return null;
11678 }
11679 var _b = __read(fields, 3), year = _b[0], month = _b[1], day = _b[2];
11680 var date = new Date(year, month - 1, day);
11681 if (date.getFullYear() !== year ||
11682 date.getMonth() !== month - 1 ||
11683 date.getDate() !== day) {
11684 // date was not parsed as expected so must have been invalid
11685 return null;
11686 }
11687 if (!timeStr || timeStr === '00:00:00') {
11688 return date;
11689 }
11690 var _c = __read(timeStr.split(':').map(function (part) { return parseInt(part, 10); }), 3), hours = _c[0], minutes = _c[1], seconds = _c[2];
11691 if (hours >= 0 && hours < 24) {
11692 date.setHours(hours);
11693 }
11694 if (minutes >= 0 && minutes < 60) {
11695 date.setMinutes(minutes);
11696 }
11697 if (seconds >= 0 && seconds < 60) {
11698 date.setSeconds(seconds);
11699 }
11700 return date;
11701}
11702
11703
11704
11705
11706/***/ }),
11707/* 46 */
11708/***/ (function(module, __webpack_exports__, __webpack_require__) {
11709
11710"use strict";
11711__webpack_require__.r(__webpack_exports__);
11712/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "padStartWidthZeros", function() { return padStartWidthZeros; });
11713/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createArrayOfNumbers", function() { return createArrayOfNumbers; });
11714/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNumeric", function() { return isNumeric; });
11715/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cleanNumber", function() { return cleanNumber; });
11716/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "decToHex", function() { return decToHex; });
11717/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "formatNumberTwoDecimalPlacesAndCommas", function() { return formatNumberTwoDecimalPlacesAndCommas; });
11718/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "formatNumberCommas", function() { return formatNumberCommas; });
11719/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sum", function() { return sum; });
11720/**
11721 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
11722 * @version v27.3.0
11723 * @link https://www.ag-grid.com/
11724 * @license MIT
11725 */
11726function padStartWidthZeros(value, totalStringSize) {
11727 return value.toString().padStart(totalStringSize, '0');
11728}
11729function createArrayOfNumbers(first, last) {
11730 var result = [];
11731 for (var i = first; i <= last; i++) {
11732 result.push(i);
11733 }
11734 return result;
11735}
11736/**
11737 * Check if a value is numeric
11738 * from http://stackoverflow.com/questions/9716468/is-there-any-function-like-isnumeric-in-javascript-to-validate-numbers
11739 * @param {any} value
11740 * @return {boolean}
11741 */
11742function isNumeric(value) {
11743 return value !== '' && !isNaN(parseFloat(value)) && isFinite(value);
11744}
11745function cleanNumber(value) {
11746 if (typeof value === 'string') {
11747 value = parseInt(value, 10);
11748 }
11749 if (typeof value === 'number') {
11750 return Math.floor(value);
11751 }
11752 return null;
11753}
11754function decToHex(number, bytes) {
11755 var hex = '';
11756 for (var i = 0; i < bytes; i++) {
11757 hex += String.fromCharCode(number & 0xff);
11758 number >>>= 8;
11759 }
11760 return hex;
11761}
11762function formatNumberTwoDecimalPlacesAndCommas(value, thousandSeparator, decimalSeparator) {
11763 if (typeof value !== 'number') {
11764 return '';
11765 }
11766 return formatNumberCommas(Math.round(value * 100) / 100, thousandSeparator, decimalSeparator);
11767}
11768/**
11769 * the native method number.toLocaleString(undefined, {minimumFractionDigits: 0})
11770 * puts in decimal places in IE, so we use this method instead
11771 * from: http://blog.tompawlak.org/number-currency-formatting-javascript
11772 * @param {number} value
11773 * @returns {string}
11774 */
11775function formatNumberCommas(value, thousandSeparator, decimalSeparator) {
11776 if (typeof value !== 'number') {
11777 return '';
11778 }
11779 return value.toString().replace('.', decimalSeparator).replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1" + thousandSeparator);
11780}
11781function sum(values) {
11782 return values == null ? null : values.reduce(function (total, value) { return total + value; }, 0);
11783}
11784
11785
11786
11787
11788/***/ }),
11789/* 47 */
11790/***/ (function(module, __webpack_exports__, __webpack_require__) {
11791
11792"use strict";
11793__webpack_require__.r(__webpack_exports__);
11794/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fuzzyCheckStrings", function() { return fuzzyCheckStrings; });
11795/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fuzzySuggestions", function() { return fuzzySuggestions; });
11796/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "get_bigrams", function() { return get_bigrams; });
11797/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "string_distances", function() { return string_distances; });
11798/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "string_weighted_distances", function() { return string_weighted_distances; });
11799/**
11800 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
11801 * @version v27.3.0
11802 * @link https://www.ag-grid.com/
11803 * @license MIT
11804 */
11805function fuzzyCheckStrings(inputValues, validValues, allSuggestions) {
11806 var fuzzyMatches = {};
11807 var invalidInputs = inputValues.filter(function (inputValue) {
11808 return !validValues.some(function (validValue) { return validValue === inputValue; });
11809 });
11810 if (invalidInputs.length > 0) {
11811 invalidInputs.forEach(function (invalidInput) {
11812 return fuzzyMatches[invalidInput] = fuzzySuggestions(invalidInput, allSuggestions);
11813 });
11814 }
11815 return fuzzyMatches;
11816}
11817/**
11818 *
11819 * @param {String} inputValue The value to be compared against a list of strings
11820 * @param allSuggestions The list of strings to be compared against
11821 * @param hideIrrelevant By default, fuzzy suggestions will just sort the allSuggestions list, set this to true
11822 * to filter out the irrelevant values
11823 * @param weighted Set this to true, to make letters matched in the order they were typed have priority in the results.
11824 */
11825function fuzzySuggestions(inputValue, allSuggestions, hideIrrelevant, weighted) {
11826 var search = weighted ? string_weighted_distances : string_distances;
11827 var thisSuggestions = allSuggestions.map(function (text) { return ({
11828 value: text,
11829 relevance: search(inputValue.toLowerCase(), text.toLocaleLowerCase())
11830 }); });
11831 thisSuggestions.sort(function (a, b) { return b.relevance - a.relevance; });
11832 if (hideIrrelevant) {
11833 thisSuggestions = thisSuggestions.filter(function (suggestion) { return suggestion.relevance !== 0; });
11834 }
11835 return thisSuggestions.map(function (suggestion) { return suggestion.value; });
11836}
11837/**
11838 * Algorithm to do fuzzy search
11839 * from https://stackoverflow.com/questions/23305000/javascript-fuzzy-search-that-makes-sense
11840 * @param {string} from
11841 * @return {[]}
11842 */
11843function get_bigrams(from) {
11844 var s = from.toLowerCase();
11845 var v = new Array(s.length - 1);
11846 var i;
11847 var j;
11848 var ref;
11849 for (i = j = 0, ref = v.length; j <= ref; i = j += 1) {
11850 v[i] = s.slice(i, i + 2);
11851 }
11852 return v;
11853}
11854function string_distances(str1, str2) {
11855 if (str1.length === 0 && str2.length === 0) {
11856 return 0;
11857 }
11858 var pairs1 = get_bigrams(str1);
11859 var pairs2 = get_bigrams(str2);
11860 var union = pairs1.length + pairs2.length;
11861 var hit_count = 0;
11862 var j;
11863 var len;
11864 for (j = 0, len = pairs1.length; j < len; j++) {
11865 var x = pairs1[j];
11866 var k = void 0;
11867 var len1 = void 0;
11868 for (k = 0, len1 = pairs2.length; k < len1; k++) {
11869 var y = pairs2[k];
11870 if (x === y) {
11871 hit_count++;
11872 }
11873 }
11874 }
11875 return hit_count > 0 ? (2 * hit_count) / union : 0;
11876}
11877function string_weighted_distances(str1, str2) {
11878 var a = str1.replace(/\s/g, '');
11879 var b = str2.replace(/\s/g, '');
11880 var weight = 0;
11881 var lastIndex = 0;
11882 for (var i = 0; i < a.length; i++) {
11883 var idx = b.indexOf(a[i], lastIndex);
11884 if (idx === -1) {
11885 continue;
11886 }
11887 lastIndex = idx;
11888 weight += (100 - (lastIndex * 100 / 10000) * 100);
11889 }
11890 return weight;
11891}
11892
11893
11894
11895
11896/***/ }),
11897/* 48 */
11898/***/ (function(module, __webpack_exports__, __webpack_require__) {
11899
11900"use strict";
11901__webpack_require__.r(__webpack_exports__);
11902/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "iconNameClassMap", function() { return iconNameClassMap; });
11903/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createIcon", function() { return createIcon; });
11904/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createIconNoSpan", function() { return createIconNoSpan; });
11905/* harmony import */ var _dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(42);
11906/* harmony import */ var _aria__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(44);
11907/**
11908 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
11909 * @version v27.3.0
11910 * @link https://www.ag-grid.com/
11911 * @license MIT
11912 */
11913
11914
11915//
11916// IMPORTANT NOTE!
11917//
11918// If you change the list below, copy/paste the new content into the docs page javascript-grid-icons
11919//
11920var iconNameClassMap = {
11921 // header column group shown when expanded (click to contract)
11922 columnGroupOpened: 'expanded',
11923 // header column group shown when contracted (click to expand)
11924 columnGroupClosed: 'contracted',
11925 // tool panel column group contracted (click to expand)
11926 columnSelectClosed: 'tree-closed',
11927 // tool panel column group expanded (click to contract)
11928 columnSelectOpen: 'tree-open',
11929 // column tool panel header expand/collapse all button, shown when some children are expanded and
11930 // others are collapsed
11931 columnSelectIndeterminate: 'tree-indeterminate',
11932 // shown on ghost icon while dragging column to the side of the grid to pin
11933 columnMovePin: 'pin',
11934 // shown on ghost icon while dragging over part of the page that is not a drop zone
11935 columnMoveHide: 'eye-slash',
11936 // shown on ghost icon while dragging columns to reorder
11937 columnMoveMove: 'arrows',
11938 // animating icon shown when dragging a column to the right of the grid causes horizontal scrolling
11939 columnMoveLeft: 'left',
11940 // animating icon shown when dragging a column to the left of the grid causes horizontal scrolling
11941 columnMoveRight: 'right',
11942 // shown on ghost icon while dragging over Row Groups drop zone
11943 columnMoveGroup: 'group',
11944 // shown on ghost icon while dragging over Values drop zone
11945 columnMoveValue: 'aggregation',
11946 // shown on ghost icon while dragging over pivot drop zone
11947 columnMovePivot: 'pivot',
11948 // shown on ghost icon while dragging over drop zone that doesn't support it, e.g.
11949 // string column over aggregation drop zone
11950 dropNotAllowed: 'not-allowed',
11951 // shown on row group when contracted (click to expand)
11952 groupContracted: 'tree-closed',
11953 // shown on row group when expanded (click to contract)
11954 groupExpanded: 'tree-open',
11955 // context menu chart item
11956 chart: 'chart',
11957 // chart window title bar
11958 close: 'cross',
11959 // X (remove) on column 'pill' after adding it to a drop zone list
11960 cancel: 'cancel',
11961 // indicates the currently active pin state in the "Pin column" sub-menu of the column menu
11962 check: 'tick',
11963 // "go to first" button in pagination controls
11964 first: 'first',
11965 // "go to previous" button in pagination controls
11966 previous: 'previous',
11967 // "go to next" button in pagination controls
11968 next: 'next',
11969 // "go to last" button in pagination controls
11970 last: 'last',
11971 // shown on top right of chart when chart is linked to range data (click to unlink)
11972 linked: 'linked',
11973 // shown on top right of chart when chart is not linked to range data (click to link)
11974 unlinked: 'unlinked',
11975 // "Choose colour" button on chart settings tab
11976 colorPicker: 'color-picker',
11977 // rotating spinner shown by the loading cell renderer
11978 groupLoading: 'loading',
11979 // button to launch enterprise column menu
11980 menu: 'menu',
11981 // filter tool panel tab
11982 filter: 'filter',
11983 // column tool panel tab
11984 columns: 'columns',
11985 // button in chart regular size window title bar (click to maximise)
11986 maximize: 'maximize',
11987 // button in chart maximised window title bar (click to make regular size)
11988 minimize: 'minimize',
11989 // "Pin column" item in column header menu
11990 menuPin: 'pin',
11991 // "Value aggregation" column menu item (shown on numeric columns when grouping is active)"
11992 menuValue: 'aggregation',
11993 // "Group by {column-name}" item in column header menu
11994 menuAddRowGroup: 'group',
11995 // "Un-Group by {column-name}" item in column header menu
11996 menuRemoveRowGroup: 'group',
11997 // context menu copy item
11998 clipboardCopy: 'copy',
11999 // context menu paste item
12000 clipboardPaste: 'paste',
12001 // identifies the pivot drop zone
12002 pivotPanel: 'pivot',
12003 // "Row groups" drop zone in column tool panel
12004 rowGroupPanel: 'group',
12005 // columns tool panel Values drop zone
12006 valuePanel: 'aggregation',
12007 // drag handle used to pick up draggable columns
12008 columnDrag: 'grip',
12009 // drag handle used to pick up draggable rows
12010 rowDrag: 'grip',
12011 // context menu export item
12012 save: 'save',
12013 // csv export
12014 csvExport: 'csv',
12015 // excel export,
12016 excelExport: 'excel',
12017 // icon on dropdown editors
12018 smallDown: 'small-down',
12019 // version of small-right used in RTL mode
12020 smallLeft: 'small-left',
12021 // separater between column 'pills' when you add multiple columns to the header drop zone
12022 smallRight: 'small-right',
12023 smallUp: 'small-up',
12024 // show on column header when column is sorted ascending
12025 sortAscending: 'asc',
12026 // show on column header when column is sorted descending
12027 sortDescending: 'desc',
12028 // show on column header when column has no sort, only when enabled with gridOptions.unSortIcon=true
12029 sortUnSort: 'none'
12030};
12031/**
12032 * If icon provided, use this (either a string, or a function callback).
12033 * if not, then use the default icon from the theme
12034 * @param {string} iconName
12035 * @param {GridOptionsWrapper} gridOptionsWrapper
12036 * @param {Column | null} [column]
12037 * @returns {HTMLElement}
12038 */
12039function createIcon(iconName, gridOptionsWrapper, column) {
12040 var iconContents = createIconNoSpan(iconName, gridOptionsWrapper, column);
12041 if (iconContents && iconContents.className.indexOf('ag-icon') > -1) {
12042 return iconContents;
12043 }
12044 var eResult = document.createElement('span');
12045 eResult.appendChild(iconContents);
12046 return eResult;
12047}
12048function createIconNoSpan(iconName, gridOptionsWrapper, column, forceCreate) {
12049 var userProvidedIcon = null;
12050 // check col for icon first
12051 var icons = column && column.getColDef().icons;
12052 if (icons) {
12053 userProvidedIcon = icons[iconName];
12054 }
12055 // if not in col, try grid options
12056 if (gridOptionsWrapper && !userProvidedIcon) {
12057 var optionsIcons = gridOptionsWrapper.getIcons();
12058 if (optionsIcons) {
12059 userProvidedIcon = optionsIcons[iconName];
12060 }
12061 }
12062 // now if user provided, use it
12063 if (userProvidedIcon) {
12064 var rendererResult = void 0;
12065 if (typeof userProvidedIcon === 'function') {
12066 rendererResult = userProvidedIcon();
12067 }
12068 else if (typeof userProvidedIcon === 'string') {
12069 rendererResult = userProvidedIcon;
12070 }
12071 else {
12072 throw new Error('icon from grid options needs to be a string or a function');
12073 }
12074 if (typeof rendererResult === 'string') {
12075 return Object(_dom__WEBPACK_IMPORTED_MODULE_0__["loadTemplate"])(rendererResult);
12076 }
12077 if (Object(_dom__WEBPACK_IMPORTED_MODULE_0__["isNodeOrElement"])(rendererResult)) {
12078 return rendererResult;
12079 }
12080 console.warn('AG Grid: iconRenderer should return back a string or a dom object');
12081 }
12082 else {
12083 var span = document.createElement('span');
12084 var cssClass = iconNameClassMap[iconName];
12085 if (!cssClass) {
12086 if (!forceCreate) {
12087 console.warn("AG Grid: Did not find icon " + iconName);
12088 cssClass = '';
12089 }
12090 else {
12091 cssClass = iconName;
12092 }
12093 }
12094 span.setAttribute('class', "ag-icon ag-icon-" + cssClass);
12095 span.setAttribute('unselectable', 'on');
12096 Object(_aria__WEBPACK_IMPORTED_MODULE_1__["setAriaRole"])(span, 'presentation');
12097 return span;
12098 }
12099}
12100
12101
12102
12103
12104/***/ }),
12105/* 49 */
12106/***/ (function(module, __webpack_exports__, __webpack_require__) {
12107
12108"use strict";
12109__webpack_require__.r(__webpack_exports__);
12110/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isEventFromPrintableCharacter", function() { return isEventFromPrintableCharacter; });
12111/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isUserSuppressingKeyboardEvent", function() { return isUserSuppressingKeyboardEvent; });
12112/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isUserSuppressingHeaderKeyboardEvent", function() { return isUserSuppressingHeaderKeyboardEvent; });
12113/* harmony import */ var _browser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(43);
12114/* harmony import */ var _generic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7);
12115/**
12116 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
12117 * @version v27.3.0
12118 * @link https://www.ag-grid.com/
12119 * @license MIT
12120 */
12121
12122
12123var NUMPAD_DEL_NUMLOCK_ON_KEY = 'Del';
12124var NUMPAD_DEL_NUMLOCK_ON_CHARCODE = 46;
12125function isEventFromPrintableCharacter(event) {
12126 // no allowed printable chars have alt or ctrl key combinations
12127 if (event.altKey || event.ctrlKey || event.metaKey) {
12128 return false;
12129 }
12130 // if key is length 1, eg if it is 'a' for the a key, or '2' for the '2' key.
12131 // non-printable characters have names, eg 'Enter' or 'Backspace'.
12132 var printableCharacter = event.key.length === 1;
12133 // IE11 & Edge treat the numpad del key differently - with numlock on we get "Del" for key,
12134 // so this addition checks if its IE11/Edge and handles that specific case the same was as all other browsers
12135 var numpadDelWithNumlockOnForEdgeOrIe = isNumpadDelWithNumLockOnForEdge(event);
12136 return printableCharacter || numpadDelWithNumlockOnForEdgeOrIe;
12137}
12138/**
12139 * Allows user to tell the grid to skip specific keyboard events
12140 * @param {GridOptionsWrapper} gridOptionsWrapper
12141 * @param {KeyboardEvent} keyboardEvent
12142 * @param {RowNode} rowNode
12143 * @param {Column} column
12144 * @param {boolean} editing
12145 * @returns {boolean}
12146 */
12147function isUserSuppressingKeyboardEvent(gridOptionsWrapper, keyboardEvent, rowNode, column, editing) {
12148 var gridOptionsFunc = gridOptionsWrapper.getSuppressKeyboardEventFunc();
12149 var colDefFunc = column ? column.getColDef().suppressKeyboardEvent : undefined;
12150 // if no callbacks provided by user, then do nothing
12151 if (!gridOptionsFunc && !colDefFunc) {
12152 return false;
12153 }
12154 var params = {
12155 event: keyboardEvent,
12156 editing: editing,
12157 column: column,
12158 api: gridOptionsWrapper.getApi(),
12159 node: rowNode,
12160 data: rowNode.data,
12161 colDef: column.getColDef(),
12162 context: gridOptionsWrapper.getContext(),
12163 columnApi: gridOptionsWrapper.getColumnApi()
12164 };
12165 // colDef get first preference on suppressing events
12166 if (colDefFunc) {
12167 var colDefFuncResult = colDefFunc(params);
12168 // if colDef func suppressed, then return now, no need to call gridOption func
12169 if (colDefFuncResult) {
12170 return true;
12171 }
12172 }
12173 if (gridOptionsFunc) {
12174 // if gridOption func, return the result
12175 return gridOptionsFunc(params);
12176 }
12177 // otherwise return false, don't suppress, as colDef didn't suppress and no func on gridOptions
12178 return false;
12179}
12180function isUserSuppressingHeaderKeyboardEvent(gridOptionsWrapper, keyboardEvent, headerRowIndex, column) {
12181 var colDef = column.getDefinition();
12182 var colDefFunc = colDef && colDef.suppressHeaderKeyboardEvent;
12183 if (!Object(_generic__WEBPACK_IMPORTED_MODULE_1__["exists"])(colDefFunc)) {
12184 return false;
12185 }
12186 var params = {
12187 api: gridOptionsWrapper.getApi(),
12188 columnApi: gridOptionsWrapper.getColumnApi(),
12189 context: gridOptionsWrapper.getContext(),
12190 colDef: colDef,
12191 column: column,
12192 headerRowIndex: headerRowIndex,
12193 event: keyboardEvent
12194 };
12195 return !!colDefFunc(params);
12196}
12197function isNumpadDelWithNumLockOnForEdge(event) {
12198 return (Object(_browser__WEBPACK_IMPORTED_MODULE_0__["isBrowserEdge"])()) &&
12199 event.key === NUMPAD_DEL_NUMLOCK_ON_KEY &&
12200 event.charCode === NUMPAD_DEL_NUMLOCK_ON_CHARCODE;
12201}
12202
12203
12204
12205
12206/***/ }),
12207/* 50 */
12208/***/ (function(module, __webpack_exports__, __webpack_require__) {
12209
12210"use strict";
12211__webpack_require__.r(__webpack_exports__);
12212/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "areEventsNear", function() { return areEventsNear; });
12213/**
12214 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
12215 * @version v27.3.0
12216 * @link https://www.ag-grid.com/
12217 * @license MIT
12218 */
12219/**
12220 * `True` if the event is close to the original event by X pixels either vertically or horizontally.
12221 * we only start dragging after X pixels so this allows us to know if we should start dragging yet.
12222 * @param {MouseEvent | TouchEvent} e1
12223 * @param {MouseEvent | TouchEvent} e2
12224 * @param {number} pixelCount
12225 * @returns {boolean}
12226 */
12227function areEventsNear(e1, e2, pixelCount) {
12228 // by default, we wait 4 pixels before starting the drag
12229 if (pixelCount === 0) {
12230 return false;
12231 }
12232 var diffX = Math.abs(e1.clientX - e2.clientX);
12233 var diffY = Math.abs(e1.clientY - e2.clientY);
12234 return Math.max(diffX, diffY) <= pixelCount;
12235}
12236
12237
12238
12239
12240/***/ }),
12241/* 51 */
12242/***/ (function(module, __webpack_exports__, __webpack_require__) {
12243
12244"use strict";
12245__webpack_require__.r(__webpack_exports__);
12246/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sortRowNodesByOrder", function() { return sortRowNodesByOrder; });
12247/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "traverseNodesWithKey", function() { return traverseNodesWithKey; });
12248/**
12249 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
12250 * @version v27.3.0
12251 * @link https://www.ag-grid.com/
12252 * @license MIT
12253 */
12254/**
12255 * Gets called by: a) ClientSideNodeManager and b) GroupStage to do sorting.
12256 * when in ClientSideNodeManager we always have indexes (as this sorts the items the
12257 * user provided) but when in GroupStage, the nodes can contain filler nodes that
12258 * don't have order id's
12259 * @param {RowNode[]} rowNodes
12260 * @param {Object} rowNodeOrder
12261 */
12262function sortRowNodesByOrder(rowNodes, rowNodeOrder) {
12263 if (!rowNodes) {
12264 return;
12265 }
12266 var comparator = function (nodeA, nodeB) {
12267 var positionA = rowNodeOrder[nodeA.id];
12268 var positionB = rowNodeOrder[nodeB.id];
12269 var aHasIndex = positionA !== undefined;
12270 var bHasIndex = positionB !== undefined;
12271 var bothNodesAreUserNodes = aHasIndex && bHasIndex;
12272 var bothNodesAreFillerNodes = !aHasIndex && !bHasIndex;
12273 if (bothNodesAreUserNodes) {
12274 // when comparing two nodes the user has provided, they always
12275 // have indexes
12276 return positionA - positionB;
12277 }
12278 if (bothNodesAreFillerNodes) {
12279 // when comparing two filler nodes, we have no index to compare them
12280 // against, however we want this sorting to be deterministic, so that
12281 // the rows don't jump around as the user does delta updates. so we
12282 // want the same sort result. so we use the __objectId - which doesn't make sense
12283 // from a sorting point of view, but does give consistent behaviour between
12284 // calls. otherwise groups jump around as delta updates are done.
12285 // note: previously here we used nodeId, however this gave a strange order
12286 // as string ordering of numbers is wrong, so using id based on creation order
12287 // as least gives better looking order.
12288 return nodeA.__objectId - nodeB.__objectId;
12289 }
12290 if (aHasIndex) {
12291 return 1;
12292 }
12293 return -1;
12294 };
12295 // check if the list first needs sorting
12296 var rowNodeA;
12297 var rowNodeB;
12298 var atLeastOneOutOfOrder = false;
12299 for (var i = 0; i < rowNodes.length - 1; i++) {
12300 rowNodeA = rowNodes[i];
12301 rowNodeB = rowNodes[i + 1];
12302 if (comparator(rowNodeA, rowNodeB) > 0) {
12303 atLeastOneOutOfOrder = true;
12304 break;
12305 }
12306 }
12307 if (atLeastOneOutOfOrder) {
12308 rowNodes.sort(comparator);
12309 }
12310}
12311function traverseNodesWithKey(nodes, callback) {
12312 var keyParts = [];
12313 recursiveSearchNodes(nodes);
12314 function recursiveSearchNodes(currentNodes) {
12315 if (!currentNodes) {
12316 return;
12317 }
12318 currentNodes.forEach(function (node) {
12319 // also checking for children for tree data
12320 if (node.group || node.hasChildren()) {
12321 keyParts.push(node.key);
12322 var key = keyParts.join('|');
12323 callback(node, key);
12324 recursiveSearchNodes(node.childrenAfterGroup);
12325 keyParts.pop();
12326 }
12327 });
12328 }
12329}
12330
12331
12332
12333
12334/***/ }),
12335/* 52 */
12336/***/ (function(module, __webpack_exports__, __webpack_require__) {
12337
12338"use strict";
12339__webpack_require__.r(__webpack_exports__);
12340/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "convertToSet", function() { return convertToSet; });
12341/**
12342 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
12343 * @version v27.3.0
12344 * @link https://www.ag-grid.com/
12345 * @license MIT
12346 */
12347function convertToSet(list) {
12348 var set = new Set();
12349 list.forEach(function (x) { return set.add(x); });
12350 return set;
12351}
12352
12353
12354
12355
12356/***/ }),
12357/* 53 */
12358/***/ (function(module, __webpack_exports__, __webpack_require__) {
12359
12360"use strict";
12361__webpack_require__.r(__webpack_exports__);
12362/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NumberSequence", function() { return NumberSequence; });
12363/**
12364 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
12365 * @version v27.3.0
12366 * @link https://www.ag-grid.com/
12367 * @license MIT
12368 */
12369var NumberSequence = /** @class */ (function () {
12370 function NumberSequence(initValue, step) {
12371 if (initValue === void 0) { initValue = 0; }
12372 if (step === void 0) { step = 1; }
12373 this.nextValue = initValue;
12374 this.step = step;
12375 }
12376 NumberSequence.prototype.next = function () {
12377 var valToReturn = this.nextValue;
12378 this.nextValue += this.step;
12379 return valToReturn;
12380 };
12381 NumberSequence.prototype.peek = function () {
12382 return this.nextValue;
12383 };
12384 NumberSequence.prototype.skip = function (count) {
12385 this.nextValue += count;
12386 };
12387 return NumberSequence;
12388}());
12389
12390
12391
12392
12393
12394/***/ }),
12395/* 54 */
12396/***/ (function(module, __webpack_exports__, __webpack_require__) {
12397
12398"use strict";
12399__webpack_require__.r(__webpack_exports__);
12400/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgPromiseStatus", function() { return AgPromiseStatus; });
12401/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgPromise", function() { return AgPromise; });
12402/**
12403 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
12404 * @version v27.3.0
12405 * @link https://www.ag-grid.com/
12406 * @license MIT
12407 */
12408var AgPromiseStatus;
12409(function (AgPromiseStatus) {
12410 AgPromiseStatus[AgPromiseStatus["IN_PROGRESS"] = 0] = "IN_PROGRESS";
12411 AgPromiseStatus[AgPromiseStatus["RESOLVED"] = 1] = "RESOLVED";
12412})(AgPromiseStatus || (AgPromiseStatus = {}));
12413var AgPromise = /** @class */ (function () {
12414 function AgPromise(callback) {
12415 var _this = this;
12416 this.status = AgPromiseStatus.IN_PROGRESS;
12417 this.resolution = null;
12418 this.waiters = [];
12419 callback(function (value) { return _this.onDone(value); }, function (params) { return _this.onReject(params); });
12420 }
12421 AgPromise.all = function (promises) {
12422 return new AgPromise(function (resolve) {
12423 var remainingToResolve = promises.length;
12424 var combinedValues = new Array(remainingToResolve);
12425 promises.forEach(function (promise, index) {
12426 promise.then(function (value) {
12427 combinedValues[index] = value;
12428 remainingToResolve--;
12429 if (remainingToResolve === 0) {
12430 resolve(combinedValues);
12431 }
12432 });
12433 });
12434 });
12435 };
12436 AgPromise.resolve = function (value) {
12437 if (value === void 0) { value = null; }
12438 return new AgPromise(function (resolve) { return resolve(value); });
12439 };
12440 AgPromise.prototype.then = function (func) {
12441 var _this = this;
12442 return new AgPromise(function (resolve) {
12443 if (_this.status === AgPromiseStatus.RESOLVED) {
12444 resolve(func(_this.resolution));
12445 }
12446 else {
12447 _this.waiters.push(function (value) { return resolve(func(value)); });
12448 }
12449 });
12450 };
12451 AgPromise.prototype.resolveNow = function (ifNotResolvedValue, ifResolved) {
12452 return this.status === AgPromiseStatus.RESOLVED ? ifResolved(this.resolution) : ifNotResolvedValue;
12453 };
12454 AgPromise.prototype.onDone = function (value) {
12455 this.status = AgPromiseStatus.RESOLVED;
12456 this.resolution = value;
12457 this.waiters.forEach(function (waiter) { return waiter(value); });
12458 };
12459 AgPromise.prototype.onReject = function (params) {
12460 console.warn('TBI');
12461 };
12462 return AgPromise;
12463}());
12464
12465
12466
12467
12468
12469/***/ }),
12470/* 55 */
12471/***/ (function(module, __webpack_exports__, __webpack_require__) {
12472
12473"use strict";
12474__webpack_require__.r(__webpack_exports__);
12475/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Timer", function() { return Timer; });
12476/**
12477 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
12478 * @version v27.3.0
12479 * @link https://www.ag-grid.com/
12480 * @license MIT
12481 */
12482/**
12483 * A Util Class only used when debugging for printing time to console
12484 */
12485var Timer = /** @class */ (function () {
12486 function Timer() {
12487 this.timestamp = new Date().getTime();
12488 }
12489 Timer.prototype.print = function (msg) {
12490 var duration = (new Date().getTime()) - this.timestamp;
12491 console.info(msg + " = " + duration);
12492 this.timestamp = new Date().getTime();
12493 };
12494 return Timer;
12495}());
12496
12497
12498
12499
12500
12501/***/ }),
12502/* 56 */
12503/***/ (function(module, __webpack_exports__, __webpack_require__) {
12504
12505"use strict";
12506__webpack_require__.r(__webpack_exports__);
12507/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CustomTooltipFeature", function() { return CustomTooltipFeature; });
12508/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
12509/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
12510/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
12511/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(43);
12512/**
12513 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
12514 * @version v27.3.0
12515 * @link https://www.ag-grid.com/
12516 * @license MIT
12517 */
12518var __extends = (undefined && undefined.__extends) || (function () {
12519 var extendStatics = function (d, b) {
12520 extendStatics = Object.setPrototypeOf ||
12521 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
12522 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
12523 return extendStatics(d, b);
12524 };
12525 return function (d, b) {
12526 extendStatics(d, b);
12527 function __() { this.constructor = d; }
12528 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
12529 };
12530})();
12531var __assign = (undefined && undefined.__assign) || function () {
12532 __assign = Object.assign || function(t) {
12533 for (var s, i = 1, n = arguments.length; i < n; i++) {
12534 s = arguments[i];
12535 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
12536 t[p] = s[p];
12537 }
12538 return t;
12539 };
12540 return __assign.apply(this, arguments);
12541};
12542var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
12543 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
12544 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
12545 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
12546 return c > 3 && r && Object.defineProperty(target, key, r), r;
12547};
12548
12549
12550
12551
12552var TooltipStates;
12553(function (TooltipStates) {
12554 TooltipStates[TooltipStates["NOTHING"] = 0] = "NOTHING";
12555 TooltipStates[TooltipStates["WAITING_TO_SHOW"] = 1] = "WAITING_TO_SHOW";
12556 TooltipStates[TooltipStates["SHOWING"] = 2] = "SHOWING";
12557})(TooltipStates || (TooltipStates = {}));
12558var CustomTooltipFeature = /** @class */ (function (_super) {
12559 __extends(CustomTooltipFeature, _super);
12560 function CustomTooltipFeature(parentComp) {
12561 var _this = _super.call(this) || this;
12562 _this.DEFAULT_SHOW_TOOLTIP_DELAY = 2000;
12563 _this.DEFAULT_HIDE_TOOLTIP_DELAY = 10000;
12564 _this.SHOW_QUICK_TOOLTIP_DIFF = 1000;
12565 _this.FADE_OUT_TOOLTIP_TIMEOUT = 1000;
12566 _this.state = TooltipStates.NOTHING;
12567 // when showing the tooltip, we need to make sure it's the most recent instance we request, as due to
12568 // async we could request two tooltips before the first instance returns, in which case we should
12569 // disregard the second instance.
12570 _this.tooltipInstanceCount = 0;
12571 _this.tooltipMouseTrack = false;
12572 _this.parentComp = parentComp;
12573 return _this;
12574 }
12575 CustomTooltipFeature.prototype.postConstruct = function () {
12576 this.tooltipShowDelay = this.gridOptionsWrapper.getTooltipDelay('show') || this.DEFAULT_SHOW_TOOLTIP_DELAY;
12577 this.tooltipHideDelay = this.gridOptionsWrapper.getTooltipDelay('hide') || this.DEFAULT_HIDE_TOOLTIP_DELAY;
12578 this.tooltipMouseTrack = this.gridOptionsWrapper.isTooltipMouseTrack();
12579 var el = this.parentComp.getGui();
12580 this.addManagedListener(el, 'mouseenter', this.onMouseEnter.bind(this));
12581 this.addManagedListener(el, 'mouseleave', this.onMouseLeave.bind(this));
12582 this.addManagedListener(el, 'mousemove', this.onMouseMove.bind(this));
12583 this.addManagedListener(el, 'mousedown', this.onMouseDown.bind(this));
12584 this.addManagedListener(el, 'keydown', this.onKeyDown.bind(this));
12585 };
12586 CustomTooltipFeature.prototype.destroy = function () {
12587 // if this component gets destroyed while tooltip is showing, need to make sure
12588 // we don't end with no mouseLeave event resulting in zombie tooltip
12589 this.setToDoNothing();
12590 _super.prototype.destroy.call(this);
12591 };
12592 CustomTooltipFeature.prototype.onMouseEnter = function (e) {
12593 if (Object(_utils_browser__WEBPACK_IMPORTED_MODULE_3__["isIOSUserAgent"])()) {
12594 return;
12595 }
12596 // every mouseenter should be following by a mouseleave, however for some unkonwn, it's possible for
12597 // mouseenter to be called twice in a row, which can happen if editing the cell. this was reported
12598 // in https://ag-grid.atlassian.net/browse/AG-4422. to get around this, we check the state, and if
12599 // state is !=nothing, then we know mouseenter was already received.
12600 if (this.state != TooltipStates.NOTHING) {
12601 return;
12602 }
12603 // if another tooltip was hidden very recently, we only wait 200ms to show, not the normal waiting time
12604 var delay = this.isLastTooltipHiddenRecently() ? 200 : this.tooltipShowDelay;
12605 this.showTooltipTimeoutId = window.setTimeout(this.showTooltip.bind(this), delay);
12606 this.lastMouseEvent = e;
12607 this.state = TooltipStates.WAITING_TO_SHOW;
12608 };
12609 CustomTooltipFeature.prototype.onMouseLeave = function () {
12610 this.setToDoNothing();
12611 };
12612 CustomTooltipFeature.prototype.onKeyDown = function () {
12613 this.setToDoNothing();
12614 };
12615 CustomTooltipFeature.prototype.setToDoNothing = function () {
12616 if (this.state === TooltipStates.SHOWING) {
12617 this.hideTooltip();
12618 }
12619 this.clearTimeouts();
12620 this.state = TooltipStates.NOTHING;
12621 };
12622 CustomTooltipFeature.prototype.onMouseMove = function (e) {
12623 // there is a delay from the time we mouseOver a component and the time the
12624 // tooltip is displayed, so we need to track mousemove to be able to correctly
12625 // position the tooltip when showTooltip is called.
12626 this.lastMouseEvent = e;
12627 if (this.tooltipMouseTrack &&
12628 this.state === TooltipStates.SHOWING &&
12629 this.tooltipComp) {
12630 this.positionTooltipUnderLastMouseEvent();
12631 }
12632 };
12633 CustomTooltipFeature.prototype.onMouseDown = function () {
12634 this.setToDoNothing();
12635 };
12636 CustomTooltipFeature.prototype.hideTooltip = function () {
12637 // check if comp exists - due to async, although we asked for
12638 // one, the instance may not be back yet
12639 if (this.tooltipComp) {
12640 this.destroyTooltipComp();
12641 CustomTooltipFeature.lastTooltipHideTime = new Date().getTime();
12642 }
12643 this.state = TooltipStates.NOTHING;
12644 };
12645 CustomTooltipFeature.prototype.destroyTooltipComp = function () {
12646 var _this = this;
12647 // add class to fade out the tooltip
12648 this.tooltipComp.getGui().classList.add('ag-tooltip-hiding');
12649 // make local copies of these variables, as we use them in the async function below,
12650 // and we clear then to 'undefined' later, so need to take a copy before they are undefined.
12651 var tooltipPopupDestroyFunc = this.tooltipPopupDestroyFunc;
12652 var tooltipComp = this.tooltipComp;
12653 window.setTimeout(function () {
12654 tooltipPopupDestroyFunc();
12655 _this.getContext().destroyBean(tooltipComp);
12656 }, this.FADE_OUT_TOOLTIP_TIMEOUT);
12657 this.tooltipPopupDestroyFunc = undefined;
12658 this.tooltipComp = undefined;
12659 };
12660 CustomTooltipFeature.prototype.isLastTooltipHiddenRecently = function () {
12661 // return true if <1000ms since last time we hid a tooltip
12662 var now = new Date().getTime();
12663 var then = CustomTooltipFeature.lastTooltipHideTime;
12664 return (now - then) < this.SHOW_QUICK_TOOLTIP_DIFF;
12665 };
12666 CustomTooltipFeature.prototype.showTooltip = function () {
12667 var params = __assign({}, this.parentComp.getTooltipParams());
12668 if (!Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(params.value)) {
12669 this.setToDoNothing();
12670 return;
12671 }
12672 this.state = TooltipStates.SHOWING;
12673 this.tooltipInstanceCount++;
12674 // we pass in tooltipInstanceCount so the callback knows what the count was when
12675 // we requested the tooltip, so if another tooltip was requested in the mean time
12676 // we disregard it
12677 var callback = this.newTooltipComponentCallback.bind(this, this.tooltipInstanceCount);
12678 var userDetails = this.userComponentFactory.getTooltipCompDetails(params);
12679 userDetails.newAgStackInstance().then(callback);
12680 };
12681 CustomTooltipFeature.prototype.newTooltipComponentCallback = function (tooltipInstanceCopy, tooltipComp) {
12682 var compNoLongerNeeded = this.state !== TooltipStates.SHOWING || this.tooltipInstanceCount !== tooltipInstanceCopy;
12683 if (compNoLongerNeeded) {
12684 this.getContext().destroyBean(tooltipComp);
12685 return;
12686 }
12687 var eGui = tooltipComp.getGui();
12688 this.tooltipComp = tooltipComp;
12689 if (!eGui.classList.contains('ag-tooltip')) {
12690 eGui.classList.add('ag-tooltip-custom');
12691 }
12692 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
12693 var addPopupRes = this.popupService.addPopup({
12694 eChild: eGui,
12695 ariaLabel: translate('ariaLabelTooltip', 'Tooltip')
12696 });
12697 if (addPopupRes) {
12698 this.tooltipPopupDestroyFunc = addPopupRes.hideFunc;
12699 }
12700 // this.tooltipPopupDestroyFunc = this.popupService.addPopup(false, eGui, false);
12701 this.positionTooltipUnderLastMouseEvent();
12702 this.hideTooltipTimeoutId = window.setTimeout(this.hideTooltip.bind(this), this.tooltipHideDelay);
12703 };
12704 CustomTooltipFeature.prototype.positionTooltipUnderLastMouseEvent = function () {
12705 this.popupService.positionPopupUnderMouseEvent({
12706 type: 'tooltip',
12707 mouseEvent: this.lastMouseEvent,
12708 ePopup: this.tooltipComp.getGui(),
12709 nudgeY: 18
12710 });
12711 };
12712 CustomTooltipFeature.prototype.clearTimeouts = function () {
12713 if (this.showTooltipTimeoutId) {
12714 window.clearTimeout(this.showTooltipTimeoutId);
12715 this.showTooltipTimeoutId = undefined;
12716 }
12717 if (this.hideTooltipTimeoutId) {
12718 window.clearTimeout(this.hideTooltipTimeoutId);
12719 this.hideTooltipTimeoutId = undefined;
12720 }
12721 };
12722 __decorate([
12723 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('popupService')
12724 ], CustomTooltipFeature.prototype, "popupService", void 0);
12725 __decorate([
12726 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('userComponentFactory')
12727 ], CustomTooltipFeature.prototype, "userComponentFactory", void 0);
12728 __decorate([
12729 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
12730 ], CustomTooltipFeature.prototype, "columnApi", void 0);
12731 __decorate([
12732 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
12733 ], CustomTooltipFeature.prototype, "gridApi", void 0);
12734 __decorate([
12735 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
12736 ], CustomTooltipFeature.prototype, "postConstruct", null);
12737 return CustomTooltipFeature;
12738}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
12739
12740
12741
12742
12743
12744/***/ }),
12745/* 57 */
12746/***/ (function(module, __webpack_exports__, __webpack_require__) {
12747
12748"use strict";
12749__webpack_require__.r(__webpack_exports__);
12750/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "QuerySelector", function() { return QuerySelector; });
12751/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RefSelector", function() { return RefSelector; });
12752/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(14);
12753/**
12754 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
12755 * @version v27.3.0
12756 * @link https://www.ag-grid.com/
12757 * @license MIT
12758 */
12759
12760function QuerySelector(selector) {
12761 return querySelectorFunc.bind(this, selector, undefined);
12762}
12763function RefSelector(ref) {
12764 return querySelectorFunc.bind(this, "[ref=" + ref + "]", ref);
12765}
12766function querySelectorFunc(selector, refSelector, classPrototype, methodOrAttributeName, index) {
12767 if (selector === null) {
12768 console.error('AG Grid: QuerySelector selector should not be null');
12769 return;
12770 }
12771 if (typeof index === 'number') {
12772 console.error('AG Grid: QuerySelector should be on an attribute');
12773 return;
12774 }
12775 addToObjectProps(classPrototype, 'querySelectors', {
12776 attributeName: methodOrAttributeName,
12777 querySelector: selector,
12778 refSelector: refSelector
12779 });
12780}
12781// // think we should take this out, put property bindings on the
12782// export function Method(eventName?: string): Function {
12783// return methodFunc.bind(this, eventName);
12784// }
12785//
12786// function methodFunc(alias: string, target: Object, methodName: string) {
12787// if (alias === null) {
12788// console.error("AG Grid: EventListener eventName should not be null");
12789// return;
12790// }
12791//
12792// addToObjectProps(target, 'methods', {
12793// methodName: methodName,
12794// alias: alias
12795// });
12796// }
12797function addToObjectProps(target, key, value) {
12798 // it's an attribute on the class
12799 var props = getOrCreateProps(target, Object(_utils_function__WEBPACK_IMPORTED_MODULE_0__["getFunctionName"])(target.constructor));
12800 if (!props[key]) {
12801 props[key] = [];
12802 }
12803 props[key].push(value);
12804}
12805function getOrCreateProps(target, instanceName) {
12806 if (!target.__agComponentMetaData) {
12807 target.__agComponentMetaData = {};
12808 }
12809 if (!target.__agComponentMetaData[instanceName]) {
12810 target.__agComponentMetaData[instanceName] = {};
12811 }
12812 return target.__agComponentMetaData[instanceName];
12813}
12814
12815
12816
12817
12818/***/ }),
12819/* 58 */
12820/***/ (function(module, __webpack_exports__, __webpack_require__) {
12821
12822"use strict";
12823__webpack_require__.r(__webpack_exports__);
12824/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DateFilter", function() { return DateFilter; });
12825/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(57);
12826/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
12827/* harmony import */ var _dateCompWrapper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(59);
12828/* harmony import */ var _simpleFilter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(60);
12829/* harmony import */ var _scalarFilter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(72);
12830/* harmony import */ var _utils_date__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(45);
12831/**
12832 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
12833 * @version v27.3.0
12834 * @link https://www.ag-grid.com/
12835 * @license MIT
12836 */
12837var __extends = (undefined && undefined.__extends) || (function () {
12838 var extendStatics = function (d, b) {
12839 extendStatics = Object.setPrototypeOf ||
12840 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
12841 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
12842 return extendStatics(d, b);
12843 };
12844 return function (d, b) {
12845 extendStatics(d, b);
12846 function __() { this.constructor = d; }
12847 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
12848 };
12849})();
12850var __assign = (undefined && undefined.__assign) || function () {
12851 __assign = Object.assign || function(t) {
12852 for (var s, i = 1, n = arguments.length; i < n; i++) {
12853 s = arguments[i];
12854 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
12855 t[p] = s[p];
12856 }
12857 return t;
12858 };
12859 return __assign.apply(this, arguments);
12860};
12861var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
12862 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
12863 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
12864 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
12865 return c > 3 && r && Object.defineProperty(target, key, r), r;
12866};
12867
12868
12869
12870
12871
12872
12873var DEFAULT_MIN_YEAR = 1000;
12874var DEFAULT_MAX_YEAR = Infinity;
12875var DateFilter = /** @class */ (function (_super) {
12876 __extends(DateFilter, _super);
12877 function DateFilter() {
12878 var _this = _super.call(this, 'dateFilter') || this;
12879 _this.minValidYear = DEFAULT_MIN_YEAR;
12880 _this.maxValidYear = DEFAULT_MAX_YEAR;
12881 return _this;
12882 }
12883 DateFilter.prototype.afterGuiAttached = function (params) {
12884 _super.prototype.afterGuiAttached.call(this, params);
12885 this.dateCondition1FromComp.afterGuiAttached(params);
12886 };
12887 DateFilter.prototype.mapValuesFromModel = function (filterModel) {
12888 // unlike the other filters, we do two things here:
12889 // 1) allow for different attribute names (same as done for other filters) (eg the 'from' and 'to'
12890 // are in different locations in Date and Number filter models)
12891 // 2) convert the type (because Date filter uses Dates, however model is 'string')
12892 //
12893 // NOTE: The conversion of string to date also removes the timezone - i.e. when user picks
12894 // a date from the UI, it will have timezone info in it. This is lost when creating
12895 // the model. When we recreate the date again here, it's without a timezone.
12896 var _a = filterModel || {}, dateFrom = _a.dateFrom, dateTo = _a.dateTo, type = _a.type;
12897 return [
12898 dateFrom && Object(_utils_date__WEBPACK_IMPORTED_MODULE_5__["parseDateTimeFromString"])(dateFrom) || null,
12899 dateTo && Object(_utils_date__WEBPACK_IMPORTED_MODULE_5__["parseDateTimeFromString"])(dateTo) || null,
12900 ].slice(0, this.getNumberOfInputs(type));
12901 };
12902 DateFilter.prototype.comparator = function () {
12903 return this.dateFilterParams.comparator ? this.dateFilterParams.comparator : this.defaultComparator.bind(this);
12904 };
12905 DateFilter.prototype.defaultComparator = function (filterDate, cellValue) {
12906 // The default comparator assumes that the cellValue is a date
12907 var cellAsDate = cellValue;
12908 if (cellValue == null || cellAsDate < filterDate) {
12909 return -1;
12910 }
12911 if (cellAsDate > filterDate) {
12912 return 1;
12913 }
12914 return 0;
12915 };
12916 DateFilter.prototype.setParams = function (params) {
12917 _super.prototype.setParams.call(this, params);
12918 this.dateFilterParams = params;
12919 var yearParser = function (param, fallback) {
12920 if (params[param] != null) {
12921 if (!isNaN(params[param])) {
12922 return params[param] == null ? fallback : Number(params[param]);
12923 }
12924 else {
12925 console.warn("AG Grid: DateFilter " + param + " is not a number");
12926 }
12927 }
12928 return fallback;
12929 };
12930 this.minValidYear = yearParser('minValidYear', DEFAULT_MIN_YEAR);
12931 this.maxValidYear = yearParser('maxValidYear', DEFAULT_MAX_YEAR);
12932 if (this.minValidYear > this.maxValidYear) {
12933 console.warn("AG Grid: DateFilter minValidYear should be <= maxValidYear");
12934 }
12935 this.createDateComponents();
12936 };
12937 DateFilter.prototype.createDateComponents = function () {
12938 var _this = this;
12939 var createDateCompWrapper = function (element) {
12940 return new _dateCompWrapper__WEBPACK_IMPORTED_MODULE_2__["DateCompWrapper"](_this.getContext(), _this.userComponentFactory, {
12941 onDateChanged: function () { return _this.onUiChanged(); },
12942 filterParams: _this.dateFilterParams
12943 }, element);
12944 };
12945 this.dateCondition1FromComp = createDateCompWrapper(this.eCondition1PanelFrom);
12946 this.dateCondition1ToComp = createDateCompWrapper(this.eCondition1PanelTo);
12947 this.dateCondition2FromComp = createDateCompWrapper(this.eCondition2PanelFrom);
12948 this.dateCondition2ToComp = createDateCompWrapper(this.eCondition2PanelTo);
12949 this.addDestroyFunc(function () {
12950 _this.forEachInput(function (element) { return element.destroy(); });
12951 });
12952 };
12953 DateFilter.prototype.setElementValue = function (element, value, silent) {
12954 element.setDate(value);
12955 };
12956 DateFilter.prototype.setElementDisplayed = function (element, displayed) {
12957 element.setDisplayed(displayed);
12958 };
12959 DateFilter.prototype.setElementDisabled = function (element, disabled) {
12960 element.setDisabled(disabled);
12961 };
12962 DateFilter.prototype.getDefaultFilterOptions = function () {
12963 return DateFilter.DEFAULT_FILTER_OPTIONS;
12964 };
12965 DateFilter.prototype.createValueTemplate = function (position) {
12966 var pos = position === _simpleFilter__WEBPACK_IMPORTED_MODULE_3__["ConditionPosition"].One ? '1' : '2';
12967 return /* html */ "\n <div class=\"ag-filter-body\" ref=\"eCondition" + pos + "Body\">\n <div class=\"ag-filter-from ag-filter-date-from\" ref=\"eCondition" + pos + "PanelFrom\"></div>\n <div class=\"ag-filter-to ag-filter-date-to\" ref=\"eCondition" + pos + "PanelTo\"></div>\n </div>";
12968 };
12969 DateFilter.prototype.isConditionUiComplete = function (position) {
12970 var _this = this;
12971 if (!_super.prototype.isConditionUiComplete.call(this, position)) {
12972 return false;
12973 }
12974 var isValidDate = function (value) { return value != null
12975 && value.getUTCFullYear() >= _this.minValidYear
12976 && value.getUTCFullYear() <= _this.maxValidYear; };
12977 var valid = true;
12978 this.forEachInput(function (element, index, elPosition, numberOfInputs) {
12979 if (elPosition !== position || !valid || index >= numberOfInputs) {
12980 return;
12981 }
12982 valid = valid && isValidDate(element.getDate());
12983 });
12984 return valid;
12985 };
12986 DateFilter.prototype.areSimpleModelsEqual = function (aSimple, bSimple) {
12987 return aSimple.dateFrom === bSimple.dateFrom
12988 && aSimple.dateTo === bSimple.dateTo
12989 && aSimple.type === bSimple.type;
12990 };
12991 DateFilter.prototype.getFilterType = function () {
12992 return 'date';
12993 };
12994 DateFilter.prototype.createCondition = function (position) {
12995 var type = this.getConditionTypes()[position];
12996 var model = {};
12997 var values = this.getValues(position);
12998 if (values.length > 0) {
12999 model.dateFrom = Object(_utils_date__WEBPACK_IMPORTED_MODULE_5__["serialiseDate"])(values[0]);
13000 }
13001 if (values.length > 1) {
13002 model.dateTo = Object(_utils_date__WEBPACK_IMPORTED_MODULE_5__["serialiseDate"])(values[1]);
13003 }
13004 return __assign({ dateFrom: null, dateTo: null, filterType: this.getFilterType(), type: type }, model);
13005 };
13006 DateFilter.prototype.resetPlaceholder = function () {
13007 var globalTranslate = this.gridOptionsWrapper.getLocaleTextFunc();
13008 var placeholder = this.translate('dateFormatOoo');
13009 var ariaLabel = globalTranslate('ariaFilterValue', 'Filter Value');
13010 this.forEachInput(function (element) {
13011 element.setInputPlaceholder(placeholder);
13012 element.setInputAriaLabel(ariaLabel);
13013 });
13014 };
13015 DateFilter.prototype.getInputs = function () {
13016 return [
13017 [this.dateCondition1FromComp, this.dateCondition1ToComp],
13018 [this.dateCondition2FromComp, this.dateCondition2ToComp],
13019 ];
13020 };
13021 DateFilter.prototype.getValues = function (position) {
13022 var result = [];
13023 this.forEachInput(function (element, index, elPosition, numberOfInputs) {
13024 if (position === elPosition && index < numberOfInputs) {
13025 result.push(element.getDate());
13026 }
13027 });
13028 return result;
13029 };
13030 DateFilter.DEFAULT_FILTER_OPTIONS = [
13031 _scalarFilter__WEBPACK_IMPORTED_MODULE_4__["ScalarFilter"].EQUALS,
13032 _scalarFilter__WEBPACK_IMPORTED_MODULE_4__["ScalarFilter"].GREATER_THAN,
13033 _scalarFilter__WEBPACK_IMPORTED_MODULE_4__["ScalarFilter"].LESS_THAN,
13034 _scalarFilter__WEBPACK_IMPORTED_MODULE_4__["ScalarFilter"].NOT_EQUAL,
13035 _scalarFilter__WEBPACK_IMPORTED_MODULE_4__["ScalarFilter"].IN_RANGE,
13036 _scalarFilter__WEBPACK_IMPORTED_MODULE_4__["ScalarFilter"].BLANK,
13037 _scalarFilter__WEBPACK_IMPORTED_MODULE_4__["ScalarFilter"].NOT_BLANK,
13038 ];
13039 __decorate([
13040 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eCondition1PanelFrom')
13041 ], DateFilter.prototype, "eCondition1PanelFrom", void 0);
13042 __decorate([
13043 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eCondition1PanelTo')
13044 ], DateFilter.prototype, "eCondition1PanelTo", void 0);
13045 __decorate([
13046 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eCondition2PanelFrom')
13047 ], DateFilter.prototype, "eCondition2PanelFrom", void 0);
13048 __decorate([
13049 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eCondition2PanelTo')
13050 ], DateFilter.prototype, "eCondition2PanelTo", void 0);
13051 __decorate([
13052 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('userComponentFactory')
13053 ], DateFilter.prototype, "userComponentFactory", void 0);
13054 return DateFilter;
13055}(_scalarFilter__WEBPACK_IMPORTED_MODULE_4__["ScalarFilter"]));
13056
13057
13058
13059
13060
13061/***/ }),
13062/* 59 */
13063/***/ (function(module, __webpack_exports__, __webpack_require__) {
13064
13065"use strict";
13066__webpack_require__.r(__webpack_exports__);
13067/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DateCompWrapper", function() { return DateCompWrapper; });
13068/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(42);
13069/**
13070 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
13071 * @version v27.3.0
13072 * @link https://www.ag-grid.com/
13073 * @license MIT
13074 */
13075
13076/** Provides sync access to async component. Date component can be lazy created - this class encapsulates
13077 * this by keeping value locally until DateComp has loaded, then passing DateComp the value. */
13078var DateCompWrapper = /** @class */ (function () {
13079 function DateCompWrapper(context, userComponentFactory, dateComponentParams, eParent) {
13080 var _this = this;
13081 this.alive = true;
13082 this.context = context;
13083 this.eParent = eParent;
13084 var compDetails = userComponentFactory.getDateCompDetails(dateComponentParams);
13085 var promise = compDetails.newAgStackInstance();
13086 promise.then(function (dateComp) {
13087 // because async, check the filter still exists after component comes back
13088 if (!_this.alive) {
13089 context.destroyBean(dateComp);
13090 return;
13091 }
13092 _this.dateComp = dateComp;
13093 if (!dateComp) {
13094 return;
13095 }
13096 eParent.appendChild(dateComp.getGui());
13097 if (dateComp.afterGuiAttached) {
13098 dateComp.afterGuiAttached();
13099 }
13100 if (_this.tempValue) {
13101 dateComp.setDate(_this.tempValue);
13102 }
13103 if (_this.disabled != null) {
13104 _this.setDateCompDisabled(_this.disabled);
13105 }
13106 });
13107 }
13108 DateCompWrapper.prototype.destroy = function () {
13109 this.alive = false;
13110 this.dateComp = this.context.destroyBean(this.dateComp);
13111 };
13112 DateCompWrapper.prototype.getDate = function () {
13113 return this.dateComp ? this.dateComp.getDate() : this.tempValue;
13114 };
13115 DateCompWrapper.prototype.setDate = function (value) {
13116 if (this.dateComp) {
13117 this.dateComp.setDate(value);
13118 }
13119 else {
13120 this.tempValue = value;
13121 }
13122 };
13123 DateCompWrapper.prototype.setDisabled = function (disabled) {
13124 if (this.dateComp) {
13125 this.setDateCompDisabled(disabled);
13126 }
13127 else {
13128 this.disabled = disabled;
13129 }
13130 };
13131 DateCompWrapper.prototype.setDisplayed = function (displayed) {
13132 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_0__["setDisplayed"])(this.eParent, displayed);
13133 };
13134 DateCompWrapper.prototype.setInputPlaceholder = function (placeholder) {
13135 if (this.dateComp && this.dateComp.setInputPlaceholder) {
13136 this.dateComp.setInputPlaceholder(placeholder);
13137 }
13138 };
13139 DateCompWrapper.prototype.setInputAriaLabel = function (label) {
13140 if (this.dateComp && this.dateComp.setInputAriaLabel) {
13141 this.dateComp.setInputAriaLabel(label);
13142 }
13143 };
13144 DateCompWrapper.prototype.afterGuiAttached = function (params) {
13145 if (this.dateComp && typeof this.dateComp.afterGuiAttached === 'function') {
13146 this.dateComp.afterGuiAttached(params);
13147 }
13148 };
13149 DateCompWrapper.prototype.setDateCompDisabled = function (disabled) {
13150 if (this.dateComp == null) {
13151 return;
13152 }
13153 if (this.dateComp.setDisabled == null) {
13154 return;
13155 }
13156 this.dateComp.setDisabled(disabled);
13157 };
13158 return DateCompWrapper;
13159}());
13160
13161
13162
13163
13164
13165/***/ }),
13166/* 60 */
13167/***/ (function(module, __webpack_exports__, __webpack_require__) {
13168
13169"use strict";
13170__webpack_require__.r(__webpack_exports__);
13171/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ConditionPosition", function() { return ConditionPosition; });
13172/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SimpleFilter", function() { return SimpleFilter; });
13173/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(57);
13174/* harmony import */ var _optionsFactory__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(61);
13175/* harmony import */ var _providedFilter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(62);
13176/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(37);
13177/* harmony import */ var _widgets_agSelect__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(66);
13178/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(18);
13179/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(42);
13180/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(36);
13181/* harmony import */ var _widgets_agAbstractInputField__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(71);
13182/**
13183 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
13184 * @version v27.3.0
13185 * @link https://www.ag-grid.com/
13186 * @license MIT
13187 */
13188var __extends = (undefined && undefined.__extends) || (function () {
13189 var extendStatics = function (d, b) {
13190 extendStatics = Object.setPrototypeOf ||
13191 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
13192 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
13193 return extendStatics(d, b);
13194 };
13195 return function (d, b) {
13196 extendStatics(d, b);
13197 function __() { this.constructor = d; }
13198 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13199 };
13200})();
13201var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
13202 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
13203 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
13204 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
13205 return c > 3 && r && Object.defineProperty(target, key, r), r;
13206};
13207
13208
13209
13210
13211
13212
13213
13214
13215
13216var ConditionPosition;
13217(function (ConditionPosition) {
13218 ConditionPosition[ConditionPosition["One"] = 0] = "One";
13219 ConditionPosition[ConditionPosition["Two"] = 1] = "Two";
13220})(ConditionPosition || (ConditionPosition = {}));
13221/**
13222 * Every filter with a dropdown where the user can specify a comparing type against the filter values.
13223 *
13224 * @param M type of filter-model managed by the concrete sub-class that extends this type
13225 * @param V type of value managed by the concrete sub-class that extends this type
13226 * @param E type of UI element used for collecting user-input
13227 */
13228var SimpleFilter = /** @class */ (function (_super) {
13229 __extends(SimpleFilter, _super);
13230 function SimpleFilter() {
13231 return _super !== null && _super.apply(this, arguments) || this;
13232 }
13233 SimpleFilter.prototype.getNumberOfInputs = function (type) {
13234 var customOpts = this.optionsFactory.getCustomOption(type);
13235 if (customOpts) {
13236 var numberOfInputs = customOpts.numberOfInputs;
13237 return numberOfInputs != null ? numberOfInputs : 1;
13238 }
13239 var zeroInputTypes = [
13240 SimpleFilter.EMPTY, SimpleFilter.NOT_BLANK, SimpleFilter.BLANK,
13241 ];
13242 if (type && zeroInputTypes.indexOf(type) >= 0) {
13243 return 0;
13244 }
13245 else if (type === SimpleFilter.IN_RANGE) {
13246 return 2;
13247 }
13248 return 1;
13249 };
13250 // floating filter calls this when user applies filter from floating filter
13251 SimpleFilter.prototype.onFloatingFilterChanged = function (type, value) {
13252 this.setTypeFromFloatingFilter(type);
13253 this.setValueFromFloatingFilter(value);
13254 this.onUiChanged(true);
13255 };
13256 SimpleFilter.prototype.setTypeFromFloatingFilter = function (type) {
13257 this.eType1.setValue(type);
13258 this.eType2.setValue(this.optionsFactory.getDefaultOption());
13259 (this.isDefaultOperator('AND') ? this.eJoinOperatorAnd : this.eJoinOperatorOr).setValue(true);
13260 };
13261 SimpleFilter.prototype.getModelFromUi = function () {
13262 if (!this.isConditionUiComplete(ConditionPosition.One)) {
13263 return null;
13264 }
13265 if (this.isAllowTwoConditions() && this.isConditionUiComplete(ConditionPosition.Two)) {
13266 return {
13267 filterType: this.getFilterType(),
13268 operator: this.getJoinOperator(),
13269 condition1: this.createCondition(ConditionPosition.One),
13270 condition2: this.createCondition(ConditionPosition.Two)
13271 };
13272 }
13273 return this.createCondition(ConditionPosition.One);
13274 };
13275 SimpleFilter.prototype.getConditionTypes = function () {
13276 return [
13277 this.eType1.getValue(),
13278 this.eType2.getValue(),
13279 ];
13280 };
13281 SimpleFilter.prototype.getJoinOperator = function () {
13282 return this.eJoinOperatorOr.getValue() === true ? 'OR' : 'AND';
13283 };
13284 SimpleFilter.prototype.areModelsEqual = function (a, b) {
13285 // both are missing
13286 if (!a && !b) {
13287 return true;
13288 }
13289 // one is missing, other present
13290 if ((!a && b) || (a && !b)) {
13291 return false;
13292 }
13293 // one is combined, the other is not
13294 var aIsSimple = !a.operator;
13295 var bIsSimple = !b.operator;
13296 var oneSimpleOneCombined = (!aIsSimple && bIsSimple) || (aIsSimple && !bIsSimple);
13297 if (oneSimpleOneCombined) {
13298 return false;
13299 }
13300 var res;
13301 // otherwise both present, so compare
13302 if (aIsSimple) {
13303 var aSimple = a;
13304 var bSimple = b;
13305 res = this.areSimpleModelsEqual(aSimple, bSimple);
13306 }
13307 else {
13308 var aCombined = a;
13309 var bCombined = b;
13310 res = aCombined.operator === bCombined.operator
13311 && this.areSimpleModelsEqual(aCombined.condition1, bCombined.condition1)
13312 && this.areSimpleModelsEqual(aCombined.condition2, bCombined.condition2);
13313 }
13314 return res;
13315 };
13316 SimpleFilter.prototype.setModelIntoUi = function (model) {
13317 var isCombined = model.operator;
13318 if (isCombined) {
13319 var combinedModel = model;
13320 var orChecked = combinedModel.operator === 'OR';
13321 this.eJoinOperatorAnd.setValue(!orChecked);
13322 this.eJoinOperatorOr.setValue(orChecked);
13323 this.eType1.setValue(combinedModel.condition1.type);
13324 this.eType2.setValue(combinedModel.condition2.type);
13325 this.setConditionIntoUi(combinedModel.condition1, ConditionPosition.One);
13326 this.setConditionIntoUi(combinedModel.condition2, ConditionPosition.Two);
13327 }
13328 else {
13329 var simpleModel = model;
13330 this.eJoinOperatorAnd.setValue(this.isDefaultOperator('AND'));
13331 this.eJoinOperatorOr.setValue(this.isDefaultOperator('OR'));
13332 this.eType1.setValue(simpleModel.type);
13333 this.eType2.setValue(this.optionsFactory.getDefaultOption());
13334 this.setConditionIntoUi(simpleModel, ConditionPosition.One);
13335 this.setConditionIntoUi(null, ConditionPosition.Two);
13336 }
13337 return _utils__WEBPACK_IMPORTED_MODULE_3__["AgPromise"].resolve();
13338 };
13339 SimpleFilter.prototype.doesFilterPass = function (params) {
13340 var _this = this;
13341 var model = this.getModel();
13342 if (model == null) {
13343 return true;
13344 }
13345 var operator = model.operator;
13346 var models = [];
13347 if (operator) {
13348 var combinedModel = model;
13349 models.push(combinedModel.condition1, combinedModel.condition2);
13350 }
13351 else {
13352 models.push(model);
13353 }
13354 var combineFunction = operator && operator === 'OR' ? 'some' : 'every';
13355 return models[combineFunction](function (m) { return _this.individualConditionPasses(params, m); });
13356 };
13357 SimpleFilter.prototype.setParams = function (params) {
13358 _super.prototype.setParams.call(this, params);
13359 this.optionsFactory = new _optionsFactory__WEBPACK_IMPORTED_MODULE_1__["OptionsFactory"]();
13360 this.optionsFactory.init(params, this.getDefaultFilterOptions());
13361 this.allowTwoConditions = !params.suppressAndOrCondition;
13362 this.alwaysShowBothConditions = !!params.alwaysShowBothConditions;
13363 this.defaultJoinOperator = this.getDefaultJoinOperator(params.defaultJoinOperator);
13364 this.putOptionsIntoDropdown();
13365 this.addChangedListeners();
13366 };
13367 SimpleFilter.prototype.getDefaultJoinOperator = function (defaultJoinOperator) {
13368 return Object(_utils_array__WEBPACK_IMPORTED_MODULE_5__["includes"])(['AND', 'OR'], defaultJoinOperator) ? defaultJoinOperator : 'AND';
13369 };
13370 SimpleFilter.prototype.putOptionsIntoDropdown = function () {
13371 var _this = this;
13372 var filterOptions = this.optionsFactory.getFilterOptions();
13373 var eTypes = [this.eType1, this.eType2];
13374 // Add specified options to all condition drop-downs.
13375 filterOptions.forEach(function (option) {
13376 var listOption = typeof option === 'string' ?
13377 _this.createBoilerplateListOption(option) :
13378 _this.createCustomListOption(option);
13379 eTypes.forEach(function (eType) { return eType.addOption(listOption); });
13380 });
13381 // Make drop-downs read-only if there is only one option.
13382 eTypes.forEach(function (eType) { return eType.setDisabled(filterOptions.length <= 1); });
13383 };
13384 SimpleFilter.prototype.createBoilerplateListOption = function (option) {
13385 return { value: option, text: this.translate(option) };
13386 };
13387 SimpleFilter.prototype.createCustomListOption = function (option) {
13388 var displayKey = option.displayKey;
13389 var customOption = this.optionsFactory.getCustomOption(option.displayKey);
13390 return {
13391 value: displayKey,
13392 text: customOption ?
13393 this.gridOptionsWrapper.getLocaleTextFunc()(customOption.displayKey, customOption.displayName) :
13394 this.translate(displayKey),
13395 };
13396 };
13397 SimpleFilter.prototype.isAllowTwoConditions = function () {
13398 return this.allowTwoConditions;
13399 };
13400 SimpleFilter.prototype.createBodyTemplate = function () {
13401 return /* html */ "\n <ag-select class=\"ag-filter-select\" ref=\"eOptions1\"></ag-select>\n " + this.createValueTemplate(ConditionPosition.One) + "\n <div class=\"ag-filter-condition\" ref=\"eJoinOperatorPanel\">\n <ag-radio-button ref=\"eJoinOperatorAnd\" class=\"ag-filter-condition-operator ag-filter-condition-operator-and\"></ag-radio-button>\n <ag-radio-button ref=\"eJoinOperatorOr\" class=\"ag-filter-condition-operator ag-filter-condition-operator-or\"></ag-radio-button>\n </div>\n <ag-select class=\"ag-filter-select\" ref=\"eOptions2\"></ag-select>\n " + this.createValueTemplate(ConditionPosition.Two);
13402 };
13403 SimpleFilter.prototype.getCssIdentifier = function () {
13404 return 'simple-filter';
13405 };
13406 SimpleFilter.prototype.updateUiVisibility = function () {
13407 var _this = this;
13408 var elementConditionGroups = [
13409 [this.eType1],
13410 [this.eType2, this.eJoinOperatorPanel, this.eJoinOperatorAnd, this.eJoinOperatorOr],
13411 ];
13412 var elementBodies = [this.eCondition1Body, this.eCondition2Body];
13413 elementConditionGroups.forEach(function (group, position) {
13414 var visible = _this.isConditionVisible(position);
13415 var disabled = _this.isConditionDisabled(position);
13416 group.forEach(function (element) {
13417 if (element instanceof _widgets_agAbstractInputField__WEBPACK_IMPORTED_MODULE_8__["AgAbstractInputField"] || element instanceof _widgets_agSelect__WEBPACK_IMPORTED_MODULE_4__["AgSelect"]) {
13418 element.setDisabled(disabled);
13419 element.setDisplayed(visible);
13420 }
13421 else {
13422 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["setDisabled"])(element, disabled);
13423 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["setDisplayed"])(element, visible);
13424 }
13425 });
13426 });
13427 elementBodies.forEach(function (element, index) {
13428 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["setDisplayed"])(element, _this.isConditionBodyVisible(index));
13429 });
13430 this.forEachInput(function (element, index, position, numberOfInputs) {
13431 _this.setElementDisplayed(element, index < numberOfInputs);
13432 _this.setElementDisabled(element, _this.isConditionDisabled(position));
13433 });
13434 this.resetPlaceholder();
13435 };
13436 SimpleFilter.prototype.afterGuiAttached = function (params) {
13437 _super.prototype.afterGuiAttached.call(this, params);
13438 this.resetPlaceholder();
13439 if (!params || (!params.suppressFocus && !this.isReadOnly())) {
13440 var firstInput = this.getInputs()[0][0];
13441 if (!firstInput) {
13442 return;
13443 }
13444 if (firstInput instanceof _widgets_agAbstractInputField__WEBPACK_IMPORTED_MODULE_8__["AgAbstractInputField"]) {
13445 firstInput.getInputElement().focus();
13446 }
13447 }
13448 };
13449 // allow sub-classes to reset HTML placeholders after UI update.
13450 SimpleFilter.prototype.resetPlaceholder = function () {
13451 var _this = this;
13452 var globalTranslate = this.gridOptionsWrapper.getLocaleTextFunc();
13453 this.forEachInput(function (element, index, _, numberOfInputs) {
13454 if (!(element instanceof _widgets_agAbstractInputField__WEBPACK_IMPORTED_MODULE_8__["AgAbstractInputField"])) {
13455 return;
13456 }
13457 var placeholder = index === 0 && numberOfInputs > 1 ? 'inRangeStart' :
13458 index === 0 ? 'filterOoo' :
13459 'inRangeEnd';
13460 var ariaLabel = index === 0 && numberOfInputs > 1 ? globalTranslate('ariaFilterFromValue', 'Filter from value') :
13461 index === 0 ? globalTranslate('ariaFilterValue', 'Filter Value') :
13462 globalTranslate('ariaFilterToValue', 'Filter to Value');
13463 element.setInputPlaceholder(_this.translate(placeholder));
13464 element.setInputAriaLabel(ariaLabel);
13465 });
13466 };
13467 SimpleFilter.prototype.setElementValue = function (element, value, silent) {
13468 if (element instanceof _widgets_agAbstractInputField__WEBPACK_IMPORTED_MODULE_8__["AgAbstractInputField"]) {
13469 element.setValue(value != null ? String(value) : null, silent);
13470 }
13471 };
13472 SimpleFilter.prototype.setElementDisplayed = function (element, displayed) {
13473 if (element instanceof _widgets_component__WEBPACK_IMPORTED_MODULE_7__["Component"]) {
13474 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["setDisplayed"])(element.getGui(), displayed);
13475 }
13476 };
13477 SimpleFilter.prototype.setElementDisabled = function (element, disabled) {
13478 if (element instanceof _widgets_component__WEBPACK_IMPORTED_MODULE_7__["Component"]) {
13479 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["setDisabled"])(element.getGui(), disabled);
13480 }
13481 };
13482 SimpleFilter.prototype.attachElementOnChange = function (element, listener) {
13483 if (element instanceof _widgets_agAbstractInputField__WEBPACK_IMPORTED_MODULE_8__["AgAbstractInputField"]) {
13484 element.onValueChange(listener);
13485 }
13486 };
13487 SimpleFilter.prototype.forEachInput = function (cb) {
13488 var _this = this;
13489 var inputs = this.getInputs();
13490 this.getConditionTypes().forEach(function (type, position) {
13491 var numberOfInputs = _this.getNumberOfInputs(type);
13492 for (var index = 0; index < inputs[position].length; index++) {
13493 var input = inputs[position][index];
13494 if (input != null) {
13495 cb(input, index, position, numberOfInputs);
13496 }
13497 }
13498 });
13499 };
13500 SimpleFilter.prototype.isConditionVisible = function (position) {
13501 if (position === 0) {
13502 return true;
13503 } // Position 0 should always be visible.
13504 if (!this.allowTwoConditions) {
13505 return false;
13506 } // Short-circuit if no tail conditions.
13507 if (this.isReadOnly()) {
13508 // Only display a condition when read-only if the condition is complete.
13509 return this.isConditionUiComplete(position);
13510 }
13511 if (this.alwaysShowBothConditions) {
13512 return true;
13513 }
13514 // Only display a 2nd or later condition when the previous condition is complete.
13515 return this.isConditionUiComplete(position - 1);
13516 };
13517 SimpleFilter.prototype.isConditionDisabled = function (position) {
13518 if (this.isReadOnly()) {
13519 return true;
13520 } // Read-only mode trumps everything.
13521 if (!this.isConditionVisible(position)) {
13522 return true;
13523 } // Invisible implies disabled.
13524 if (position === 0) {
13525 return false;
13526 } // Position 0 should typically be editable.
13527 // Only allow editing of a 2nd or later condition if the previous condition is complete.
13528 return !this.isConditionUiComplete(position - 1);
13529 };
13530 SimpleFilter.prototype.isConditionBodyVisible = function (position) {
13531 if (!this.isConditionVisible(position)) {
13532 return false;
13533 }
13534 // Check that the condition needs inputs.
13535 var type = this.getConditionTypes()[position];
13536 var numberOfInputs = this.getNumberOfInputs(type);
13537 return numberOfInputs > 0;
13538 };
13539 // returns true if the UI represents a working filter, eg all parts are filled out.
13540 // eg if text filter and textfield blank then returns false.
13541 SimpleFilter.prototype.isConditionUiComplete = function (position) {
13542 var type = this.getConditionTypes()[position];
13543 if (type === SimpleFilter.EMPTY) {
13544 return false;
13545 }
13546 if (this.getValues(position).some(function (v) { return v == null; })) {
13547 return false;
13548 }
13549 return true;
13550 };
13551 SimpleFilter.prototype.resetUiToDefaults = function (silent) {
13552 var _this = this;
13553 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
13554 var filteringLabel = translate('ariaFilteringOperator', 'Filtering operator');
13555 var uniqueGroupId = 'ag-simple-filter-and-or-' + this.getCompId();
13556 var defaultOption = this.optionsFactory.getDefaultOption();
13557 this.eType1
13558 .setValue(defaultOption, silent)
13559 .setAriaLabel(filteringLabel)
13560 .setDisabled(this.isReadOnly());
13561 this.eType2
13562 .setValue(this.optionsFactory.getDefaultOption(), silent)
13563 .setAriaLabel(filteringLabel)
13564 .setDisabled(this.isReadOnly());
13565 this.eJoinOperatorAnd
13566 .setValue(this.isDefaultOperator('AND'), silent)
13567 .setName(uniqueGroupId)
13568 .setLabel(this.translate('andCondition'))
13569 .setDisabled(this.isReadOnly());
13570 this.eJoinOperatorOr
13571 .setValue(this.isDefaultOperator('OR'), silent)
13572 .setName(uniqueGroupId)
13573 .setLabel(this.translate('orCondition'))
13574 .setDisabled(this.isReadOnly());
13575 this.forEachInput(function (element) {
13576 _this.setElementValue(element, null, silent);
13577 _this.setElementDisabled(element, _this.isReadOnly());
13578 });
13579 this.resetPlaceholder();
13580 return _utils__WEBPACK_IMPORTED_MODULE_3__["AgPromise"].resolve();
13581 };
13582 // puts model values into the UI
13583 SimpleFilter.prototype.setConditionIntoUi = function (model, position) {
13584 var _this = this;
13585 var values = this.mapValuesFromModel(model);
13586 this.forEachInput(function (element, index, elPosition, _) {
13587 if (elPosition !== position) {
13588 return;
13589 }
13590 _this.setElementValue(element, values[index] != null ? values[index] : null);
13591 });
13592 };
13593 // after floating filter changes, this sets the 'value' section. this is implemented by the base class
13594 // (as that's where value is controlled), the 'type' part from the floating filter is dealt with in this class.
13595 SimpleFilter.prototype.setValueFromFloatingFilter = function (value) {
13596 var _this = this;
13597 this.forEachInput(function (element, index, position, _) {
13598 _this.setElementValue(element, index === 0 && position === 0 ? value : null);
13599 });
13600 };
13601 SimpleFilter.prototype.isDefaultOperator = function (operator) {
13602 return operator === this.defaultJoinOperator;
13603 };
13604 SimpleFilter.prototype.addChangedListeners = function () {
13605 var _this = this;
13606 if (this.isReadOnly()) {
13607 return;
13608 }
13609 var listener = function () { return _this.onUiChanged(); };
13610 this.eType1.onValueChange(listener);
13611 this.eType2.onValueChange(listener);
13612 this.eJoinOperatorOr.onValueChange(listener);
13613 this.eJoinOperatorAnd.onValueChange(listener);
13614 this.forEachInput(function (element) {
13615 _this.attachElementOnChange(element, listener);
13616 });
13617 };
13618 /** returns true if the row passes the said condition */
13619 SimpleFilter.prototype.individualConditionPasses = function (params, filterModel) {
13620 var cellValue = this.getCellValue(params.node);
13621 var values = this.mapValuesFromModel(filterModel);
13622 var customFilterOption = this.optionsFactory.getCustomOption(filterModel.type);
13623 var customFilterResult = this.evaluateCustomFilter(customFilterOption, values, cellValue);
13624 if (customFilterResult != null) {
13625 return customFilterResult;
13626 }
13627 if (cellValue == null) {
13628 return this.evaluateNullValue(filterModel.type);
13629 }
13630 return this.evaluateNonNullValue(values, cellValue, filterModel, params);
13631 };
13632 SimpleFilter.prototype.evaluateCustomFilter = function (customFilterOption, values, cellValue) {
13633 if (customFilterOption == null) {
13634 return;
13635 }
13636 var predicate = customFilterOption.predicate;
13637 // only execute the custom filter if a value exists or a value isn't required, i.e. input is hidden
13638 if (predicate != null && !values.some(function (v) { return v == null; })) {
13639 return predicate(values, cellValue);
13640 }
13641 // No custom filter invocation, indicate that to the caller.
13642 return;
13643 };
13644 SimpleFilter.prototype.isBlank = function (cellValue) {
13645 return cellValue == null ||
13646 (typeof cellValue === 'string' && cellValue.trim().length === 0);
13647 };
13648 SimpleFilter.EMPTY = 'empty';
13649 SimpleFilter.BLANK = 'blank';
13650 SimpleFilter.NOT_BLANK = 'notBlank';
13651 SimpleFilter.EQUALS = 'equals';
13652 SimpleFilter.NOT_EQUAL = 'notEqual';
13653 SimpleFilter.LESS_THAN = 'lessThan';
13654 SimpleFilter.LESS_THAN_OR_EQUAL = 'lessThanOrEqual';
13655 SimpleFilter.GREATER_THAN = 'greaterThan';
13656 SimpleFilter.GREATER_THAN_OR_EQUAL = 'greaterThanOrEqual';
13657 SimpleFilter.IN_RANGE = 'inRange';
13658 SimpleFilter.CONTAINS = 'contains';
13659 SimpleFilter.NOT_CONTAINS = 'notContains';
13660 SimpleFilter.STARTS_WITH = 'startsWith';
13661 SimpleFilter.ENDS_WITH = 'endsWith';
13662 __decorate([
13663 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eOptions1')
13664 ], SimpleFilter.prototype, "eType1", void 0);
13665 __decorate([
13666 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eOptions2')
13667 ], SimpleFilter.prototype, "eType2", void 0);
13668 __decorate([
13669 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eJoinOperatorPanel')
13670 ], SimpleFilter.prototype, "eJoinOperatorPanel", void 0);
13671 __decorate([
13672 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eJoinOperatorAnd')
13673 ], SimpleFilter.prototype, "eJoinOperatorAnd", void 0);
13674 __decorate([
13675 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eJoinOperatorOr')
13676 ], SimpleFilter.prototype, "eJoinOperatorOr", void 0);
13677 __decorate([
13678 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eCondition1Body')
13679 ], SimpleFilter.prototype, "eCondition1Body", void 0);
13680 __decorate([
13681 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eCondition2Body')
13682 ], SimpleFilter.prototype, "eCondition2Body", void 0);
13683 return SimpleFilter;
13684}(_providedFilter__WEBPACK_IMPORTED_MODULE_2__["ProvidedFilter"]));
13685
13686
13687
13688
13689
13690/***/ }),
13691/* 61 */
13692/***/ (function(module, __webpack_exports__, __webpack_require__) {
13693
13694"use strict";
13695__webpack_require__.r(__webpack_exports__);
13696/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OptionsFactory", function() { return OptionsFactory; });
13697/**
13698 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
13699 * @version v27.3.0
13700 * @link https://www.ag-grid.com/
13701 * @license MIT
13702 */
13703var __assign = (undefined && undefined.__assign) || function () {
13704 __assign = Object.assign || function(t) {
13705 for (var s, i = 1, n = arguments.length; i < n; i++) {
13706 s = arguments[i];
13707 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
13708 t[p] = s[p];
13709 }
13710 return t;
13711 };
13712 return __assign.apply(this, arguments);
13713};
13714/* Common logic for options, used by both filters and floating filters. */
13715var OptionsFactory = /** @class */ (function () {
13716 function OptionsFactory() {
13717 this.customFilterOptions = {};
13718 }
13719 OptionsFactory.prototype.init = function (params, defaultOptions) {
13720 this.filterOptions = params.filterOptions || defaultOptions;
13721 this.mapCustomOptions();
13722 this.selectDefaultItem(params);
13723 this.checkForDeprecatedParams();
13724 };
13725 OptionsFactory.prototype.checkForDeprecatedParams = function () {
13726 if (this.filterOptions.some(function (opt) { return typeof opt != 'string' && opt.test != null; })) {
13727 console.warn("AG Grid: [IFilterOptionDef] since v26.2.0, test() has been replaced with predicate().");
13728 }
13729 if (this.filterOptions.some(function (opt) { return typeof opt != 'string' && opt.hideFilterInput != null; })) {
13730 console.warn("AG Grid: [IFilterOptionDef] since v26.2.0, useOfHideFilterInput has been replaced with numberOfInputs.");
13731 }
13732 };
13733 OptionsFactory.prototype.getFilterOptions = function () {
13734 return this.filterOptions;
13735 };
13736 OptionsFactory.prototype.mapCustomOptions = function () {
13737 var _this = this;
13738 if (!this.filterOptions) {
13739 return;
13740 }
13741 this.filterOptions.forEach(function (filterOption) {
13742 if (typeof filterOption === 'string') {
13743 return;
13744 }
13745 var requiredProperties = [['displayKey'], ['displayName'], ['predicate', 'test']];
13746 var propertyCheck = function (keys) {
13747 if (!keys.some(function (key) { return filterOption[key] != null; })) {
13748 console.warn("AG Grid: ignoring FilterOptionDef as it doesn't contain one of '" + keys + "'");
13749 return false;
13750 }
13751 return true;
13752 };
13753 if (!requiredProperties.every(propertyCheck)) {
13754 _this.filterOptions = _this.filterOptions.filter(function (v) { return v === filterOption; }) || [];
13755 return;
13756 }
13757 var test = filterOption.test;
13758 var mutatedFilterOptions = __assign({}, filterOption);
13759 if (test != null && filterOption.predicate == null) {
13760 mutatedFilterOptions.predicate = function (v, cv) { return test(v[0], cv); };
13761 delete mutatedFilterOptions.test;
13762 }
13763 if (mutatedFilterOptions.hideFilterInput && mutatedFilterOptions.numberOfInputs == null) {
13764 mutatedFilterOptions.numberOfInputs = 0;
13765 delete mutatedFilterOptions.hideFilterInput;
13766 }
13767 _this.customFilterOptions[filterOption.displayKey] = mutatedFilterOptions;
13768 });
13769 };
13770 OptionsFactory.prototype.selectDefaultItem = function (params) {
13771 if (params.defaultOption) {
13772 this.defaultOption = params.defaultOption;
13773 }
13774 else if (this.filterOptions.length >= 1) {
13775 var firstFilterOption = this.filterOptions[0];
13776 if (typeof firstFilterOption === 'string') {
13777 this.defaultOption = firstFilterOption;
13778 }
13779 else if (firstFilterOption.displayKey) {
13780 this.defaultOption = firstFilterOption.displayKey;
13781 }
13782 else {
13783 console.warn("AG Grid: invalid FilterOptionDef supplied as it doesn't contain a 'displayKey'");
13784 }
13785 }
13786 else {
13787 console.warn('AG Grid: no filter options for filter');
13788 }
13789 };
13790 OptionsFactory.prototype.getDefaultOption = function () {
13791 return this.defaultOption;
13792 };
13793 OptionsFactory.prototype.getCustomOption = function (name) {
13794 return this.customFilterOptions[name];
13795 };
13796 return OptionsFactory;
13797}());
13798
13799
13800
13801
13802
13803/***/ }),
13804/* 62 */
13805/***/ (function(module, __webpack_exports__, __webpack_require__) {
13806
13807"use strict";
13808__webpack_require__.r(__webpack_exports__);
13809/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ProvidedFilter", function() { return ProvidedFilter; });
13810/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
13811/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42);
13812/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14);
13813/* harmony import */ var _filterLocaleText__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(63);
13814/* harmony import */ var _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(64);
13815/* harmony import */ var _utils_set__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(52);
13816/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(36);
13817/**
13818 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
13819 * @version v27.3.0
13820 * @link https://www.ag-grid.com/
13821 * @license MIT
13822 */
13823var __extends = (undefined && undefined.__extends) || (function () {
13824 var extendStatics = function (d, b) {
13825 extendStatics = Object.setPrototypeOf ||
13826 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
13827 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
13828 return extendStatics(d, b);
13829 };
13830 return function (d, b) {
13831 extendStatics(d, b);
13832 function __() { this.constructor = d; }
13833 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13834 };
13835})();
13836var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
13837 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
13838 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
13839 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
13840 return c > 3 && r && Object.defineProperty(target, key, r), r;
13841};
13842
13843
13844
13845
13846
13847
13848
13849/**
13850 * Contains common logic to all provided filters (apply button, clear button, etc).
13851 * All the filters that come with AG Grid extend this class. User filters do not
13852 * extend this class.
13853 *
13854 * @param M type of filter-model managed by the concrete sub-class that extends this type
13855 * @param V type of value managed by the concrete sub-class that extends this type
13856 */
13857var ProvidedFilter = /** @class */ (function (_super) {
13858 __extends(ProvidedFilter, _super);
13859 function ProvidedFilter(filterNameKey) {
13860 var _this = _super.call(this) || this;
13861 _this.filterNameKey = filterNameKey;
13862 _this.applyActive = false;
13863 _this.hidePopup = null;
13864 // after the user hits 'apply' the model gets copied to here. this is then the model that we use for
13865 // all filtering. so if user changes UI but doesn't hit apply, then the UI will be out of sync with this model.
13866 // this is what we want, as the UI should only become the 'active' filter once it's applied. when apply is
13867 // inactive, this model will be in sync (following the debounce ms). if the UI is not a valid filter
13868 // (eg the value is missing so nothing to filter on, or for set filter all checkboxes are checked so filter
13869 // not active) then this appliedModel will be null/undefined.
13870 _this.appliedModel = null;
13871 return _this;
13872 }
13873 ProvidedFilter.prototype.postConstruct = function () {
13874 this.resetTemplate(); // do this first to create the DOM
13875 this.createManagedBean(new _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_4__["ManagedFocusFeature"](this.getFocusableElement(), {
13876 handleKeyDown: this.handleKeyDown.bind(this)
13877 }));
13878 };
13879 // override
13880 ProvidedFilter.prototype.handleKeyDown = function (e) { };
13881 ProvidedFilter.prototype.getFilterTitle = function () {
13882 return this.translate(this.filterNameKey);
13883 };
13884 ProvidedFilter.prototype.isFilterActive = function () {
13885 // filter is active if we have a valid applied model
13886 return !!this.appliedModel;
13887 };
13888 ProvidedFilter.prototype.resetTemplate = function (paramsMap) {
13889 var templateString = /* html */ "\n <div class=\"ag-filter-wrapper\">\n <div class=\"ag-filter-body-wrapper ag-" + this.getCssIdentifier() + "-body-wrapper\">\n " + this.createBodyTemplate() + "\n </div>\n </div>";
13890 this.setTemplate(templateString, paramsMap);
13891 };
13892 ProvidedFilter.prototype.isReadOnly = function () {
13893 return !!this.providedFilterParams.readOnly;
13894 };
13895 ProvidedFilter.prototype.init = function (params) {
13896 var _this = this;
13897 this.setParams(params);
13898 this.resetUiToDefaults(true).then(function () {
13899 _this.updateUiVisibility();
13900 _this.setupOnBtApplyDebounce();
13901 });
13902 };
13903 ProvidedFilter.prototype.setParams = function (params) {
13904 this.providedFilterParams = params;
13905 this.applyActive = ProvidedFilter.isUseApplyButton(params);
13906 this.createButtonPanel();
13907 };
13908 ProvidedFilter.prototype.createButtonPanel = function () {
13909 var _this = this;
13910 var buttons = this.providedFilterParams.buttons;
13911 if (!buttons || buttons.length < 1 || this.isReadOnly()) {
13912 return;
13913 }
13914 var eButtonsPanel = document.createElement('div');
13915 eButtonsPanel.classList.add('ag-filter-apply-panel');
13916 var addButton = function (type) {
13917 var text;
13918 var clickListener;
13919 switch (type) {
13920 case 'apply':
13921 text = _this.translate('applyFilter');
13922 clickListener = function (e) { return _this.onBtApply(false, false, e); };
13923 break;
13924 case 'clear':
13925 text = _this.translate('clearFilter');
13926 clickListener = function () { return _this.onBtClear(); };
13927 break;
13928 case 'reset':
13929 text = _this.translate('resetFilter');
13930 clickListener = function () { return _this.onBtReset(); };
13931 break;
13932 case 'cancel':
13933 text = _this.translate('cancelFilter');
13934 clickListener = function (e) { _this.onBtCancel(e); };
13935 break;
13936 default:
13937 console.warn('AG Grid: Unknown button type specified');
13938 return;
13939 }
13940 var button = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__["loadTemplate"])(
13941 /* html */
13942 "<button\n type=\"button\"\n ref=\"" + type + "FilterButton\"\n class=\"ag-standard-button ag-filter-apply-panel-button\"\n >" + text + "\n </button>");
13943 eButtonsPanel.appendChild(button);
13944 _this.addManagedListener(button, 'click', clickListener);
13945 };
13946 Object(_utils_set__WEBPACK_IMPORTED_MODULE_5__["convertToSet"])(buttons).forEach(function (type) { return addButton(type); });
13947 this.getGui().appendChild(eButtonsPanel);
13948 };
13949 // subclasses can override this to provide alternative debounce defaults
13950 ProvidedFilter.prototype.getDefaultDebounceMs = function () {
13951 return 0;
13952 };
13953 ProvidedFilter.prototype.setupOnBtApplyDebounce = function () {
13954 var debounceMs = ProvidedFilter.getDebounceMs(this.providedFilterParams, this.getDefaultDebounceMs());
13955 this.onBtApplyDebounce = Object(_utils_function__WEBPACK_IMPORTED_MODULE_2__["debounce"])(this.onBtApply.bind(this), debounceMs);
13956 };
13957 ProvidedFilter.prototype.getModel = function () {
13958 return this.appliedModel ? this.appliedModel : null;
13959 };
13960 ProvidedFilter.prototype.setModel = function (model) {
13961 var _this = this;
13962 var promise = model != null ? this.setModelIntoUi(model) : this.resetUiToDefaults();
13963 return promise.then(function () {
13964 _this.updateUiVisibility();
13965 // we set the model from the GUI, rather than the provided model,
13966 // so the model is consistent, e.g. handling of null/undefined will be the same,
13967 // or if model is case insensitive, then casing is removed.
13968 _this.applyModel();
13969 });
13970 };
13971 ProvidedFilter.prototype.onBtCancel = function (e) {
13972 var _this = this;
13973 var currentModel = this.getModel();
13974 var afterAppliedFunc = function () {
13975 _this.onUiChanged(false, 'prevent');
13976 if (_this.providedFilterParams.closeOnApply) {
13977 _this.close(e);
13978 }
13979 };
13980 if (currentModel != null) {
13981 this.setModelIntoUi(currentModel).then(afterAppliedFunc);
13982 }
13983 else {
13984 this.resetUiToDefaults().then(afterAppliedFunc);
13985 }
13986 };
13987 ProvidedFilter.prototype.onBtClear = function () {
13988 var _this = this;
13989 this.resetUiToDefaults().then(function () { return _this.onUiChanged(); });
13990 };
13991 ProvidedFilter.prototype.onBtReset = function () {
13992 this.onBtClear();
13993 this.onBtApply();
13994 };
13995 /**
13996 * Applies changes made in the UI to the filter, and returns true if the model has changed.
13997 */
13998 ProvidedFilter.prototype.applyModel = function () {
13999 var newModel = this.getModelFromUi();
14000 if (!this.isModelValid(newModel)) {
14001 return false;
14002 }
14003 var previousModel = this.appliedModel;
14004 this.appliedModel = newModel;
14005 // models can be same if user pasted same content into text field, or maybe just changed the case
14006 // and it's a case insensitive filter
14007 return !this.areModelsEqual(previousModel, newModel);
14008 };
14009 ProvidedFilter.prototype.isModelValid = function (model) {
14010 return true;
14011 };
14012 ProvidedFilter.prototype.onBtApply = function (afterFloatingFilter, afterDataChange, e) {
14013 if (afterFloatingFilter === void 0) { afterFloatingFilter = false; }
14014 if (afterDataChange === void 0) { afterDataChange = false; }
14015 if (this.applyModel()) {
14016 // the floating filter uses 'afterFloatingFilter' info, so it doesn't refresh after filter changed if change
14017 // came from floating filter
14018 this.providedFilterParams.filterChangedCallback({ afterFloatingFilter: afterFloatingFilter, afterDataChange: afterDataChange });
14019 }
14020 var closeOnApply = this.providedFilterParams.closeOnApply;
14021 // only close if an apply button is visible, otherwise we'd be closing every time a change was made!
14022 if (closeOnApply && this.applyActive && !afterFloatingFilter && !afterDataChange) {
14023 this.close(e);
14024 }
14025 };
14026 ProvidedFilter.prototype.onNewRowsLoaded = function () {
14027 };
14028 ProvidedFilter.prototype.close = function (e) {
14029 if (!this.hidePopup) {
14030 return;
14031 }
14032 var keyboardEvent = e;
14033 var key = keyboardEvent && keyboardEvent.key;
14034 var params;
14035 if (key === 'Enter' || key === 'Space') {
14036 params = { keyboardEvent: keyboardEvent };
14037 }
14038 this.hidePopup(params);
14039 this.hidePopup = null;
14040 };
14041 /**
14042 * By default, if the change came from a floating filter it will be applied immediately, otherwise if there is no
14043 * apply button it will be applied after a debounce, otherwise it will not be applied at all. This behaviour can
14044 * be adjusted by using the apply parameter.
14045 */
14046 ProvidedFilter.prototype.onUiChanged = function (fromFloatingFilter, apply) {
14047 if (fromFloatingFilter === void 0) { fromFloatingFilter = false; }
14048 this.updateUiVisibility();
14049 this.providedFilterParams.filterModifiedCallback();
14050 if (this.applyActive && !this.isReadOnly) {
14051 var isValid = this.isModelValid(this.getModelFromUi());
14052 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__["setDisabled"])(this.getRefElement('applyFilterButton'), !isValid);
14053 }
14054 if ((fromFloatingFilter && !apply) || apply === 'immediately') {
14055 this.onBtApply(fromFloatingFilter);
14056 }
14057 else if ((!this.applyActive && !apply) || apply === 'debounce') {
14058 this.onBtApplyDebounce();
14059 }
14060 };
14061 ProvidedFilter.prototype.afterGuiAttached = function (params) {
14062 if (params == null) {
14063 return;
14064 }
14065 this.hidePopup = params.hidePopup;
14066 };
14067 // static, as used by floating filter also
14068 ProvidedFilter.getDebounceMs = function (params, debounceDefault) {
14069 if (ProvidedFilter.isUseApplyButton(params)) {
14070 if (params.debounceMs != null) {
14071 console.warn('AG Grid: debounceMs is ignored when apply button is present');
14072 }
14073 return 0;
14074 }
14075 return params.debounceMs != null ? params.debounceMs : debounceDefault;
14076 };
14077 // static, as used by floating filter also
14078 ProvidedFilter.isUseApplyButton = function (params) {
14079 return !!params.buttons && params.buttons.indexOf('apply') >= 0;
14080 };
14081 ProvidedFilter.prototype.destroy = function () {
14082 this.hidePopup = null;
14083 _super.prototype.destroy.call(this);
14084 };
14085 ProvidedFilter.prototype.translate = function (key) {
14086 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
14087 return translate(key, _filterLocaleText__WEBPACK_IMPORTED_MODULE_3__["DEFAULT_FILTER_LOCALE_TEXT"][key]);
14088 };
14089 ProvidedFilter.prototype.getCellValue = function (rowNode) {
14090 var _a = this.providedFilterParams, api = _a.api, colDef = _a.colDef, column = _a.column, columnApi = _a.columnApi, context = _a.context;
14091 return this.providedFilterParams.valueGetter({
14092 api: api,
14093 colDef: colDef,
14094 column: column,
14095 columnApi: columnApi,
14096 context: context,
14097 data: rowNode.data,
14098 getValue: function (field) { return rowNode.data[field]; },
14099 node: rowNode,
14100 });
14101 };
14102 __decorate([
14103 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowModel')
14104 ], ProvidedFilter.prototype, "rowModel", void 0);
14105 __decorate([
14106 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('valueService')
14107 ], ProvidedFilter.prototype, "valueService", void 0);
14108 __decorate([
14109 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
14110 ], ProvidedFilter.prototype, "postConstruct", null);
14111 return ProvidedFilter;
14112}(_widgets_component__WEBPACK_IMPORTED_MODULE_6__["Component"]));
14113
14114
14115
14116
14117
14118/***/ }),
14119/* 63 */
14120/***/ (function(module, __webpack_exports__, __webpack_require__) {
14121
14122"use strict";
14123__webpack_require__.r(__webpack_exports__);
14124/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DEFAULT_FILTER_LOCALE_TEXT", function() { return DEFAULT_FILTER_LOCALE_TEXT; });
14125/**
14126 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
14127 * @version v27.3.0
14128 * @link https://www.ag-grid.com/
14129 * @license MIT
14130 */
14131var DEFAULT_FILTER_LOCALE_TEXT = {
14132 applyFilter: 'Apply',
14133 clearFilter: 'Clear',
14134 resetFilter: 'Reset',
14135 cancelFilter: 'Cancel',
14136 textFilter: 'Text Filter',
14137 numberFilter: 'Number Filter',
14138 dateFilter: 'Date Filter',
14139 setFilter: 'Set Filter',
14140 filterOoo: 'Filter...',
14141 empty: 'Choose One',
14142 equals: 'Equals',
14143 notEqual: 'Not equal',
14144 lessThan: 'Less than',
14145 greaterThan: 'Greater than',
14146 inRange: 'In range',
14147 inRangeStart: 'From',
14148 inRangeEnd: 'To',
14149 lessThanOrEqual: 'Less than or equals',
14150 greaterThanOrEqual: 'Greater than or equals',
14151 contains: 'Contains',
14152 notContains: 'Not contains',
14153 startsWith: 'Starts with',
14154 endsWith: 'Ends with',
14155 blank: 'Blank',
14156 notBlank: 'Not blank',
14157 andCondition: 'AND',
14158 orCondition: 'OR',
14159 dateFormatOoo: 'yyyy-mm-dd',
14160};
14161
14162
14163
14164
14165/***/ }),
14166/* 64 */
14167/***/ (function(module, __webpack_exports__, __webpack_require__) {
14168
14169"use strict";
14170__webpack_require__.r(__webpack_exports__);
14171/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ManagedFocusFeature", function() { return ManagedFocusFeature; });
14172/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
14173/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65);
14174/* harmony import */ var _utils_event__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(21);
14175/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20);
14176/**
14177 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
14178 * @version v27.3.0
14179 * @link https://www.ag-grid.com/
14180 * @license MIT
14181 */
14182var __extends = (undefined && undefined.__extends) || (function () {
14183 var extendStatics = function (d, b) {
14184 extendStatics = Object.setPrototypeOf ||
14185 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
14186 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
14187 return extendStatics(d, b);
14188 };
14189 return function (d, b) {
14190 extendStatics(d, b);
14191 function __() { this.constructor = d; }
14192 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14193 };
14194})();
14195var __assign = (undefined && undefined.__assign) || function () {
14196 __assign = Object.assign || function(t) {
14197 for (var s, i = 1, n = arguments.length; i < n; i++) {
14198 s = arguments[i];
14199 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
14200 t[p] = s[p];
14201 }
14202 return t;
14203 };
14204 return __assign.apply(this, arguments);
14205};
14206var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
14207 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
14208 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
14209 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
14210 return c > 3 && r && Object.defineProperty(target, key, r), r;
14211};
14212
14213
14214
14215
14216var ManagedFocusFeature = /** @class */ (function (_super) {
14217 __extends(ManagedFocusFeature, _super);
14218 function ManagedFocusFeature(eFocusableElement, callbacks) {
14219 if (callbacks === void 0) { callbacks = {}; }
14220 var _this = _super.call(this) || this;
14221 _this.eFocusableElement = eFocusableElement;
14222 _this.callbacks = callbacks;
14223 _this.callbacks = __assign({ shouldStopEventPropagation: function () { return false; }, onTabKeyDown: function (e) {
14224 if (e.defaultPrevented) {
14225 return;
14226 }
14227 var nextRoot = _this.focusService.findNextFocusableElement(_this.eFocusableElement, false, e.shiftKey);
14228 if (!nextRoot) {
14229 return;
14230 }
14231 nextRoot.focus();
14232 e.preventDefault();
14233 } }, callbacks);
14234 return _this;
14235 }
14236 ManagedFocusFeature.prototype.postConstruct = function () {
14237 this.eFocusableElement.classList.add(ManagedFocusFeature.FOCUS_MANAGED_CLASS);
14238 this.addKeyDownListeners(this.eFocusableElement);
14239 if (this.callbacks.onFocusIn) {
14240 this.addManagedListener(this.eFocusableElement, 'focusin', this.callbacks.onFocusIn);
14241 }
14242 if (this.callbacks.onFocusOut) {
14243 this.addManagedListener(this.eFocusableElement, 'focusout', this.callbacks.onFocusOut);
14244 }
14245 };
14246 ManagedFocusFeature.prototype.addKeyDownListeners = function (eGui) {
14247 var _this = this;
14248 this.addManagedListener(eGui, 'keydown', function (e) {
14249 if (e.defaultPrevented || Object(_utils_event__WEBPACK_IMPORTED_MODULE_2__["isStopPropagationForAgGrid"])(e)) {
14250 return;
14251 }
14252 if (_this.callbacks.shouldStopEventPropagation(e)) {
14253 Object(_utils_event__WEBPACK_IMPORTED_MODULE_2__["stopPropagationForAgGrid"])(e);
14254 return;
14255 }
14256 if (e.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].TAB) {
14257 _this.callbacks.onTabKeyDown(e);
14258 }
14259 else if (_this.callbacks.handleKeyDown) {
14260 _this.callbacks.handleKeyDown(e);
14261 }
14262 });
14263 };
14264 ManagedFocusFeature.FOCUS_MANAGED_CLASS = 'ag-focus-managed';
14265 __decorate([
14266 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('focusService')
14267 ], ManagedFocusFeature.prototype, "focusService", void 0);
14268 __decorate([
14269 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
14270 ], ManagedFocusFeature.prototype, "postConstruct", null);
14271 return ManagedFocusFeature;
14272}(_context_beanStub__WEBPACK_IMPORTED_MODULE_3__["BeanStub"]));
14273
14274
14275
14276
14277
14278/***/ }),
14279/* 65 */
14280/***/ (function(module, __webpack_exports__, __webpack_require__) {
14281
14282"use strict";
14283__webpack_require__.r(__webpack_exports__);
14284/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "KeyCode", function() { return KeyCode; });
14285/**
14286 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
14287 * @version v27.3.0
14288 * @link https://www.ag-grid.com/
14289 * @license MIT
14290 */
14291var KeyCode = /** @class */ (function () {
14292 function KeyCode() {
14293 }
14294 KeyCode.BACKSPACE = 'Backspace';
14295 KeyCode.TAB = 'Tab';
14296 KeyCode.ENTER = 'Enter';
14297 KeyCode.ESCAPE = 'Escape';
14298 KeyCode.SPACE = ' ';
14299 KeyCode.LEFT = 'ArrowLeft';
14300 KeyCode.UP = 'ArrowUp';
14301 KeyCode.RIGHT = 'ArrowRight';
14302 KeyCode.DOWN = 'ArrowDown';
14303 KeyCode.DELETE = 'Delete';
14304 KeyCode.F2 = 'F2';
14305 KeyCode.PAGE_UP = 'PageUp';
14306 KeyCode.PAGE_DOWN = 'PageDown';
14307 KeyCode.PAGE_HOME = 'Home';
14308 KeyCode.PAGE_END = 'End';
14309 // these should be used with `event.code` instead of `event.key`
14310 // as `event.key` changes when non-latin keyboards are used
14311 KeyCode.A = 'KeyA';
14312 KeyCode.C = 'KeyC';
14313 KeyCode.V = 'KeyV';
14314 KeyCode.D = 'KeyD';
14315 KeyCode.Z = 'KeyZ';
14316 KeyCode.Y = 'KeyY';
14317 return KeyCode;
14318}());
14319
14320
14321
14322
14323
14324/***/ }),
14325/* 66 */
14326/***/ (function(module, __webpack_exports__, __webpack_require__) {
14327
14328"use strict";
14329__webpack_require__.r(__webpack_exports__);
14330/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgSelect", function() { return AgSelect; });
14331/* harmony import */ var _agAbstractField__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(67);
14332/* harmony import */ var _agPickerField__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(69);
14333/* harmony import */ var _agList__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(70);
14334/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12);
14335/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(42);
14336/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(44);
14337/**
14338 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
14339 * @version v27.3.0
14340 * @link https://www.ag-grid.com/
14341 * @license MIT
14342 */
14343var __extends = (undefined && undefined.__extends) || (function () {
14344 var extendStatics = function (d, b) {
14345 extendStatics = Object.setPrototypeOf ||
14346 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
14347 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
14348 return extendStatics(d, b);
14349 };
14350 return function (d, b) {
14351 extendStatics(d, b);
14352 function __() { this.constructor = d; }
14353 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14354 };
14355})();
14356var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
14357 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
14358 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
14359 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
14360 return c > 3 && r && Object.defineProperty(target, key, r), r;
14361};
14362
14363
14364
14365
14366
14367
14368var AgSelect = /** @class */ (function (_super) {
14369 __extends(AgSelect, _super);
14370 function AgSelect(config) {
14371 return _super.call(this, config, 'ag-select', 'smallDown', 'listbox') || this;
14372 }
14373 AgSelect.prototype.init = function () {
14374 var _this = this;
14375 this.listComponent = this.createBean(new _agList__WEBPACK_IMPORTED_MODULE_2__["AgList"]('select'));
14376 this.listComponent.setParentComponent(this);
14377 this.eWrapper.tabIndex = 0;
14378 this.listComponent.addManagedListener(this.listComponent, _agList__WEBPACK_IMPORTED_MODULE_2__["AgList"].EVENT_ITEM_SELECTED, function () { if (_this.hideList) {
14379 _this.hideList();
14380 } });
14381 this.listComponent.addManagedListener(this.listComponent, _agAbstractField__WEBPACK_IMPORTED_MODULE_0__["AgAbstractField"].EVENT_CHANGED, function () {
14382 _this.setValue(_this.listComponent.getValue(), false, true);
14383 if (_this.hideList) {
14384 _this.hideList();
14385 }
14386 });
14387 };
14388 AgSelect.prototype.showPicker = function () {
14389 var _this = this;
14390 var listGui = this.listComponent.getGui();
14391 var eDocument = this.gridOptionsWrapper.getDocument();
14392 var destroyMouseWheelFunc = this.addManagedListener(eDocument.body, 'wheel', function (e) {
14393 if (!listGui.contains(e.target) && _this.hideList) {
14394 _this.hideList();
14395 }
14396 });
14397 var destroyFocusOutFunc = this.addManagedListener(listGui, 'focusout', function (e) {
14398 if (!listGui.contains(e.relatedTarget) && _this.hideList) {
14399 _this.hideList();
14400 }
14401 });
14402 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
14403 var addPopupRes = this.popupService.addPopup({
14404 modal: true,
14405 eChild: listGui,
14406 closeOnEsc: true,
14407 closedCallback: function () {
14408 _this.hideList = null;
14409 _this.isPickerDisplayed = false;
14410 destroyFocusOutFunc();
14411 destroyMouseWheelFunc();
14412 if (_this.isAlive()) {
14413 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_5__["setAriaExpanded"])(_this.eWrapper, false);
14414 _this.getFocusableElement().focus();
14415 }
14416 },
14417 ariaLabel: translate('ariaLabelSelectField', 'Select Field')
14418 });
14419 if (addPopupRes) {
14420 this.hideList = addPopupRes.hideFunc;
14421 }
14422 this.isPickerDisplayed = true;
14423 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["setElementWidth"])(listGui, Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["getAbsoluteWidth"])(this.eWrapper));
14424 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_5__["setAriaExpanded"])(this.eWrapper, true);
14425 listGui.style.maxHeight = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["getInnerHeight"])(this.popupService.getPopupParent()) + 'px';
14426 listGui.style.position = 'absolute';
14427 this.popupService.positionPopupUnderComponent({
14428 type: 'ag-list',
14429 eventSource: this.eWrapper,
14430 ePopup: listGui,
14431 keepWithinBounds: true
14432 });
14433 this.listComponent.refreshHighlighted();
14434 return this.listComponent;
14435 };
14436 AgSelect.prototype.addOptions = function (options) {
14437 var _this = this;
14438 options.forEach(function (option) { return _this.addOption(option); });
14439 return this;
14440 };
14441 AgSelect.prototype.addOption = function (option) {
14442 this.listComponent.addOption(option);
14443 return this;
14444 };
14445 AgSelect.prototype.setValue = function (value, silent, fromPicker) {
14446 if (this.value === value) {
14447 return this;
14448 }
14449 if (!fromPicker) {
14450 this.listComponent.setValue(value, true);
14451 }
14452 var newValue = this.listComponent.getValue();
14453 if (newValue === this.getValue()) {
14454 return this;
14455 }
14456 this.eDisplayField.innerHTML = this.listComponent.getDisplayValue();
14457 return _super.prototype.setValue.call(this, value, silent);
14458 };
14459 AgSelect.prototype.destroy = function () {
14460 if (this.hideList) {
14461 this.hideList();
14462 }
14463 this.destroyBean(this.listComponent);
14464 _super.prototype.destroy.call(this);
14465 };
14466 __decorate([
14467 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Autowired"])('popupService')
14468 ], AgSelect.prototype, "popupService", void 0);
14469 __decorate([
14470 _context_context__WEBPACK_IMPORTED_MODULE_3__["PostConstruct"]
14471 ], AgSelect.prototype, "init", null);
14472 return AgSelect;
14473}(_agPickerField__WEBPACK_IMPORTED_MODULE_1__["AgPickerField"]));
14474
14475
14476
14477
14478
14479/***/ }),
14480/* 67 */
14481/***/ (function(module, __webpack_exports__, __webpack_require__) {
14482
14483"use strict";
14484__webpack_require__.r(__webpack_exports__);
14485/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgAbstractField", function() { return AgAbstractField; });
14486/* harmony import */ var _agAbstractLabel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(68);
14487/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42);
14488/**
14489 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
14490 * @version v27.3.0
14491 * @link https://www.ag-grid.com/
14492 * @license MIT
14493 */
14494var __extends = (undefined && undefined.__extends) || (function () {
14495 var extendStatics = function (d, b) {
14496 extendStatics = Object.setPrototypeOf ||
14497 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
14498 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
14499 return extendStatics(d, b);
14500 };
14501 return function (d, b) {
14502 extendStatics(d, b);
14503 function __() { this.constructor = d; }
14504 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14505 };
14506})();
14507
14508
14509var AgAbstractField = /** @class */ (function (_super) {
14510 __extends(AgAbstractField, _super);
14511 function AgAbstractField(config, template, className) {
14512 var _this = _super.call(this, config, template) || this;
14513 _this.className = className;
14514 _this.disabled = false;
14515 return _this;
14516 }
14517 AgAbstractField.prototype.postConstruct = function () {
14518 _super.prototype.postConstruct.call(this);
14519 if (this.className) {
14520 this.addCssClass(this.className);
14521 }
14522 };
14523 AgAbstractField.prototype.onValueChange = function (callbackFn) {
14524 var _this = this;
14525 this.addManagedListener(this, AgAbstractField.EVENT_CHANGED, function () { return callbackFn(_this.getValue()); });
14526 return this;
14527 };
14528 AgAbstractField.prototype.getWidth = function () {
14529 return this.getGui().clientWidth;
14530 };
14531 AgAbstractField.prototype.setWidth = function (width) {
14532 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__["setFixedWidth"])(this.getGui(), width);
14533 return this;
14534 };
14535 AgAbstractField.prototype.getPreviousValue = function () {
14536 return this.previousValue;
14537 };
14538 AgAbstractField.prototype.getValue = function () {
14539 return this.value;
14540 };
14541 AgAbstractField.prototype.setValue = function (value, silent) {
14542 if (this.value === value) {
14543 return this;
14544 }
14545 this.previousValue = this.value;
14546 this.value = value;
14547 if (!silent) {
14548 this.dispatchEvent({ type: AgAbstractField.EVENT_CHANGED });
14549 }
14550 return this;
14551 };
14552 AgAbstractField.prototype.setDisabled = function (disabled) {
14553 disabled = !!disabled;
14554 var element = this.getGui();
14555 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__["setDisabled"])(element, disabled);
14556 element.classList.toggle('ag-disabled', disabled);
14557 this.disabled = disabled;
14558 return this;
14559 };
14560 AgAbstractField.prototype.isDisabled = function () {
14561 return !!this.disabled;
14562 };
14563 AgAbstractField.EVENT_CHANGED = 'valueChange';
14564 return AgAbstractField;
14565}(_agAbstractLabel__WEBPACK_IMPORTED_MODULE_0__["AgAbstractLabel"]));
14566
14567
14568
14569
14570
14571/***/ }),
14572/* 68 */
14573/***/ (function(module, __webpack_exports__, __webpack_require__) {
14574
14575"use strict";
14576__webpack_require__.r(__webpack_exports__);
14577/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgAbstractLabel", function() { return AgAbstractLabel; });
14578/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
14579/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
14580/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
14581/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44);
14582/**
14583 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
14584 * @version v27.3.0
14585 * @link https://www.ag-grid.com/
14586 * @license MIT
14587 */
14588var __extends = (undefined && undefined.__extends) || (function () {
14589 var extendStatics = function (d, b) {
14590 extendStatics = Object.setPrototypeOf ||
14591 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
14592 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
14593 return extendStatics(d, b);
14594 };
14595 return function (d, b) {
14596 extendStatics(d, b);
14597 function __() { this.constructor = d; }
14598 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14599 };
14600})();
14601var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
14602 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
14603 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
14604 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
14605 return c > 3 && r && Object.defineProperty(target, key, r), r;
14606};
14607
14608
14609
14610
14611var AgAbstractLabel = /** @class */ (function (_super) {
14612 __extends(AgAbstractLabel, _super);
14613 function AgAbstractLabel(config, template) {
14614 var _this = _super.call(this, template) || this;
14615 _this.labelSeparator = '';
14616 _this.labelAlignment = 'left';
14617 _this.label = '';
14618 _this.config = config || {};
14619 return _this;
14620 }
14621 AgAbstractLabel.prototype.postConstruct = function () {
14622 this.addCssClass('ag-labeled');
14623 this.eLabel.classList.add('ag-label');
14624 var _a = this.config, labelSeparator = _a.labelSeparator, label = _a.label, labelWidth = _a.labelWidth, labelAlignment = _a.labelAlignment;
14625 if (labelSeparator != null) {
14626 this.setLabelSeparator(labelSeparator);
14627 }
14628 if (label != null) {
14629 this.setLabel(label);
14630 }
14631 if (labelWidth != null) {
14632 this.setLabelWidth(labelWidth);
14633 }
14634 this.setLabelAlignment(labelAlignment || this.labelAlignment);
14635 this.refreshLabel();
14636 };
14637 AgAbstractLabel.prototype.refreshLabel = function () {
14638 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["clearElement"])(this.eLabel);
14639 if (typeof this.label === 'string') {
14640 this.eLabel.innerText = this.label + this.labelSeparator;
14641 }
14642 else if (this.label) {
14643 this.eLabel.appendChild(this.label);
14644 }
14645 if (this.label === '') {
14646 this.eLabel.classList.add('ag-hidden');
14647 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_3__["setAriaRole"])(this.eLabel, 'presentation');
14648 }
14649 else {
14650 this.eLabel.classList.remove('ag-hidden');
14651 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_3__["setAriaRole"])(this.eLabel, null);
14652 }
14653 };
14654 AgAbstractLabel.prototype.setLabelSeparator = function (labelSeparator) {
14655 if (this.labelSeparator === labelSeparator) {
14656 return this;
14657 }
14658 this.labelSeparator = labelSeparator;
14659 if (this.label != null) {
14660 this.refreshLabel();
14661 }
14662 return this;
14663 };
14664 AgAbstractLabel.prototype.getLabelId = function () {
14665 this.eLabel.id = this.eLabel.id || "ag-" + this.getCompId() + "-label";
14666 return this.eLabel.id;
14667 };
14668 AgAbstractLabel.prototype.getLabel = function () {
14669 return this.label;
14670 };
14671 AgAbstractLabel.prototype.setLabel = function (label) {
14672 if (this.label === label) {
14673 return this;
14674 }
14675 this.label = label;
14676 this.refreshLabel();
14677 return this;
14678 };
14679 AgAbstractLabel.prototype.setLabelAlignment = function (alignment) {
14680 var eGui = this.getGui();
14681 var eGuiClassList = eGui.classList;
14682 eGuiClassList.toggle('ag-label-align-left', alignment === 'left');
14683 eGuiClassList.toggle('ag-label-align-right', alignment === 'right');
14684 eGuiClassList.toggle('ag-label-align-top', alignment === 'top');
14685 return this;
14686 };
14687 AgAbstractLabel.prototype.setLabelWidth = function (width) {
14688 if (this.label == null) {
14689 return this;
14690 }
14691 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setElementWidth"])(this.eLabel, width);
14692 return this;
14693 };
14694 __decorate([
14695 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
14696 ], AgAbstractLabel.prototype, "postConstruct", null);
14697 return AgAbstractLabel;
14698}(_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
14699
14700
14701
14702
14703
14704/***/ }),
14705/* 69 */
14706/***/ (function(module, __webpack_exports__, __webpack_require__) {
14707
14708"use strict";
14709__webpack_require__.r(__webpack_exports__);
14710/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgPickerField", function() { return AgPickerField; });
14711/* harmony import */ var _agAbstractField__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(67);
14712/* harmony import */ var _componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
14713/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44);
14714/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(48);
14715/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
14716/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(42);
14717/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(65);
14718/**
14719 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
14720 * @version v27.3.0
14721 * @link https://www.ag-grid.com/
14722 * @license MIT
14723 */
14724var __extends = (undefined && undefined.__extends) || (function () {
14725 var extendStatics = function (d, b) {
14726 extendStatics = Object.setPrototypeOf ||
14727 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
14728 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
14729 return extendStatics(d, b);
14730 };
14731 return function (d, b) {
14732 extendStatics(d, b);
14733 function __() { this.constructor = d; }
14734 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14735 };
14736})();
14737var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
14738 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
14739 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
14740 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
14741 return c > 3 && r && Object.defineProperty(target, key, r), r;
14742};
14743
14744
14745
14746
14747
14748
14749
14750var AgPickerField = /** @class */ (function (_super) {
14751 __extends(AgPickerField, _super);
14752 function AgPickerField(config, className, pickerIcon, ariaRole) {
14753 var _this = _super.call(this, config,
14754 /* html */ "<div class=\"ag-picker-field\" role=\"presentation\">\n <div ref=\"eLabel\"></div>\n <div ref=\"eWrapper\"\n class=\"ag-wrapper ag-picker-field-wrapper\"\n tabIndex=\"-1\"\n aria-expanded=\"false\"\n " + (ariaRole ? "role=\"" + ariaRole + "\"" : '') + "\n >\n <div ref=\"eDisplayField\" class=\"ag-picker-field-display\"></div>\n <div ref=\"eIcon\" class=\"ag-picker-field-icon\" aria-hidden=\"true\"></div>\n </div>\n </div>", className) || this;
14755 _this.pickerIcon = pickerIcon;
14756 _this.isPickerDisplayed = false;
14757 _this.isDestroyingPicker = false;
14758 _this.skipClick = false;
14759 return _this;
14760 }
14761 AgPickerField.prototype.postConstruct = function () {
14762 var _this = this;
14763 _super.prototype.postConstruct.call(this);
14764 var displayId = this.getCompId() + "-display";
14765 this.eDisplayField.setAttribute('id', displayId);
14766 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaDescribedBy"])(this.eWrapper, displayId);
14767 var clickHandler = function () {
14768 if (_this.skipClick) {
14769 _this.skipClick = false;
14770 return;
14771 }
14772 if (_this.isDisabled()) {
14773 return;
14774 }
14775 _this.pickerComponent = _this.showPicker();
14776 };
14777 var eGui = this.getGui();
14778 this.addManagedListener(eGui, 'mousedown', function (e) {
14779 if (!_this.skipClick &&
14780 _this.pickerComponent &&
14781 _this.pickerComponent.isAlive() &&
14782 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["isVisible"])(_this.pickerComponent.getGui()) &&
14783 eGui.contains(e.target)) {
14784 _this.skipClick = true;
14785 }
14786 });
14787 this.addManagedListener(eGui, 'keydown', function (e) {
14788 switch (e.key) {
14789 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_6__["KeyCode"].UP:
14790 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_6__["KeyCode"].DOWN:
14791 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_6__["KeyCode"].ENTER:
14792 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_6__["KeyCode"].SPACE:
14793 clickHandler();
14794 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_6__["KeyCode"].ESCAPE:
14795 if (_this.isPickerDisplayed) {
14796 e.preventDefault();
14797 }
14798 break;
14799 }
14800 });
14801 this.addManagedListener(this.eWrapper, 'click', clickHandler);
14802 this.addManagedListener(this.eLabel, 'click', clickHandler);
14803 if (this.pickerIcon) {
14804 var icon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_3__["createIconNoSpan"])(this.pickerIcon, this.gridOptionsWrapper);
14805 if (icon) {
14806 this.eIcon.appendChild(icon);
14807 }
14808 }
14809 };
14810 AgPickerField.prototype.refreshLabel = function () {
14811 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_4__["exists"])(this.getLabel())) {
14812 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaLabelledBy"])(this.eWrapper, this.getLabelId());
14813 }
14814 else {
14815 this.eWrapper.removeAttribute('aria-labelledby');
14816 }
14817 _super.prototype.refreshLabel.call(this);
14818 };
14819 AgPickerField.prototype.setAriaLabel = function (label) {
14820 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaLabel"])(this.eWrapper, label);
14821 return this;
14822 };
14823 AgPickerField.prototype.setInputWidth = function (width) {
14824 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["setElementWidth"])(this.eWrapper, width);
14825 return this;
14826 };
14827 AgPickerField.prototype.getFocusableElement = function () {
14828 return this.eWrapper;
14829 };
14830 __decorate([
14831 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eLabel')
14832 ], AgPickerField.prototype, "eLabel", void 0);
14833 __decorate([
14834 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eWrapper')
14835 ], AgPickerField.prototype, "eWrapper", void 0);
14836 __decorate([
14837 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eDisplayField')
14838 ], AgPickerField.prototype, "eDisplayField", void 0);
14839 __decorate([
14840 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eIcon')
14841 ], AgPickerField.prototype, "eIcon", void 0);
14842 return AgPickerField;
14843}(_agAbstractField__WEBPACK_IMPORTED_MODULE_0__["AgAbstractField"]));
14844
14845
14846
14847
14848
14849/***/ }),
14850/* 70 */
14851/***/ (function(module, __webpack_exports__, __webpack_require__) {
14852
14853"use strict";
14854__webpack_require__.r(__webpack_exports__);
14855/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgList", function() { return AgList; });
14856/* harmony import */ var _agAbstractField__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(67);
14857/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(36);
14858/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
14859/* harmony import */ var _utils_string__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(26);
14860/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(65);
14861/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(44);
14862/**
14863 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
14864 * @version v27.3.0
14865 * @link https://www.ag-grid.com/
14866 * @license MIT
14867 */
14868var __extends = (undefined && undefined.__extends) || (function () {
14869 var extendStatics = function (d, b) {
14870 extendStatics = Object.setPrototypeOf ||
14871 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
14872 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
14873 return extendStatics(d, b);
14874 };
14875 return function (d, b) {
14876 extendStatics(d, b);
14877 function __() { this.constructor = d; }
14878 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
14879 };
14880})();
14881var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
14882 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
14883 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
14884 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
14885 return c > 3 && r && Object.defineProperty(target, key, r), r;
14886};
14887
14888
14889
14890
14891
14892
14893var AgList = /** @class */ (function (_super) {
14894 __extends(AgList, _super);
14895 function AgList(cssIdentifier) {
14896 if (cssIdentifier === void 0) { cssIdentifier = 'default'; }
14897 var _this = _super.call(this, /* html */ "<div class=\"ag-list ag-" + cssIdentifier + "-list\" role=\"listbox\"></div>") || this;
14898 _this.cssIdentifier = cssIdentifier;
14899 _this.options = [];
14900 _this.itemEls = [];
14901 return _this;
14902 }
14903 AgList.prototype.init = function () {
14904 this.addManagedListener(this.getGui(), 'keydown', this.handleKeyDown.bind(this));
14905 };
14906 AgList.prototype.handleKeyDown = function (e) {
14907 var key = e.key;
14908 switch (key) {
14909 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].ENTER:
14910 if (!this.highlightedEl) {
14911 this.setValue(this.getValue());
14912 }
14913 else {
14914 var pos = this.itemEls.indexOf(this.highlightedEl);
14915 this.setValueByIndex(pos);
14916 }
14917 break;
14918 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].DOWN:
14919 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].UP:
14920 var isDown = key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].DOWN;
14921 var itemToHighlight = void 0;
14922 e.preventDefault();
14923 if (!this.highlightedEl) {
14924 itemToHighlight = this.itemEls[isDown ? 0 : this.itemEls.length - 1];
14925 }
14926 else {
14927 var currentIdx = this.itemEls.indexOf(this.highlightedEl);
14928 var nextPos = currentIdx + (isDown ? 1 : -1);
14929 nextPos = Math.min(Math.max(nextPos, 0), this.itemEls.length - 1);
14930 itemToHighlight = this.itemEls[nextPos];
14931 }
14932 this.highlightItem(itemToHighlight);
14933 break;
14934 }
14935 };
14936 AgList.prototype.addOptions = function (listOptions) {
14937 var _this = this;
14938 listOptions.forEach(function (listOption) { return _this.addOption(listOption); });
14939 return this;
14940 };
14941 AgList.prototype.addOption = function (listOption) {
14942 var value = listOption.value, text = listOption.text;
14943 var sanitisedText = Object(_utils_string__WEBPACK_IMPORTED_MODULE_3__["escapeString"])(text || value);
14944 this.options.push({ value: value, text: sanitisedText });
14945 this.renderOption(value, sanitisedText);
14946 this.updateIndices();
14947 return this;
14948 };
14949 AgList.prototype.updateIndices = function () {
14950 var options = this.getGui().querySelectorAll('.ag-list-item');
14951 options.forEach(function (option, idx) {
14952 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_5__["setAriaPosInSet"])(option, idx + 1);
14953 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_5__["setAriaSetSize"])(option, options.length);
14954 });
14955 };
14956 AgList.prototype.renderOption = function (value, text) {
14957 var _this = this;
14958 var itemEl = document.createElement('div');
14959 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_5__["setAriaRole"])(itemEl, 'option');
14960 itemEl.classList.add('ag-list-item', "ag-" + this.cssIdentifier + "-list-item");
14961 itemEl.innerHTML = "<span>" + text + "</span>";
14962 itemEl.tabIndex = -1;
14963 this.itemEls.push(itemEl);
14964 this.addManagedListener(itemEl, 'mouseover', function () { return _this.highlightItem(itemEl); });
14965 this.addManagedListener(itemEl, 'mouseleave', function () { return _this.clearHighlighted(); });
14966 this.addManagedListener(itemEl, 'click', function () { return _this.setValue(value); });
14967 this.getGui().appendChild(itemEl);
14968 };
14969 AgList.prototype.setValue = function (value, silent) {
14970 if (this.value === value) {
14971 this.fireItemSelected();
14972 return this;
14973 }
14974 if (value == null) {
14975 this.reset();
14976 return this;
14977 }
14978 var idx = this.options.findIndex(function (option) { return option.value === value; });
14979 if (idx !== -1) {
14980 var option = this.options[idx];
14981 this.value = option.value;
14982 this.displayValue = option.text != null ? option.text : option.value;
14983 this.highlightItem(this.itemEls[idx]);
14984 if (!silent) {
14985 this.fireChangeEvent();
14986 }
14987 }
14988 return this;
14989 };
14990 AgList.prototype.setValueByIndex = function (idx) {
14991 return this.setValue(this.options[idx].value);
14992 };
14993 AgList.prototype.getValue = function () {
14994 return this.value;
14995 };
14996 AgList.prototype.getDisplayValue = function () {
14997 return this.displayValue;
14998 };
14999 AgList.prototype.refreshHighlighted = function () {
15000 var _this = this;
15001 this.clearHighlighted();
15002 var idx = this.options.findIndex(function (option) { return option.value === _this.value; });
15003 if (idx !== -1) {
15004 this.highlightItem(this.itemEls[idx]);
15005 }
15006 };
15007 AgList.prototype.reset = function () {
15008 this.value = null;
15009 this.displayValue = null;
15010 this.clearHighlighted();
15011 this.fireChangeEvent();
15012 };
15013 AgList.prototype.highlightItem = function (el) {
15014 if (!el.offsetParent) {
15015 return;
15016 }
15017 this.clearHighlighted();
15018 this.highlightedEl = el;
15019 this.highlightedEl.classList.add(AgList.ACTIVE_CLASS);
15020 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_5__["setAriaSelected"])(this.highlightedEl, true);
15021 this.highlightedEl.focus();
15022 };
15023 AgList.prototype.clearHighlighted = function () {
15024 if (!this.highlightedEl || !this.highlightedEl.offsetParent) {
15025 return;
15026 }
15027 this.highlightedEl.classList.remove(AgList.ACTIVE_CLASS);
15028 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_5__["setAriaSelected"])(this.highlightedEl, false);
15029 this.highlightedEl = null;
15030 };
15031 AgList.prototype.fireChangeEvent = function () {
15032 this.dispatchEvent({ type: _agAbstractField__WEBPACK_IMPORTED_MODULE_0__["AgAbstractField"].EVENT_CHANGED });
15033 this.fireItemSelected();
15034 };
15035 AgList.prototype.fireItemSelected = function () {
15036 this.dispatchEvent({ type: AgList.EVENT_ITEM_SELECTED });
15037 };
15038 AgList.EVENT_ITEM_SELECTED = 'selectedItem';
15039 AgList.ACTIVE_CLASS = 'ag-active-item';
15040 __decorate([
15041 _context_context__WEBPACK_IMPORTED_MODULE_2__["PostConstruct"]
15042 ], AgList.prototype, "init", null);
15043 return AgList;
15044}(_component__WEBPACK_IMPORTED_MODULE_1__["Component"]));
15045
15046
15047
15048
15049
15050/***/ }),
15051/* 71 */
15052/***/ (function(module, __webpack_exports__, __webpack_require__) {
15053
15054"use strict";
15055__webpack_require__.r(__webpack_exports__);
15056/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgAbstractInputField", function() { return AgAbstractInputField; });
15057/* harmony import */ var _componentAnnotations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(57);
15058/* harmony import */ var _agAbstractField__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(67);
15059/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
15060/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44);
15061/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
15062/**
15063 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
15064 * @version v27.3.0
15065 * @link https://www.ag-grid.com/
15066 * @license MIT
15067 */
15068var __extends = (undefined && undefined.__extends) || (function () {
15069 var extendStatics = function (d, b) {
15070 extendStatics = Object.setPrototypeOf ||
15071 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
15072 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
15073 return extendStatics(d, b);
15074 };
15075 return function (d, b) {
15076 extendStatics(d, b);
15077 function __() { this.constructor = d; }
15078 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15079 };
15080})();
15081var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
15082 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
15083 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
15084 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
15085 return c > 3 && r && Object.defineProperty(target, key, r), r;
15086};
15087
15088
15089
15090
15091
15092var AgAbstractInputField = /** @class */ (function (_super) {
15093 __extends(AgAbstractInputField, _super);
15094 function AgAbstractInputField(config, className, inputType, displayFieldTag) {
15095 if (inputType === void 0) { inputType = 'text'; }
15096 if (displayFieldTag === void 0) { displayFieldTag = 'input'; }
15097 var _this = _super.call(this, config, /* html */ "\n <div role=\"presentation\">\n <div ref=\"eLabel\" class=\"ag-input-field-label\"></div>\n <div ref=\"eWrapper\" class=\"ag-wrapper ag-input-wrapper\" role=\"presentation\">\n <" + displayFieldTag + " ref=\"eInput\" class=\"ag-input-field-input\"></" + displayFieldTag + ">\n </div>\n </div>", className) || this;
15098 _this.inputType = inputType;
15099 _this.displayFieldTag = displayFieldTag;
15100 return _this;
15101 }
15102 AgAbstractInputField.prototype.postConstruct = function () {
15103 _super.prototype.postConstruct.call(this);
15104 this.setInputType();
15105 this.eLabel.classList.add(this.className + "-label");
15106 this.eWrapper.classList.add(this.className + "-input-wrapper");
15107 this.eInput.classList.add(this.className + "-input");
15108 this.addCssClass('ag-input-field');
15109 this.eInput.id = this.eInput.id || "ag-" + this.getCompId() + "-input";
15110 var _a = this.config, width = _a.width, value = _a.value;
15111 if (width != null) {
15112 this.setWidth(width);
15113 }
15114 if (value != null) {
15115 this.setValue(value);
15116 }
15117 this.addInputListeners();
15118 };
15119 AgAbstractInputField.prototype.refreshLabel = function () {
15120 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_4__["exists"])(this.getLabel())) {
15121 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_3__["setAriaLabelledBy"])(this.eInput, this.getLabelId());
15122 }
15123 else {
15124 this.eInput.removeAttribute('aria-labelledby');
15125 }
15126 _super.prototype.refreshLabel.call(this);
15127 };
15128 AgAbstractInputField.prototype.addInputListeners = function () {
15129 var _this = this;
15130 this.addManagedListener(this.eInput, 'input', function (e) { return _this.setValue(e.target.value); });
15131 };
15132 AgAbstractInputField.prototype.setInputType = function () {
15133 if (this.displayFieldTag === 'input') {
15134 this.eInput.setAttribute('type', this.inputType);
15135 }
15136 };
15137 AgAbstractInputField.prototype.getInputElement = function () {
15138 return this.eInput;
15139 };
15140 AgAbstractInputField.prototype.setInputWidth = function (width) {
15141 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setElementWidth"])(this.eWrapper, width);
15142 return this;
15143 };
15144 AgAbstractInputField.prototype.setInputName = function (name) {
15145 this.getInputElement().setAttribute('name', name);
15146 return this;
15147 };
15148 AgAbstractInputField.prototype.getFocusableElement = function () {
15149 return this.eInput;
15150 };
15151 AgAbstractInputField.prototype.setMaxLength = function (length) {
15152 var eInput = this.eInput;
15153 eInput.maxLength = length;
15154 return this;
15155 };
15156 AgAbstractInputField.prototype.setInputPlaceholder = function (placeholder) {
15157 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["addOrRemoveAttribute"])(this.eInput, 'placeholder', placeholder);
15158 return this;
15159 };
15160 AgAbstractInputField.prototype.setInputAriaLabel = function (label) {
15161 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_3__["setAriaLabel"])(this.eInput, label);
15162 return this;
15163 };
15164 AgAbstractInputField.prototype.setDisabled = function (disabled) {
15165 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setDisabled"])(this.eInput, disabled);
15166 return _super.prototype.setDisabled.call(this, disabled);
15167 };
15168 __decorate([
15169 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eLabel')
15170 ], AgAbstractInputField.prototype, "eLabel", void 0);
15171 __decorate([
15172 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eWrapper')
15173 ], AgAbstractInputField.prototype, "eWrapper", void 0);
15174 __decorate([
15175 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eInput')
15176 ], AgAbstractInputField.prototype, "eInput", void 0);
15177 return AgAbstractInputField;
15178}(_agAbstractField__WEBPACK_IMPORTED_MODULE_1__["AgAbstractField"]));
15179
15180
15181
15182
15183
15184/***/ }),
15185/* 72 */
15186/***/ (function(module, __webpack_exports__, __webpack_require__) {
15187
15188"use strict";
15189__webpack_require__.r(__webpack_exports__);
15190/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ScalarFilter", function() { return ScalarFilter; });
15191/* harmony import */ var _simpleFilter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(60);
15192/**
15193 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
15194 * @version v27.3.0
15195 * @link https://www.ag-grid.com/
15196 * @license MIT
15197 */
15198var __extends = (undefined && undefined.__extends) || (function () {
15199 var extendStatics = function (d, b) {
15200 extendStatics = Object.setPrototypeOf ||
15201 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
15202 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
15203 return extendStatics(d, b);
15204 };
15205 return function (d, b) {
15206 extendStatics(d, b);
15207 function __() { this.constructor = d; }
15208 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15209 };
15210})();
15211
15212var ScalarFilter = /** @class */ (function (_super) {
15213 __extends(ScalarFilter, _super);
15214 function ScalarFilter() {
15215 return _super !== null && _super.apply(this, arguments) || this;
15216 }
15217 ScalarFilter.prototype.setParams = function (params) {
15218 _super.prototype.setParams.call(this, params);
15219 this.scalarFilterParams = params;
15220 };
15221 ScalarFilter.prototype.evaluateNullValue = function (filterType) {
15222 switch (filterType) {
15223 case ScalarFilter.EQUALS:
15224 case ScalarFilter.NOT_EQUAL:
15225 if (this.scalarFilterParams.includeBlanksInEquals) {
15226 return true;
15227 }
15228 break;
15229 case ScalarFilter.GREATER_THAN:
15230 case ScalarFilter.GREATER_THAN_OR_EQUAL:
15231 if (this.scalarFilterParams.includeBlanksInGreaterThan) {
15232 return true;
15233 }
15234 break;
15235 case ScalarFilter.LESS_THAN:
15236 case ScalarFilter.LESS_THAN_OR_EQUAL:
15237 if (this.scalarFilterParams.includeBlanksInLessThan) {
15238 return true;
15239 }
15240 break;
15241 case ScalarFilter.IN_RANGE:
15242 if (this.scalarFilterParams.includeBlanksInRange) {
15243 return true;
15244 }
15245 break;
15246 case ScalarFilter.BLANK:
15247 return true;
15248 case ScalarFilter.NOT_BLANK:
15249 return false;
15250 }
15251 return false;
15252 };
15253 ScalarFilter.prototype.evaluateNonNullValue = function (values, cellValue, filterModel) {
15254 var comparator = this.comparator();
15255 var compareResult = values[0] != null ? comparator(values[0], cellValue) : 0;
15256 switch (filterModel.type) {
15257 case ScalarFilter.EQUALS:
15258 return compareResult === 0;
15259 case ScalarFilter.NOT_EQUAL:
15260 return compareResult !== 0;
15261 case ScalarFilter.GREATER_THAN:
15262 return compareResult > 0;
15263 case ScalarFilter.GREATER_THAN_OR_EQUAL:
15264 return compareResult >= 0;
15265 case ScalarFilter.LESS_THAN:
15266 return compareResult < 0;
15267 case ScalarFilter.LESS_THAN_OR_EQUAL:
15268 return compareResult <= 0;
15269 case ScalarFilter.IN_RANGE: {
15270 var compareToResult = comparator(values[1], cellValue);
15271 return this.scalarFilterParams.inRangeInclusive ?
15272 compareResult >= 0 && compareToResult <= 0 :
15273 compareResult > 0 && compareToResult < 0;
15274 }
15275 case ScalarFilter.BLANK:
15276 return this.isBlank(cellValue);
15277 case ScalarFilter.NOT_BLANK:
15278 return !this.isBlank(cellValue);
15279 default:
15280 console.warn('AG Grid: Unexpected type of filter "' + filterModel.type + '", it looks like the filter was configured with incorrect Filter Options');
15281 return true;
15282 }
15283 };
15284 return ScalarFilter;
15285}(_simpleFilter__WEBPACK_IMPORTED_MODULE_0__["SimpleFilter"]));
15286
15287
15288
15289
15290
15291/***/ }),
15292/* 73 */
15293/***/ (function(module, __webpack_exports__, __webpack_require__) {
15294
15295"use strict";
15296__webpack_require__.r(__webpack_exports__);
15297/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DateFloatingFilter", function() { return DateFloatingFilter; });
15298/* harmony import */ var _dateFilter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(58);
15299/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
15300/* harmony import */ var _dateCompWrapper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(59);
15301/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(57);
15302/* harmony import */ var _simpleFilter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(60);
15303/* harmony import */ var _floating_provided_simpleFloatingFilter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(74);
15304/* harmony import */ var _providedFilter__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(62);
15305/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(42);
15306/* harmony import */ var _utils_date__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(45);
15307/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(14);
15308/**
15309 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
15310 * @version v27.3.0
15311 * @link https://www.ag-grid.com/
15312 * @license MIT
15313 */
15314var __extends = (undefined && undefined.__extends) || (function () {
15315 var extendStatics = function (d, b) {
15316 extendStatics = Object.setPrototypeOf ||
15317 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
15318 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
15319 return extendStatics(d, b);
15320 };
15321 return function (d, b) {
15322 extendStatics(d, b);
15323 function __() { this.constructor = d; }
15324 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15325 };
15326})();
15327var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
15328 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
15329 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
15330 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
15331 return c > 3 && r && Object.defineProperty(target, key, r), r;
15332};
15333
15334
15335
15336
15337
15338
15339
15340
15341
15342
15343var DateFloatingFilter = /** @class */ (function (_super) {
15344 __extends(DateFloatingFilter, _super);
15345 function DateFloatingFilter() {
15346 return _super.call(this, /* html */ "\n <div class=\"ag-floating-filter-input\" role=\"presentation\">\n <ag-input-text-field ref=\"eReadOnlyText\"></ag-input-text-field>\n <div ref=\"eDateWrapper\" style=\"display: flex;\"></div>\n </div>") || this;
15347 }
15348 DateFloatingFilter.prototype.getDefaultFilterOptions = function () {
15349 return _dateFilter__WEBPACK_IMPORTED_MODULE_0__["DateFilter"].DEFAULT_FILTER_OPTIONS;
15350 };
15351 DateFloatingFilter.prototype.conditionToString = function (condition, options) {
15352 var type = condition.type;
15353 var numberOfInputs = (options || {}).numberOfInputs;
15354 var isRange = type == _simpleFilter__WEBPACK_IMPORTED_MODULE_4__["SimpleFilter"].IN_RANGE || numberOfInputs === 2;
15355 var dateFrom = Object(_utils_date__WEBPACK_IMPORTED_MODULE_8__["parseDateTimeFromString"])(condition.dateFrom);
15356 var dateTo = Object(_utils_date__WEBPACK_IMPORTED_MODULE_8__["parseDateTimeFromString"])(condition.dateTo);
15357 if (isRange) {
15358 return Object(_utils_date__WEBPACK_IMPORTED_MODULE_8__["serialiseDate"])(dateFrom, false) + "-" + Object(_utils_date__WEBPACK_IMPORTED_MODULE_8__["serialiseDate"])(dateTo, false);
15359 }
15360 if (dateFrom != null) {
15361 return "" + Object(_utils_date__WEBPACK_IMPORTED_MODULE_8__["serialiseDate"])(dateFrom, false);
15362 }
15363 // cater for when the type doesn't need a value
15364 return "" + type;
15365 };
15366 DateFloatingFilter.prototype.init = function (params) {
15367 _super.prototype.init.call(this, params);
15368 this.params = params;
15369 this.createDateComponent();
15370 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
15371 this.eReadOnlyText
15372 .setDisabled(true)
15373 .setInputAriaLabel(translate('ariaDateFilterInput', 'Date Filter Input'));
15374 };
15375 DateFloatingFilter.prototype.setEditable = function (editable) {
15376 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_7__["setDisplayed"])(this.eDateWrapper, editable);
15377 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_7__["setDisplayed"])(this.eReadOnlyText.getGui(), !editable);
15378 };
15379 DateFloatingFilter.prototype.onParentModelChanged = function (model, event) {
15380 // We don't want to update the floating filter if the floating filter caused the change,
15381 // because the UI is already in sync. if we didn't do this, the UI would behave strangely
15382 // as it would be updating as the user is typing
15383 if (this.isEventFromFloatingFilter(event)) {
15384 return;
15385 }
15386 _super.prototype.setLastTypeFromModel.call(this, model);
15387 var allowEditing = !this.isReadOnly() &&
15388 this.canWeEditAfterModelFromParentFilter(model);
15389 this.setEditable(allowEditing);
15390 if (allowEditing) {
15391 if (model) {
15392 var dateModel = model;
15393 this.dateComp.setDate(Object(_utils_date__WEBPACK_IMPORTED_MODULE_8__["parseDateTimeFromString"])(dateModel.dateFrom));
15394 }
15395 else {
15396 this.dateComp.setDate(null);
15397 }
15398 this.eReadOnlyText.setValue('');
15399 }
15400 else {
15401 this.eReadOnlyText.setValue(this.getTextFromModel(model));
15402 this.dateComp.setDate(null);
15403 }
15404 };
15405 DateFloatingFilter.prototype.onDateChanged = function () {
15406 var _this = this;
15407 var filterValueDate = this.dateComp.getDate();
15408 var filterValueText = Object(_utils_date__WEBPACK_IMPORTED_MODULE_8__["serialiseDate"])(filterValueDate);
15409 this.params.parentFilterInstance(function (filterInstance) {
15410 if (filterInstance) {
15411 var date = Object(_utils_date__WEBPACK_IMPORTED_MODULE_8__["parseDateTimeFromString"])(filterValueText);
15412 filterInstance.onFloatingFilterChanged(_this.getLastType() || null, date);
15413 }
15414 });
15415 };
15416 DateFloatingFilter.prototype.createDateComponent = function () {
15417 var _this = this;
15418 var debounceMs = _providedFilter__WEBPACK_IMPORTED_MODULE_6__["ProvidedFilter"].getDebounceMs(this.params.filterParams, this.getDefaultDebounceMs());
15419 var dateComponentParams = {
15420 onDateChanged: Object(_utils_function__WEBPACK_IMPORTED_MODULE_9__["debounce"])(this.onDateChanged.bind(this), debounceMs),
15421 filterParams: this.params.column.getColDef().filterParams
15422 };
15423 this.dateComp = new _dateCompWrapper__WEBPACK_IMPORTED_MODULE_2__["DateCompWrapper"](this.getContext(), this.userComponentFactory, dateComponentParams, this.eDateWrapper);
15424 this.addDestroyFunc(function () { return _this.dateComp.destroy(); });
15425 };
15426 __decorate([
15427 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('userComponentFactory')
15428 ], DateFloatingFilter.prototype, "userComponentFactory", void 0);
15429 __decorate([
15430 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_3__["RefSelector"])('eReadOnlyText')
15431 ], DateFloatingFilter.prototype, "eReadOnlyText", void 0);
15432 __decorate([
15433 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_3__["RefSelector"])('eDateWrapper')
15434 ], DateFloatingFilter.prototype, "eDateWrapper", void 0);
15435 return DateFloatingFilter;
15436}(_floating_provided_simpleFloatingFilter__WEBPACK_IMPORTED_MODULE_5__["SimpleFloatingFilter"]));
15437
15438
15439
15440
15441
15442/***/ }),
15443/* 74 */
15444/***/ (function(module, __webpack_exports__, __webpack_require__) {
15445
15446"use strict";
15447__webpack_require__.r(__webpack_exports__);
15448/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SimpleFloatingFilter", function() { return SimpleFloatingFilter; });
15449/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
15450/* harmony import */ var _provided_simpleFilter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(60);
15451/* harmony import */ var _provided_optionsFactory__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(61);
15452/**
15453 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
15454 * @version v27.3.0
15455 * @link https://www.ag-grid.com/
15456 * @license MIT
15457 */
15458var __extends = (undefined && undefined.__extends) || (function () {
15459 var extendStatics = function (d, b) {
15460 extendStatics = Object.setPrototypeOf ||
15461 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
15462 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
15463 return extendStatics(d, b);
15464 };
15465 return function (d, b) {
15466 extendStatics(d, b);
15467 function __() { this.constructor = d; }
15468 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15469 };
15470})();
15471
15472
15473
15474var SimpleFloatingFilter = /** @class */ (function (_super) {
15475 __extends(SimpleFloatingFilter, _super);
15476 function SimpleFloatingFilter() {
15477 return _super !== null && _super.apply(this, arguments) || this;
15478 }
15479 SimpleFloatingFilter.prototype.getDefaultDebounceMs = function () {
15480 return 0;
15481 };
15482 // this is a user component, and IComponent has "public destroy()" as part of the interface.
15483 // so we need to override destroy() just to make the method public.
15484 SimpleFloatingFilter.prototype.destroy = function () {
15485 _super.prototype.destroy.call(this);
15486 };
15487 // used by:
15488 // 1) NumberFloatingFilter & TextFloatingFilter: Always, for both when editable and read only.
15489 // 2) DateFloatingFilter: Only when read only (as we show text rather than a date picker when read only)
15490 SimpleFloatingFilter.prototype.getTextFromModel = function (model) {
15491 if (!model) {
15492 return null;
15493 }
15494 var isCombined = model.operator != null;
15495 if (isCombined) {
15496 var combinedModel = model;
15497 var _a = combinedModel || {}, condition1 = _a.condition1, condition2 = _a.condition2;
15498 var customOption1 = this.optionsFactory.getCustomOption(condition1.type);
15499 var customOption2 = this.optionsFactory.getCustomOption(condition2.type);
15500 return [
15501 this.conditionToString(condition1, customOption1),
15502 combinedModel.operator,
15503 this.conditionToString(condition2, customOption2),
15504 ].join(' ');
15505 }
15506 else {
15507 var condition = model;
15508 var customOption = this.optionsFactory.getCustomOption(condition.type);
15509 // For custom filter options we display the Name of the filter instead
15510 // of displaying the `from` value, as it wouldn't be relevant
15511 var _b = customOption || {}, displayKey = _b.displayKey, displayName = _b.displayName, numberOfInputs = _b.numberOfInputs;
15512 if (displayKey && displayName && numberOfInputs === 0) {
15513 this.gridOptionsWrapper.getLocaleTextFunc()(displayKey, displayName);
15514 return displayName;
15515 }
15516 return this.conditionToString(condition, customOption);
15517 }
15518 };
15519 SimpleFloatingFilter.prototype.isEventFromFloatingFilter = function (event) {
15520 return event && event.afterFloatingFilter;
15521 };
15522 SimpleFloatingFilter.prototype.getLastType = function () {
15523 return this.lastType;
15524 };
15525 SimpleFloatingFilter.prototype.isReadOnly = function () {
15526 return this.readOnly;
15527 };
15528 SimpleFloatingFilter.prototype.setLastTypeFromModel = function (model) {
15529 // if no model provided by the parent filter use default
15530 if (!model) {
15531 this.lastType = this.optionsFactory.getDefaultOption();
15532 return;
15533 }
15534 var isCombined = model.operator;
15535 var condition;
15536 if (isCombined) {
15537 var combinedModel = model;
15538 condition = combinedModel.condition1;
15539 }
15540 else {
15541 condition = model;
15542 }
15543 this.lastType = condition.type;
15544 };
15545 SimpleFloatingFilter.prototype.canWeEditAfterModelFromParentFilter = function (model) {
15546 if (!model) {
15547 // if no model, then we can edit as long as the lastType is something we can edit, as this
15548 // is the type we will provide to the parent filter if the user decides to use the floating filter.
15549 return this.isTypeEditable(this.lastType);
15550 }
15551 // never allow editing if the filter is combined (ie has two parts)
15552 var isCombined = model.operator;
15553 if (isCombined) {
15554 return false;
15555 }
15556 var simpleModel = model;
15557 return this.isTypeEditable(simpleModel.type);
15558 };
15559 SimpleFloatingFilter.prototype.init = function (params) {
15560 this.optionsFactory = new _provided_optionsFactory__WEBPACK_IMPORTED_MODULE_2__["OptionsFactory"]();
15561 this.optionsFactory.init(params.filterParams, this.getDefaultFilterOptions());
15562 this.lastType = this.optionsFactory.getDefaultOption();
15563 // readOnly is a property of IProvidedFilterParams - we need to find a better (type-safe)
15564 // way to support reading this in the future.
15565 this.readOnly = !!params.filterParams.readOnly;
15566 // we are editable if:
15567 // 1) there is a type (user has configured filter wrong if not type)
15568 // AND
15569 // 2) the default type is not 'in range'
15570 var editable = this.isTypeEditable(this.lastType);
15571 this.setEditable(editable);
15572 };
15573 SimpleFloatingFilter.prototype.doesFilterHaveSingleInput = function (filterType) {
15574 var customFilterOption = this.optionsFactory.getCustomOption(filterType);
15575 var numberOfInputs = (customFilterOption || {}).numberOfInputs;
15576 return numberOfInputs == null || numberOfInputs == 1;
15577 };
15578 SimpleFloatingFilter.prototype.isTypeEditable = function (type) {
15579 var uneditableTypes = [
15580 _provided_simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].IN_RANGE, _provided_simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].EMPTY, _provided_simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].BLANK, _provided_simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].NOT_BLANK,
15581 ];
15582 return !!type &&
15583 !this.isReadOnly() &&
15584 this.doesFilterHaveSingleInput(type) &&
15585 uneditableTypes.indexOf(type) < 0;
15586 };
15587 return SimpleFloatingFilter;
15588}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
15589
15590
15591
15592
15593
15594/***/ }),
15595/* 75 */
15596/***/ (function(module, __webpack_exports__, __webpack_require__) {
15597
15598"use strict";
15599__webpack_require__.r(__webpack_exports__);
15600/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DefaultDateComponent", function() { return DefaultDateComponent; });
15601/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
15602/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
15603/* harmony import */ var _utils_date__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(45);
15604/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(43);
15605/**
15606 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
15607 * @version v27.3.0
15608 * @link https://www.ag-grid.com/
15609 * @license MIT
15610 */
15611var __extends = (undefined && undefined.__extends) || (function () {
15612 var extendStatics = function (d, b) {
15613 extendStatics = Object.setPrototypeOf ||
15614 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
15615 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
15616 return extendStatics(d, b);
15617 };
15618 return function (d, b) {
15619 extendStatics(d, b);
15620 function __() { this.constructor = d; }
15621 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15622 };
15623})();
15624var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
15625 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
15626 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
15627 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
15628 return c > 3 && r && Object.defineProperty(target, key, r), r;
15629};
15630
15631
15632
15633
15634var DefaultDateComponent = /** @class */ (function (_super) {
15635 __extends(DefaultDateComponent, _super);
15636 function DefaultDateComponent() {
15637 return _super.call(this, /* html */ "\n <div class=\"ag-filter-filter\">\n <ag-input-text-field class=\"ag-date-filter\" ref=\"eDateInput\"></ag-input-text-field>\n </div>") || this;
15638 }
15639 // this is a user component, and IComponent has "public destroy()" as part of the interface.
15640 // so we need to override destroy() just to make the method public.
15641 DefaultDateComponent.prototype.destroy = function () {
15642 _super.prototype.destroy.call(this);
15643 };
15644 DefaultDateComponent.prototype.init = function (params) {
15645 var _this = this;
15646 var eDocument = this.gridOptionsWrapper.getDocument();
15647 var inputElement = this.eDateInput.getInputElement();
15648 if (this.shouldUseBrowserDatePicker(params)) {
15649 inputElement.type = 'date';
15650 }
15651 // ensures that the input element is focussed when a clear button is clicked
15652 this.addManagedListener(inputElement, 'mousedown', function () {
15653 if (_this.eDateInput.isDisabled()) {
15654 return;
15655 }
15656 inputElement.focus();
15657 });
15658 this.addManagedListener(inputElement, 'input', function (e) {
15659 if (e.target !== eDocument.activeElement) {
15660 return;
15661 }
15662 if (_this.eDateInput.isDisabled()) {
15663 return;
15664 }
15665 params.onDateChanged();
15666 });
15667 var _a = params.filterParams || {}, minValidYear = _a.minValidYear, maxValidYear = _a.maxValidYear;
15668 if (minValidYear) {
15669 inputElement.min = minValidYear + "-01-01";
15670 }
15671 if (maxValidYear) {
15672 inputElement.max = maxValidYear + "-12-31";
15673 }
15674 };
15675 DefaultDateComponent.prototype.getDate = function () {
15676 return Object(_utils_date__WEBPACK_IMPORTED_MODULE_2__["parseDateTimeFromString"])(this.eDateInput.getValue());
15677 };
15678 DefaultDateComponent.prototype.setDate = function (date) {
15679 this.eDateInput.setValue(Object(_utils_date__WEBPACK_IMPORTED_MODULE_2__["serialiseDate"])(date, false));
15680 };
15681 DefaultDateComponent.prototype.setInputPlaceholder = function (placeholder) {
15682 this.eDateInput.setInputPlaceholder(placeholder);
15683 };
15684 DefaultDateComponent.prototype.setDisabled = function (disabled) {
15685 this.eDateInput.setDisabled(disabled);
15686 };
15687 DefaultDateComponent.prototype.afterGuiAttached = function (params) {
15688 if (!params || !params.suppressFocus) {
15689 this.eDateInput.getInputElement().focus();
15690 }
15691 };
15692 DefaultDateComponent.prototype.shouldUseBrowserDatePicker = function (params) {
15693 if (params.filterParams && params.filterParams.browserDatePicker != null) {
15694 return params.filterParams.browserDatePicker;
15695 }
15696 return Object(_utils_browser__WEBPACK_IMPORTED_MODULE_3__["isBrowserChrome"])() || Object(_utils_browser__WEBPACK_IMPORTED_MODULE_3__["isBrowserFirefox"])();
15697 };
15698 __decorate([
15699 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eDateInput')
15700 ], DefaultDateComponent.prototype, "eDateInput", void 0);
15701 return DefaultDateComponent;
15702}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
15703
15704
15705
15706
15707
15708/***/ }),
15709/* 76 */
15710/***/ (function(module, __webpack_exports__, __webpack_require__) {
15711
15712"use strict";
15713__webpack_require__.r(__webpack_exports__);
15714/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NumberFilter", function() { return NumberFilter; });
15715/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(57);
15716/* harmony import */ var _simpleFilter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(60);
15717/* harmony import */ var _scalarFilter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(72);
15718/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7);
15719/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(43);
15720/**
15721 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
15722 * @version v27.3.0
15723 * @link https://www.ag-grid.com/
15724 * @license MIT
15725 */
15726var __extends = (undefined && undefined.__extends) || (function () {
15727 var extendStatics = function (d, b) {
15728 extendStatics = Object.setPrototypeOf ||
15729 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
15730 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
15731 return extendStatics(d, b);
15732 };
15733 return function (d, b) {
15734 extendStatics(d, b);
15735 function __() { this.constructor = d; }
15736 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15737 };
15738})();
15739var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
15740 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
15741 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
15742 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
15743 return c > 3 && r && Object.defineProperty(target, key, r), r;
15744};
15745
15746
15747
15748
15749
15750var NumberFilter = /** @class */ (function (_super) {
15751 __extends(NumberFilter, _super);
15752 function NumberFilter() {
15753 return _super.call(this, 'numberFilter') || this;
15754 }
15755 NumberFilter.prototype.mapValuesFromModel = function (filterModel) {
15756 var _a = filterModel || {}, filter = _a.filter, filterTo = _a.filterTo, type = _a.type;
15757 return [
15758 filter == null ? null : filter,
15759 filterTo == null ? null : filterTo,
15760 ].slice(0, this.getNumberOfInputs(type));
15761 };
15762 NumberFilter.prototype.getDefaultDebounceMs = function () {
15763 return 500;
15764 };
15765 NumberFilter.prototype.comparator = function () {
15766 return function (left, right) {
15767 if (left === right) {
15768 return 0;
15769 }
15770 return left < right ? 1 : -1;
15771 };
15772 };
15773 NumberFilter.prototype.setParams = function (params) {
15774 this.numberFilterParams = params;
15775 var allowedCharPattern = this.getAllowedCharPattern();
15776 if (allowedCharPattern) {
15777 var config = { allowedCharPattern: allowedCharPattern };
15778 this.resetTemplate({
15779 'eValue-index0-1': config,
15780 'eValue-index1-1': config,
15781 'eValue-index0-2': config,
15782 'eValue-index1-2': config,
15783 });
15784 }
15785 _super.prototype.setParams.call(this, params);
15786 };
15787 NumberFilter.prototype.getDefaultFilterOptions = function () {
15788 return NumberFilter.DEFAULT_FILTER_OPTIONS;
15789 };
15790 NumberFilter.prototype.createValueTemplate = function (position) {
15791 var pos = position === _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["ConditionPosition"].One ? '1' : '2';
15792 var allowedCharPattern = this.getAllowedCharPattern();
15793 var agElementTag = allowedCharPattern ? 'ag-input-text-field' : 'ag-input-number-field';
15794 return /* html */ "\n <div class=\"ag-filter-body\" ref=\"eCondition" + pos + "Body\" role=\"presentation\">\n <" + agElementTag + " class=\"ag-filter-from ag-filter-filter\" ref=\"eValue-index0-" + pos + "\"></" + agElementTag + ">\n <" + agElementTag + " class=\"ag-filter-to ag-filter-filter\" ref=\"eValue-index1-" + pos + "\"></" + agElementTag + ">\n </div>";
15795 };
15796 NumberFilter.prototype.getValues = function (position) {
15797 var _this = this;
15798 var result = [];
15799 this.forEachInput(function (element, index, elPosition, numberOfInputs) {
15800 if (position === elPosition && index < numberOfInputs) {
15801 result.push(_this.stringToFloat(element.getValue()));
15802 }
15803 });
15804 return result;
15805 };
15806 NumberFilter.prototype.areSimpleModelsEqual = function (aSimple, bSimple) {
15807 return aSimple.filter === bSimple.filter
15808 && aSimple.filterTo === bSimple.filterTo
15809 && aSimple.type === bSimple.type;
15810 };
15811 NumberFilter.prototype.getFilterType = function () {
15812 return 'number';
15813 };
15814 NumberFilter.prototype.stringToFloat = function (value) {
15815 if (typeof value === 'number') {
15816 return value;
15817 }
15818 var filterText = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["makeNull"])(value);
15819 if (filterText != null && filterText.trim() === '') {
15820 filterText = null;
15821 }
15822 if (this.numberFilterParams.numberParser) {
15823 return this.numberFilterParams.numberParser(filterText);
15824 }
15825 return filterText == null || filterText.trim() === '-' ? null : parseFloat(filterText);
15826 };
15827 NumberFilter.prototype.createCondition = function (position) {
15828 var type = this.getConditionTypes()[position];
15829 var model = {
15830 filterType: this.getFilterType(),
15831 type: type
15832 };
15833 var values = this.getValues(position);
15834 if (values.length > 0) {
15835 model.filter = values[0];
15836 }
15837 if (values.length > 1) {
15838 model.filterTo = values[1];
15839 }
15840 return model;
15841 };
15842 NumberFilter.prototype.getInputs = function () {
15843 return [
15844 [this.eValueFrom1, this.eValueTo1],
15845 [this.eValueFrom2, this.eValueTo2],
15846 ];
15847 };
15848 NumberFilter.prototype.getAllowedCharPattern = function () {
15849 var allowedCharPattern = (this.numberFilterParams || {}).allowedCharPattern;
15850 if (allowedCharPattern) {
15851 return allowedCharPattern;
15852 }
15853 if (!Object(_utils_browser__WEBPACK_IMPORTED_MODULE_4__["isBrowserChrome"])() && !Object(_utils_browser__WEBPACK_IMPORTED_MODULE_4__["isBrowserEdge"])()) {
15854 // only Chrome and Edge support the HTML5 number field, so for other browsers we provide an equivalent
15855 // constraint instead
15856 return '\\d\\-\\.';
15857 }
15858 return null;
15859 };
15860 NumberFilter.DEFAULT_FILTER_OPTIONS = [
15861 _scalarFilter__WEBPACK_IMPORTED_MODULE_2__["ScalarFilter"].EQUALS,
15862 _scalarFilter__WEBPACK_IMPORTED_MODULE_2__["ScalarFilter"].NOT_EQUAL,
15863 _scalarFilter__WEBPACK_IMPORTED_MODULE_2__["ScalarFilter"].LESS_THAN,
15864 _scalarFilter__WEBPACK_IMPORTED_MODULE_2__["ScalarFilter"].LESS_THAN_OR_EQUAL,
15865 _scalarFilter__WEBPACK_IMPORTED_MODULE_2__["ScalarFilter"].GREATER_THAN,
15866 _scalarFilter__WEBPACK_IMPORTED_MODULE_2__["ScalarFilter"].GREATER_THAN_OR_EQUAL,
15867 _scalarFilter__WEBPACK_IMPORTED_MODULE_2__["ScalarFilter"].IN_RANGE,
15868 _scalarFilter__WEBPACK_IMPORTED_MODULE_2__["ScalarFilter"].BLANK,
15869 _scalarFilter__WEBPACK_IMPORTED_MODULE_2__["ScalarFilter"].NOT_BLANK,
15870 ];
15871 __decorate([
15872 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eValue-index0-1')
15873 ], NumberFilter.prototype, "eValueFrom1", void 0);
15874 __decorate([
15875 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eValue-index1-1')
15876 ], NumberFilter.prototype, "eValueTo1", void 0);
15877 __decorate([
15878 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eValue-index0-2')
15879 ], NumberFilter.prototype, "eValueFrom2", void 0);
15880 __decorate([
15881 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eValue-index1-2')
15882 ], NumberFilter.prototype, "eValueTo2", void 0);
15883 return NumberFilter;
15884}(_scalarFilter__WEBPACK_IMPORTED_MODULE_2__["ScalarFilter"]));
15885
15886
15887
15888
15889
15890/***/ }),
15891/* 77 */
15892/***/ (function(module, __webpack_exports__, __webpack_require__) {
15893
15894"use strict";
15895__webpack_require__.r(__webpack_exports__);
15896/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NumberFloatingFilter", function() { return NumberFloatingFilter; });
15897/* harmony import */ var _numberFilter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(76);
15898/* harmony import */ var _floating_provided_textInputFloatingFilter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(78);
15899/**
15900 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
15901 * @version v27.3.0
15902 * @link https://www.ag-grid.com/
15903 * @license MIT
15904 */
15905var __extends = (undefined && undefined.__extends) || (function () {
15906 var extendStatics = function (d, b) {
15907 extendStatics = Object.setPrototypeOf ||
15908 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
15909 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
15910 return extendStatics(d, b);
15911 };
15912 return function (d, b) {
15913 extendStatics(d, b);
15914 function __() { this.constructor = d; }
15915 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15916 };
15917})();
15918
15919
15920var NumberFloatingFilter = /** @class */ (function (_super) {
15921 __extends(NumberFloatingFilter, _super);
15922 function NumberFloatingFilter() {
15923 return _super !== null && _super.apply(this, arguments) || this;
15924 }
15925 NumberFloatingFilter.prototype.getDefaultFilterOptions = function () {
15926 return _numberFilter__WEBPACK_IMPORTED_MODULE_0__["NumberFilter"].DEFAULT_FILTER_OPTIONS;
15927 };
15928 return NumberFloatingFilter;
15929}(_floating_provided_textInputFloatingFilter__WEBPACK_IMPORTED_MODULE_1__["TextInputFloatingFilter"]));
15930
15931
15932
15933
15934
15935/***/ }),
15936/* 78 */
15937/***/ (function(module, __webpack_exports__, __webpack_require__) {
15938
15939"use strict";
15940__webpack_require__.r(__webpack_exports__);
15941/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextInputFloatingFilter", function() { return TextInputFloatingFilter; });
15942/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(57);
15943/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(14);
15944/* harmony import */ var _provided_providedFilter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(62);
15945/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12);
15946/* harmony import */ var _simpleFloatingFilter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(74);
15947/* harmony import */ var _provided_simpleFilter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(60);
15948/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(65);
15949/* harmony import */ var _provided_text_textFilter__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(79);
15950/**
15951 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
15952 * @version v27.3.0
15953 * @link https://www.ag-grid.com/
15954 * @license MIT
15955 */
15956var __extends = (undefined && undefined.__extends) || (function () {
15957 var extendStatics = function (d, b) {
15958 extendStatics = Object.setPrototypeOf ||
15959 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
15960 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
15961 return extendStatics(d, b);
15962 };
15963 return function (d, b) {
15964 extendStatics(d, b);
15965 function __() { this.constructor = d; }
15966 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15967 };
15968})();
15969var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
15970 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
15971 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
15972 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
15973 return c > 3 && r && Object.defineProperty(target, key, r), r;
15974};
15975
15976
15977
15978
15979
15980
15981
15982
15983var TextInputFloatingFilter = /** @class */ (function (_super) {
15984 __extends(TextInputFloatingFilter, _super);
15985 function TextInputFloatingFilter() {
15986 return _super !== null && _super.apply(this, arguments) || this;
15987 }
15988 TextInputFloatingFilter.prototype.postConstruct = function () {
15989 this.resetTemplate();
15990 };
15991 TextInputFloatingFilter.prototype.resetTemplate = function (paramsMap) {
15992 this.setTemplate(/* html */ "\n <div class=\"ag-floating-filter-input\" role=\"presentation\">\n <ag-input-text-field ref=\"eFloatingFilterInput\"></ag-input-text-field>\n </div>\n ", paramsMap);
15993 };
15994 TextInputFloatingFilter.prototype.getDefaultDebounceMs = function () {
15995 return 500;
15996 };
15997 TextInputFloatingFilter.prototype.onParentModelChanged = function (model, event) {
15998 if (this.isEventFromFloatingFilter(event)) {
15999 // if the floating filter triggered the change, it is already in sync
16000 return;
16001 }
16002 this.setLastTypeFromModel(model);
16003 this.eFloatingFilterInput.setValue(this.getTextFromModel(model));
16004 this.setEditable(this.canWeEditAfterModelFromParentFilter(model));
16005 };
16006 TextInputFloatingFilter.prototype.init = function (params) {
16007 _super.prototype.init.call(this, params);
16008 this.params = params;
16009 this.applyActive = _provided_providedFilter__WEBPACK_IMPORTED_MODULE_2__["ProvidedFilter"].isUseApplyButton(this.params.filterParams);
16010 var allowedCharPattern = this.params.filterParams.allowedCharPattern;
16011 if (allowedCharPattern != null) {
16012 this.resetTemplate({ eFloatingFilterInput: { allowedCharPattern: allowedCharPattern } });
16013 }
16014 if (!this.isReadOnly()) {
16015 var debounceMs = _provided_providedFilter__WEBPACK_IMPORTED_MODULE_2__["ProvidedFilter"].getDebounceMs(this.params.filterParams, this.getDefaultDebounceMs());
16016 var toDebounce = Object(_utils_function__WEBPACK_IMPORTED_MODULE_1__["debounce"])(this.syncUpWithParentFilter.bind(this), debounceMs);
16017 var filterGui = this.eFloatingFilterInput.getGui();
16018 this.addManagedListener(filterGui, 'input', toDebounce);
16019 this.addManagedListener(filterGui, 'keypress', toDebounce);
16020 this.addManagedListener(filterGui, 'keydown', toDebounce);
16021 }
16022 var columnDef = params.column.getDefinition();
16023 if (this.isReadOnly() || (columnDef.filterParams &&
16024 columnDef.filterParams.filterOptions &&
16025 columnDef.filterParams.filterOptions.length === 1 &&
16026 columnDef.filterParams.filterOptions[0] === 'inRange')) {
16027 this.eFloatingFilterInput.setDisabled(true);
16028 }
16029 var displayName = this.columnModel.getDisplayNameForColumn(params.column, 'header', true);
16030 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
16031 this.eFloatingFilterInput.setInputAriaLabel(displayName + " " + translate('ariaFilterInput', 'Filter Input'));
16032 };
16033 TextInputFloatingFilter.prototype.syncUpWithParentFilter = function (e) {
16034 var _this = this;
16035 var enterKeyPressed = e.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_6__["KeyCode"].ENTER;
16036 if (this.applyActive && !enterKeyPressed) {
16037 return;
16038 }
16039 var value = this.eFloatingFilterInput.getValue();
16040 if (this.params.filterParams.trimInput) {
16041 value = _provided_text_textFilter__WEBPACK_IMPORTED_MODULE_7__["TextFilter"].trimInput(value);
16042 this.eFloatingFilterInput.setValue(value, true); // ensure visible value is trimmed
16043 }
16044 this.params.parentFilterInstance(function (filterInstance) {
16045 if (filterInstance) {
16046 filterInstance.onFloatingFilterChanged(_this.getLastType() || null, value || null);
16047 }
16048 });
16049 };
16050 TextInputFloatingFilter.prototype.conditionToString = function (condition, options) {
16051 var numberOfInputs = (options || {}).numberOfInputs;
16052 var isRange = condition.type == _provided_simpleFilter__WEBPACK_IMPORTED_MODULE_5__["SimpleFilter"].IN_RANGE || numberOfInputs === 2;
16053 if (isRange) {
16054 return condition.filter + "-" + condition.filterTo;
16055 }
16056 // cater for when the type doesn't need a value
16057 if (condition.filter != null) {
16058 return "" + condition.filter;
16059 }
16060 return "" + condition.type;
16061 };
16062 TextInputFloatingFilter.prototype.setEditable = function (editable) {
16063 this.eFloatingFilterInput.setDisabled(!editable);
16064 };
16065 __decorate([
16066 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Autowired"])('columnModel')
16067 ], TextInputFloatingFilter.prototype, "columnModel", void 0);
16068 __decorate([
16069 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eFloatingFilterInput')
16070 ], TextInputFloatingFilter.prototype, "eFloatingFilterInput", void 0);
16071 __decorate([
16072 _context_context__WEBPACK_IMPORTED_MODULE_3__["PostConstruct"]
16073 ], TextInputFloatingFilter.prototype, "postConstruct", null);
16074 return TextInputFloatingFilter;
16075}(_simpleFloatingFilter__WEBPACK_IMPORTED_MODULE_4__["SimpleFloatingFilter"]));
16076
16077
16078
16079
16080
16081/***/ }),
16082/* 79 */
16083/***/ (function(module, __webpack_exports__, __webpack_require__) {
16084
16085"use strict";
16086__webpack_require__.r(__webpack_exports__);
16087/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextFilter", function() { return TextFilter; });
16088/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(57);
16089/* harmony import */ var _simpleFilter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(60);
16090/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
16091/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(37);
16092/**
16093 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
16094 * @version v27.3.0
16095 * @link https://www.ag-grid.com/
16096 * @license MIT
16097 */
16098var __extends = (undefined && undefined.__extends) || (function () {
16099 var extendStatics = function (d, b) {
16100 extendStatics = Object.setPrototypeOf ||
16101 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
16102 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
16103 return extendStatics(d, b);
16104 };
16105 return function (d, b) {
16106 extendStatics(d, b);
16107 function __() { this.constructor = d; }
16108 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
16109 };
16110})();
16111var __assign = (undefined && undefined.__assign) || function () {
16112 __assign = Object.assign || function(t) {
16113 for (var s, i = 1, n = arguments.length; i < n; i++) {
16114 s = arguments[i];
16115 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
16116 t[p] = s[p];
16117 }
16118 return t;
16119 };
16120 return __assign.apply(this, arguments);
16121};
16122var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
16123 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16124 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
16125 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
16126 return c > 3 && r && Object.defineProperty(target, key, r), r;
16127};
16128
16129
16130
16131
16132var TextFilter = /** @class */ (function (_super) {
16133 __extends(TextFilter, _super);
16134 function TextFilter() {
16135 return _super.call(this, 'textFilter') || this;
16136 }
16137 TextFilter.trimInput = function (value) {
16138 var trimmedInput = value && value.trim();
16139 // trim the input, unless it is all whitespace (this is consistent with Excel behaviour)
16140 return trimmedInput === '' ? value : trimmedInput;
16141 };
16142 TextFilter.prototype.getDefaultDebounceMs = function () {
16143 return 500;
16144 };
16145 TextFilter.prototype.setParams = function (params) {
16146 _super.prototype.setParams.call(this, params);
16147 this.textFilterParams = params;
16148 this.matcher = this.getTextMatcher();
16149 this.formatter = this.textFilterParams.textFormatter ||
16150 (this.textFilterParams.caseSensitive ? TextFilter.DEFAULT_FORMATTER : TextFilter.DEFAULT_LOWERCASE_FORMATTER);
16151 };
16152 TextFilter.prototype.getTextMatcher = function () {
16153 var legacyComparator = this.textFilterParams.textCustomComparator;
16154 if (legacyComparator) {
16155 _utils__WEBPACK_IMPORTED_MODULE_3__["_"].doOnce(function () { return console.warn('AG Grid - textCustomComparator is deprecated, use textMatcher instead.'); }, 'textCustomComparator.deprecated');
16156 return function (_a) {
16157 var filterOption = _a.filterOption, value = _a.value, filterText = _a.filterText;
16158 return legacyComparator(filterOption, value, filterText);
16159 };
16160 }
16161 return this.textFilterParams.textMatcher || TextFilter.DEFAULT_MATCHER;
16162 };
16163 TextFilter.prototype.createCondition = function (position) {
16164 var type = this.getConditionTypes()[position];
16165 var model = {
16166 filterType: this.getFilterType(),
16167 type: type,
16168 };
16169 var values = this.getValues(position);
16170 if (values.length > 0) {
16171 model.filter = values[0];
16172 }
16173 if (values.length > 1) {
16174 model.filterTo = values[1];
16175 }
16176 return model;
16177 };
16178 TextFilter.prototype.getFilterType = function () {
16179 return 'text';
16180 };
16181 TextFilter.prototype.areSimpleModelsEqual = function (aSimple, bSimple) {
16182 return aSimple.filter === bSimple.filter &&
16183 aSimple.filterTo === bSimple.filterTo &&
16184 aSimple.type === bSimple.type;
16185 };
16186 TextFilter.prototype.getInputs = function () {
16187 return [
16188 [this.eValueFrom1, this.eValueTo1],
16189 [this.eValueFrom2, this.eValueTo2],
16190 ];
16191 };
16192 TextFilter.prototype.getValues = function (position) {
16193 var _this = this;
16194 var result = [];
16195 this.forEachInput(function (element, index, elPosition, numberOfInputs) {
16196 if (position === elPosition && index < numberOfInputs) {
16197 var value = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["makeNull"])(element.getValue());
16198 var cleanValue = (_this.textFilterParams.trimInput ? TextFilter.trimInput(value) : value) || null;
16199 result.push(cleanValue);
16200 element.setValue(cleanValue, true); // ensure clean value is visible
16201 }
16202 });
16203 return result;
16204 };
16205 TextFilter.prototype.getDefaultFilterOptions = function () {
16206 return TextFilter.DEFAULT_FILTER_OPTIONS;
16207 };
16208 TextFilter.prototype.createValueTemplate = function (position) {
16209 var pos = position === _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["ConditionPosition"].One ? '1' : '2';
16210 return /* html */ "\n <div class=\"ag-filter-body\" ref=\"eCondition" + pos + "Body\" role=\"presentation\">\n <ag-input-text-field class=\".ag-filter-from ag-filter-filter\" ref=\"eValue-index0-" + pos + "\"></ag-input-text-field>\n <ag-input-text-field class=\"ag-filter-to ag-filter-filter\" ref=\"eValue-index1-" + pos + "\"></ag-input-text-field>\n </div>";
16211 };
16212 TextFilter.prototype.mapValuesFromModel = function (filterModel) {
16213 var _a = filterModel || {}, filter = _a.filter, filterTo = _a.filterTo, type = _a.type;
16214 return [
16215 filter || null,
16216 filterTo || null,
16217 ].slice(0, this.getNumberOfInputs(type));
16218 };
16219 TextFilter.prototype.evaluateNullValue = function (filterType) {
16220 var filterTypesAllowNulls = [
16221 _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].NOT_EQUAL, _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].NOT_CONTAINS, _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].BLANK,
16222 ];
16223 return filterType ? filterTypesAllowNulls.indexOf(filterType) >= 0 : false;
16224 };
16225 TextFilter.prototype.evaluateNonNullValue = function (values, cellValue, filterModel, params) {
16226 var _this = this;
16227 var formattedValues = values.map(function (v) { return _this.formatter(v); }) || [];
16228 var cellValueFormatted = this.formatter(cellValue);
16229 var _a = this.textFilterParams, api = _a.api, colDef = _a.colDef, column = _a.column, columnApi = _a.columnApi, context = _a.context, textFormatter = _a.textFormatter;
16230 if (filterModel.type === _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].BLANK) {
16231 return this.isBlank(cellValue);
16232 }
16233 else if (filterModel.type === _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].NOT_BLANK) {
16234 return !this.isBlank(cellValue);
16235 }
16236 var matcherParams = {
16237 api: api,
16238 colDef: colDef,
16239 column: column,
16240 columnApi: columnApi,
16241 context: context,
16242 node: params.node,
16243 data: params.data,
16244 filterOption: filterModel.type,
16245 value: cellValueFormatted,
16246 textFormatter: textFormatter,
16247 };
16248 return formattedValues.some(function (v) { return _this.matcher(__assign(__assign({}, matcherParams), { filterText: v })); });
16249 };
16250 TextFilter.DEFAULT_FILTER_OPTIONS = [
16251 _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].CONTAINS,
16252 _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].NOT_CONTAINS,
16253 _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].EQUALS,
16254 _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].NOT_EQUAL,
16255 _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].STARTS_WITH,
16256 _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].ENDS_WITH,
16257 _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].BLANK,
16258 _simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"].NOT_BLANK,
16259 ];
16260 TextFilter.DEFAULT_FORMATTER = function (from) { return from; };
16261 TextFilter.DEFAULT_LOWERCASE_FORMATTER = function (from) { return from == null ? null : from.toString().toLowerCase(); };
16262 TextFilter.DEFAULT_MATCHER = function (_a) {
16263 var filterOption = _a.filterOption, value = _a.value, filterText = _a.filterText;
16264 if (filterText == null) {
16265 return false;
16266 }
16267 switch (filterOption) {
16268 case TextFilter.CONTAINS:
16269 return value.indexOf(filterText) >= 0;
16270 case TextFilter.NOT_CONTAINS:
16271 return value.indexOf(filterText) < 0;
16272 case TextFilter.EQUALS:
16273 return value === filterText;
16274 case TextFilter.NOT_EQUAL:
16275 return value != filterText;
16276 case TextFilter.STARTS_WITH:
16277 return value.indexOf(filterText) === 0;
16278 case TextFilter.ENDS_WITH:
16279 var index = value.lastIndexOf(filterText);
16280 return index >= 0 && index === (value.length - filterText.length);
16281 default:
16282 return false;
16283 }
16284 };
16285 __decorate([
16286 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eValue-index0-1')
16287 ], TextFilter.prototype, "eValueFrom1", void 0);
16288 __decorate([
16289 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eValue-index1-1')
16290 ], TextFilter.prototype, "eValueTo1", void 0);
16291 __decorate([
16292 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eValue-index0-2')
16293 ], TextFilter.prototype, "eValueFrom2", void 0);
16294 __decorate([
16295 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eValue-index1-2')
16296 ], TextFilter.prototype, "eValueTo2", void 0);
16297 return TextFilter;
16298}(_simpleFilter__WEBPACK_IMPORTED_MODULE_1__["SimpleFilter"]));
16299
16300
16301
16302
16303
16304/***/ }),
16305/* 80 */
16306/***/ (function(module, __webpack_exports__, __webpack_require__) {
16307
16308"use strict";
16309__webpack_require__.r(__webpack_exports__);
16310/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextFloatingFilter", function() { return TextFloatingFilter; });
16311/* harmony import */ var _textFilter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(79);
16312/* harmony import */ var _floating_provided_textInputFloatingFilter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(78);
16313/**
16314 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
16315 * @version v27.3.0
16316 * @link https://www.ag-grid.com/
16317 * @license MIT
16318 */
16319var __extends = (undefined && undefined.__extends) || (function () {
16320 var extendStatics = function (d, b) {
16321 extendStatics = Object.setPrototypeOf ||
16322 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
16323 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
16324 return extendStatics(d, b);
16325 };
16326 return function (d, b) {
16327 extendStatics(d, b);
16328 function __() { this.constructor = d; }
16329 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
16330 };
16331})();
16332
16333
16334var TextFloatingFilter = /** @class */ (function (_super) {
16335 __extends(TextFloatingFilter, _super);
16336 function TextFloatingFilter() {
16337 return _super !== null && _super.apply(this, arguments) || this;
16338 }
16339 TextFloatingFilter.prototype.getDefaultFilterOptions = function () {
16340 return _textFilter__WEBPACK_IMPORTED_MODULE_0__["TextFilter"].DEFAULT_FILTER_OPTIONS;
16341 };
16342 return TextFloatingFilter;
16343}(_floating_provided_textInputFloatingFilter__WEBPACK_IMPORTED_MODULE_1__["TextInputFloatingFilter"]));
16344
16345
16346
16347
16348
16349/***/ }),
16350/* 81 */
16351/***/ (function(module, __webpack_exports__, __webpack_require__) {
16352
16353"use strict";
16354__webpack_require__.r(__webpack_exports__);
16355/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderComp", function() { return HeaderComp; });
16356/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
16357/* harmony import */ var _entities_column__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10);
16358/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23);
16359/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(18);
16360/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(43);
16361/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(42);
16362/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7);
16363/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(48);
16364/* harmony import */ var _utils_string__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(26);
16365/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(36);
16366/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(57);
16367/* harmony import */ var _widgets_touchListener__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(82);
16368/**
16369 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
16370 * @version v27.3.0
16371 * @link https://www.ag-grid.com/
16372 * @license MIT
16373 */
16374var __extends = (undefined && undefined.__extends) || (function () {
16375 var extendStatics = function (d, b) {
16376 extendStatics = Object.setPrototypeOf ||
16377 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
16378 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
16379 return extendStatics(d, b);
16380 };
16381 return function (d, b) {
16382 extendStatics(d, b);
16383 function __() { this.constructor = d; }
16384 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
16385 };
16386})();
16387var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
16388 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16389 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
16390 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
16391 return c > 3 && r && Object.defineProperty(target, key, r), r;
16392};
16393
16394
16395
16396
16397
16398
16399
16400
16401
16402
16403
16404
16405var HeaderComp = /** @class */ (function (_super) {
16406 __extends(HeaderComp, _super);
16407 function HeaderComp() {
16408 var _this = _super !== null && _super.apply(this, arguments) || this;
16409 _this.lastMovingChanged = 0;
16410 return _this;
16411 }
16412 // this is a user component, and IComponent has "public destroy()" as part of the interface.
16413 // so we need to override destroy() just to make the method public.
16414 HeaderComp.prototype.destroy = function () {
16415 _super.prototype.destroy.call(this);
16416 };
16417 HeaderComp.prototype.refresh = function (params) {
16418 this.params = params;
16419 // if template changed, then recreate the whole comp, the code required to manage
16420 // a changing template is to difficult for what it's worth.
16421 if (this.workOutTemplate() != this.currentTemplate) {
16422 return false;
16423 }
16424 if (this.workOutShowMenu() != this.currentShowMenu) {
16425 return false;
16426 }
16427 if (this.workOutSort() != this.currentSort) {
16428 return false;
16429 }
16430 this.setDisplayName(params);
16431 return true;
16432 };
16433 HeaderComp.prototype.workOutTemplate = function () {
16434 var template = Object(_utils_array__WEBPACK_IMPORTED_MODULE_3__["firstExistingValue"])(this.params.template, HeaderComp.TEMPLATE);
16435 // take account of any newlines & whitespace before/after the actual template
16436 template = template && template.trim ? template.trim() : template;
16437 return template;
16438 };
16439 HeaderComp.prototype.init = function (params) {
16440 this.params = params;
16441 this.currentTemplate = this.workOutTemplate();
16442 this.setTemplate(this.currentTemplate);
16443 this.setupTap();
16444 this.setupIcons(params.column);
16445 this.setMenu();
16446 this.setupSort();
16447 this.setupFilterIcon();
16448 this.setDisplayName(params);
16449 };
16450 HeaderComp.prototype.setDisplayName = function (params) {
16451 if (this.currentDisplayName != params.displayName) {
16452 this.currentDisplayName = params.displayName;
16453 var displayNameSanitised = Object(_utils_string__WEBPACK_IMPORTED_MODULE_8__["escapeString"])(this.currentDisplayName);
16454 if (this.eText) {
16455 this.eText.innerHTML = displayNameSanitised;
16456 }
16457 }
16458 };
16459 HeaderComp.prototype.setupIcons = function (column) {
16460 this.addInIcon('sortAscending', this.eSortAsc, column);
16461 this.addInIcon('sortDescending', this.eSortDesc, column);
16462 this.addInIcon('sortUnSort', this.eSortNone, column);
16463 this.addInIcon('menu', this.eMenu, column);
16464 this.addInIcon('filter', this.eFilter, column);
16465 };
16466 HeaderComp.prototype.addInIcon = function (iconName, eParent, column) {
16467 if (eParent == null) {
16468 return;
16469 }
16470 var eIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_7__["createIconNoSpan"])(iconName, this.gridOptionsWrapper, column);
16471 if (eIcon) {
16472 eParent.appendChild(eIcon);
16473 }
16474 };
16475 HeaderComp.prototype.setupTap = function () {
16476 var _this = this;
16477 var options = this.gridOptionsWrapper;
16478 if (options.isSuppressTouch()) {
16479 return;
16480 }
16481 var touchListener = new _widgets_touchListener__WEBPACK_IMPORTED_MODULE_11__["TouchListener"](this.getGui(), true);
16482 var suppressMenuHide = options.isSuppressMenuHide();
16483 var tapMenuButton = suppressMenuHide && Object(_utils_generic__WEBPACK_IMPORTED_MODULE_6__["exists"])(this.eMenu);
16484 var menuTouchListener = tapMenuButton ? new _widgets_touchListener__WEBPACK_IMPORTED_MODULE_11__["TouchListener"](this.eMenu, true) : touchListener;
16485 if (this.params.enableMenu) {
16486 var eventType = tapMenuButton ? 'EVENT_TAP' : 'EVENT_LONG_TAP';
16487 var showMenuFn = function (event) {
16488 options.getApi().showColumnMenuAfterMouseClick(_this.params.column, event.touchStart);
16489 };
16490 this.addManagedListener(menuTouchListener, _widgets_touchListener__WEBPACK_IMPORTED_MODULE_11__["TouchListener"][eventType], showMenuFn);
16491 }
16492 if (this.params.enableSorting) {
16493 var tapListener = function (event) {
16494 var target = event.touchStart.target;
16495 // When suppressMenuHide is true, a tap on the menu icon will bubble up
16496 // to the header container, in that case we should not sort
16497 if (suppressMenuHide && _this.eMenu.contains(target)) {
16498 return;
16499 }
16500 _this.sortController.progressSort(_this.params.column, false, "uiColumnSorted");
16501 };
16502 this.addManagedListener(touchListener, _widgets_touchListener__WEBPACK_IMPORTED_MODULE_11__["TouchListener"].EVENT_TAP, tapListener);
16503 }
16504 // if tapMenuButton is true `touchListener` and `menuTouchListener` are different
16505 // so we need to make sure to destroy both listeners here
16506 this.addDestroyFunc(function () { return touchListener.destroy(); });
16507 if (tapMenuButton) {
16508 this.addDestroyFunc(function () { return menuTouchListener.destroy(); });
16509 }
16510 };
16511 HeaderComp.prototype.workOutShowMenu = function () {
16512 // we don't show the menu if on an iPad/iPhone, as the user cannot have a pointer device/
16513 // However if suppressMenuHide is set to true the menu will be displayed alwasys, so it's ok
16514 // to show it on iPad in this case (as hover isn't needed). If suppressMenuHide
16515 // is false (default) user will need to use longpress to display the menu.
16516 var menuHides = !this.gridOptionsWrapper.isSuppressMenuHide();
16517 var onIpadAndMenuHides = Object(_utils_browser__WEBPACK_IMPORTED_MODULE_4__["isIOSUserAgent"])() && menuHides;
16518 var showMenu = this.params.enableMenu && !onIpadAndMenuHides;
16519 return showMenu;
16520 };
16521 HeaderComp.prototype.setMenu = function () {
16522 var _this = this;
16523 // if no menu provided in template, do nothing
16524 if (!this.eMenu) {
16525 return;
16526 }
16527 this.currentShowMenu = this.workOutShowMenu();
16528 if (!this.currentShowMenu) {
16529 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["removeFromParent"])(this.eMenu);
16530 return;
16531 }
16532 var suppressMenuHide = this.gridOptionsWrapper.isSuppressMenuHide();
16533 this.addManagedListener(this.eMenu, 'click', function () { return _this.showMenu(_this.eMenu); });
16534 this.eMenu.classList.toggle('ag-header-menu-always-show', suppressMenuHide);
16535 };
16536 HeaderComp.prototype.showMenu = function (eventSource) {
16537 if (!eventSource) {
16538 eventSource = this.eMenu;
16539 }
16540 this.menuFactory.showMenuAfterButtonClick(this.params.column, eventSource, 'columnMenu');
16541 };
16542 HeaderComp.prototype.removeSortIcons = function () {
16543 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["removeFromParent"])(this.eSortAsc);
16544 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["removeFromParent"])(this.eSortDesc);
16545 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["removeFromParent"])(this.eSortNone);
16546 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["removeFromParent"])(this.eSortOrder);
16547 };
16548 HeaderComp.prototype.workOutSort = function () {
16549 return this.params.enableSorting;
16550 };
16551 HeaderComp.prototype.setupSort = function () {
16552 var _this = this;
16553 this.currentSort = this.params.enableSorting;
16554 if (!this.currentSort) {
16555 this.removeSortIcons();
16556 return;
16557 }
16558 var sortUsingCtrl = this.gridOptionsWrapper.isMultiSortKeyCtrl();
16559 // keep track of last time the moving changed flag was set
16560 this.addManagedListener(this.params.column, _entities_column__WEBPACK_IMPORTED_MODULE_1__["Column"].EVENT_MOVING_CHANGED, function () {
16561 _this.lastMovingChanged = new Date().getTime();
16562 });
16563 // add the event on the header, so when clicked, we do sorting
16564 if (this.eLabel) {
16565 this.addManagedListener(this.eLabel, 'click', function (event) {
16566 // sometimes when moving a column via dragging, this was also firing a clicked event.
16567 // here is issue raised by user: https://ag-grid.zendesk.com/agent/tickets/1076
16568 // this check stops sort if a) column is moving or b) column moved less than 200ms ago (so caters for race condition)
16569 var moving = _this.params.column.isMoving();
16570 var nowTime = new Date().getTime();
16571 // typically there is <2ms if moving flag was set recently, as it would be done in same VM turn
16572 var movedRecently = (nowTime - _this.lastMovingChanged) < 50;
16573 var columnMoving = moving || movedRecently;
16574 if (!columnMoving) {
16575 var multiSort = sortUsingCtrl ? (event.ctrlKey || event.metaKey) : event.shiftKey;
16576 _this.params.progressSort(multiSort);
16577 }
16578 });
16579 }
16580 this.addManagedListener(this.params.column, _entities_column__WEBPACK_IMPORTED_MODULE_1__["Column"].EVENT_SORT_CHANGED, this.onSortChanged.bind(this));
16581 this.onSortChanged();
16582 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_SORT_CHANGED, this.setMultiSortOrder.bind(this));
16583 this.setMultiSortOrder();
16584 };
16585 HeaderComp.prototype.onSortChanged = function () {
16586 this.addOrRemoveCssClass('ag-header-cell-sorted-asc', this.params.column.isSortAscending());
16587 this.addOrRemoveCssClass('ag-header-cell-sorted-desc', this.params.column.isSortDescending());
16588 this.addOrRemoveCssClass('ag-header-cell-sorted-none', this.params.column.isSortNone());
16589 if (this.eSortAsc) {
16590 this.eSortAsc.classList.toggle('ag-hidden', !this.params.column.isSortAscending());
16591 }
16592 if (this.eSortDesc) {
16593 this.eSortDesc.classList.toggle('ag-hidden', !this.params.column.isSortDescending());
16594 }
16595 if (this.eSortNone) {
16596 var alwaysHideNoSort = !this.params.column.getColDef().unSortIcon && !this.gridOptionsWrapper.isUnSortIcon();
16597 this.eSortNone.classList.toggle('ag-hidden', alwaysHideNoSort || !this.params.column.isSortNone());
16598 }
16599 };
16600 // we listen here for global sort events, NOT column sort events, as we want to do this
16601 // when sorting has been set on all column (if we listened just for our col (where we
16602 // set the asc / desc icons) then it's possible other cols are yet to get their sorting state.
16603 HeaderComp.prototype.setMultiSortOrder = function () {
16604 if (!this.eSortOrder) {
16605 return;
16606 }
16607 var col = this.params.column;
16608 var allColumnsWithSorting = this.sortController.getColumnsWithSortingOrdered();
16609 var indexThisCol = allColumnsWithSorting.indexOf(col);
16610 var moreThanOneColSorting = allColumnsWithSorting.length > 1;
16611 var showIndex = col.isSorting() && moreThanOneColSorting;
16612 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["setDisplayed"])(this.eSortOrder, showIndex);
16613 if (indexThisCol >= 0) {
16614 this.eSortOrder.innerHTML = (indexThisCol + 1).toString();
16615 }
16616 else {
16617 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["clearElement"])(this.eSortOrder);
16618 }
16619 };
16620 HeaderComp.prototype.setupFilterIcon = function () {
16621 if (!this.eFilter) {
16622 return;
16623 }
16624 this.addManagedListener(this.params.column, _entities_column__WEBPACK_IMPORTED_MODULE_1__["Column"].EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));
16625 this.onFilterChanged();
16626 };
16627 HeaderComp.prototype.onFilterChanged = function () {
16628 var filterPresent = this.params.column.isFilterActive();
16629 this.eFilter.classList.toggle('ag-hidden', !filterPresent);
16630 };
16631 HeaderComp.TEMPLATE = "<div class=\"ag-cell-label-container\" role=\"presentation\">\n <span ref=\"eMenu\" class=\"ag-header-icon ag-header-cell-menu-button\" aria-hidden=\"true\"></span>\n <div ref=\"eLabel\" class=\"ag-header-cell-label\" role=\"presentation\">\n <span ref=\"eText\" class=\"ag-header-cell-text\"></span>\n <span ref=\"eFilter\" class=\"ag-header-icon ag-header-label-icon ag-filter-icon\" aria-hidden=\"true\"></span>\n <span ref=\"eSortOrder\" class=\"ag-header-icon ag-header-label-icon ag-sort-order\" aria-hidden=\"true\"></span>\n <span ref=\"eSortAsc\" class=\"ag-header-icon ag-header-label-icon ag-sort-ascending-icon\" aria-hidden=\"true\"></span>\n <span ref=\"eSortDesc\" class=\"ag-header-icon ag-header-label-icon ag-sort-descending-icon\" aria-hidden=\"true\"></span>\n <span ref=\"eSortNone\" class=\"ag-header-icon ag-header-label-icon ag-sort-none-icon\" aria-hidden=\"true\"></span>\n </div>\n </div>";
16632 __decorate([
16633 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('sortController')
16634 ], HeaderComp.prototype, "sortController", void 0);
16635 __decorate([
16636 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('menuFactory')
16637 ], HeaderComp.prototype, "menuFactory", void 0);
16638 __decorate([
16639 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_10__["RefSelector"])('eFilter')
16640 ], HeaderComp.prototype, "eFilter", void 0);
16641 __decorate([
16642 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_10__["RefSelector"])('eSortAsc')
16643 ], HeaderComp.prototype, "eSortAsc", void 0);
16644 __decorate([
16645 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_10__["RefSelector"])('eSortDesc')
16646 ], HeaderComp.prototype, "eSortDesc", void 0);
16647 __decorate([
16648 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_10__["RefSelector"])('eSortNone')
16649 ], HeaderComp.prototype, "eSortNone", void 0);
16650 __decorate([
16651 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_10__["RefSelector"])('eSortOrder')
16652 ], HeaderComp.prototype, "eSortOrder", void 0);
16653 __decorate([
16654 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_10__["RefSelector"])('eMenu')
16655 ], HeaderComp.prototype, "eMenu", void 0);
16656 __decorate([
16657 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_10__["RefSelector"])('eLabel')
16658 ], HeaderComp.prototype, "eLabel", void 0);
16659 __decorate([
16660 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_10__["RefSelector"])('eText')
16661 ], HeaderComp.prototype, "eText", void 0);
16662 return HeaderComp;
16663}(_widgets_component__WEBPACK_IMPORTED_MODULE_9__["Component"]));
16664
16665
16666
16667
16668
16669/***/ }),
16670/* 82 */
16671/***/ (function(module, __webpack_exports__, __webpack_require__) {
16672
16673"use strict";
16674__webpack_require__.r(__webpack_exports__);
16675/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TouchListener", function() { return TouchListener; });
16676/* harmony import */ var _eventService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11);
16677/* harmony import */ var _utils_mouse__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(50);
16678/**
16679 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
16680 * @version v27.3.0
16681 * @link https://www.ag-grid.com/
16682 * @license MIT
16683 */
16684
16685
16686var TouchListener = /** @class */ (function () {
16687 function TouchListener(eElement, preventMouseClick) {
16688 var _this = this;
16689 if (preventMouseClick === void 0) { preventMouseClick = false; }
16690 this.destroyFuncs = [];
16691 this.touching = false;
16692 this.eventService = new _eventService__WEBPACK_IMPORTED_MODULE_0__["EventService"]();
16693 this.eElement = eElement;
16694 this.preventMouseClick = preventMouseClick;
16695 var startListener = this.onTouchStart.bind(this);
16696 var moveListener = this.onTouchMove.bind(this);
16697 var endListener = this.onTouchEnd.bind(this);
16698 this.eElement.addEventListener("touchstart", startListener, { passive: true });
16699 this.eElement.addEventListener("touchmove", moveListener, { passive: true });
16700 // we set passive=false, as we want to prevent default on this event
16701 this.eElement.addEventListener("touchend", endListener, { passive: false });
16702 this.destroyFuncs.push(function () {
16703 _this.eElement.removeEventListener("touchstart", startListener, { passive: true });
16704 _this.eElement.removeEventListener("touchmove", moveListener, { passive: true });
16705 _this.eElement.removeEventListener("touchend", endListener, { passive: false });
16706 });
16707 }
16708 TouchListener.prototype.getActiveTouch = function (touchList) {
16709 for (var i = 0; i < touchList.length; i++) {
16710 var matches = touchList[i].identifier === this.touchStart.identifier;
16711 if (matches) {
16712 return touchList[i];
16713 }
16714 }
16715 return null;
16716 };
16717 TouchListener.prototype.addEventListener = function (eventType, listener) {
16718 this.eventService.addEventListener(eventType, listener);
16719 };
16720 TouchListener.prototype.removeEventListener = function (eventType, listener) {
16721 this.eventService.removeEventListener(eventType, listener);
16722 };
16723 TouchListener.prototype.onTouchStart = function (touchEvent) {
16724 var _this = this;
16725 // only looking at one touch point at any time
16726 if (this.touching) {
16727 return;
16728 }
16729 this.touchStart = touchEvent.touches[0];
16730 this.touching = true;
16731 this.moved = false;
16732 var touchStartCopy = this.touchStart;
16733 window.setTimeout(function () {
16734 var touchesMatch = _this.touchStart === touchStartCopy;
16735 if (_this.touching && touchesMatch && !_this.moved) {
16736 _this.moved = true;
16737 var event_1 = {
16738 type: TouchListener.EVENT_LONG_TAP,
16739 touchStart: _this.touchStart,
16740 touchEvent: touchEvent
16741 };
16742 _this.eventService.dispatchEvent(event_1);
16743 }
16744 }, 500);
16745 };
16746 TouchListener.prototype.onTouchMove = function (touchEvent) {
16747 if (!this.touching) {
16748 return;
16749 }
16750 var touch = this.getActiveTouch(touchEvent.touches);
16751 if (!touch) {
16752 return;
16753 }
16754 var eventIsFarAway = !Object(_utils_mouse__WEBPACK_IMPORTED_MODULE_1__["areEventsNear"])(touch, this.touchStart, 4);
16755 if (eventIsFarAway) {
16756 this.moved = true;
16757 }
16758 };
16759 TouchListener.prototype.onTouchEnd = function (touchEvent) {
16760 if (!this.touching) {
16761 return;
16762 }
16763 if (!this.moved) {
16764 var event_2 = {
16765 type: TouchListener.EVENT_TAP,
16766 touchStart: this.touchStart
16767 };
16768 this.eventService.dispatchEvent(event_2);
16769 this.checkForDoubleTap();
16770 }
16771 // stops the tap from also been processed as a mouse click
16772 if (this.preventMouseClick) {
16773 touchEvent.preventDefault();
16774 }
16775 this.touching = false;
16776 };
16777 TouchListener.prototype.checkForDoubleTap = function () {
16778 var now = new Date().getTime();
16779 if (this.lastTapTime && this.lastTapTime > 0) {
16780 // if previous tap, see if duration is short enough to be considered double tap
16781 var interval = now - this.lastTapTime;
16782 if (interval > TouchListener.DOUBLE_TAP_MILLIS) {
16783 // dispatch double tap event
16784 var event_3 = {
16785 type: TouchListener.EVENT_DOUBLE_TAP,
16786 touchStart: this.touchStart
16787 };
16788 this.eventService.dispatchEvent(event_3);
16789 // this stops a tripple tap ending up as two double taps
16790 this.lastTapTime = null;
16791 }
16792 else {
16793 this.lastTapTime = now;
16794 }
16795 }
16796 else {
16797 this.lastTapTime = now;
16798 }
16799 };
16800 TouchListener.prototype.destroy = function () {
16801 this.destroyFuncs.forEach(function (func) { return func(); });
16802 };
16803 TouchListener.EVENT_TAP = "tap";
16804 TouchListener.EVENT_DOUBLE_TAP = "doubleTap";
16805 TouchListener.EVENT_LONG_TAP = "longTap";
16806 TouchListener.DOUBLE_TAP_MILLIS = 500;
16807 return TouchListener;
16808}());
16809
16810
16811
16812
16813
16814/***/ }),
16815/* 83 */
16816/***/ (function(module, __webpack_exports__, __webpack_require__) {
16817
16818"use strict";
16819__webpack_require__.r(__webpack_exports__);
16820/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderGroupComp", function() { return HeaderGroupComp; });
16821/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
16822/* harmony import */ var _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(8);
16823/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
16824/* harmony import */ var _utils_event__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21);
16825/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(14);
16826/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7);
16827/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(48);
16828/* harmony import */ var _utils_string__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(26);
16829/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(36);
16830/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(57);
16831/* harmony import */ var _widgets_touchListener__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(82);
16832/**
16833 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
16834 * @version v27.3.0
16835 * @link https://www.ag-grid.com/
16836 * @license MIT
16837 */
16838var __extends = (undefined && undefined.__extends) || (function () {
16839 var extendStatics = function (d, b) {
16840 extendStatics = Object.setPrototypeOf ||
16841 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
16842 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
16843 return extendStatics(d, b);
16844 };
16845 return function (d, b) {
16846 extendStatics(d, b);
16847 function __() { this.constructor = d; }
16848 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
16849 };
16850})();
16851var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
16852 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16853 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
16854 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
16855 return c > 3 && r && Object.defineProperty(target, key, r), r;
16856};
16857
16858
16859
16860
16861
16862
16863
16864
16865
16866
16867
16868var HeaderGroupComp = /** @class */ (function (_super) {
16869 __extends(HeaderGroupComp, _super);
16870 function HeaderGroupComp() {
16871 return _super.call(this, HeaderGroupComp.TEMPLATE) || this;
16872 }
16873 // this is a user component, and IComponent has "public destroy()" as part of the interface.
16874 // so we need to override destroy() just to make the method public.
16875 HeaderGroupComp.prototype.destroy = function () {
16876 _super.prototype.destroy.call(this);
16877 };
16878 HeaderGroupComp.prototype.init = function (params) {
16879 this.params = params;
16880 this.checkWarnings();
16881 this.setupLabel();
16882 this.addGroupExpandIcon();
16883 this.setupExpandIcons();
16884 };
16885 HeaderGroupComp.prototype.checkWarnings = function () {
16886 var paramsAny = this.params;
16887 if (paramsAny.template) {
16888 var message_1 = "AG Grid: A template was provided for Header Group Comp - templates are only supported for Header Comps (not groups)";
16889 Object(_utils_function__WEBPACK_IMPORTED_MODULE_4__["doOnce"])(function () { return console.warn(message_1); }, 'HeaderGroupComp.templateNotSupported');
16890 }
16891 };
16892 HeaderGroupComp.prototype.setupExpandIcons = function () {
16893 var _this = this;
16894 this.addInIcon("columnGroupOpened", "agOpened");
16895 this.addInIcon("columnGroupClosed", "agClosed");
16896 var expandAction = function (event) {
16897 if (Object(_utils_event__WEBPACK_IMPORTED_MODULE_3__["isStopPropagationForAgGrid"])(event)) {
16898 return;
16899 }
16900 var newExpandedValue = !_this.params.columnGroup.isExpanded();
16901 _this.columnModel.setColumnGroupOpened(_this.params.columnGroup.getProvidedColumnGroup(), newExpandedValue, "uiColumnExpanded");
16902 };
16903 this.addTouchAndClickListeners(this.eCloseIcon, expandAction);
16904 this.addTouchAndClickListeners(this.eOpenIcon, expandAction);
16905 var stopPropagationAction = function (event) {
16906 Object(_utils_event__WEBPACK_IMPORTED_MODULE_3__["stopPropagationForAgGrid"])(event);
16907 };
16908 // adding stopPropagation to the double click for the icons prevents double click action happening
16909 // when the icons are clicked. if the icons are double clicked, then the groups should open and
16910 // then close again straight away. if we also listened to double click, then the group would open,
16911 // close, then open, which is not what we want. double click should only action if the user double
16912 // clicks outside of the icons.
16913 this.addManagedListener(this.eCloseIcon, "dblclick", stopPropagationAction);
16914 this.addManagedListener(this.eOpenIcon, "dblclick", stopPropagationAction);
16915 this.addManagedListener(this.getGui(), "dblclick", expandAction);
16916 this.updateIconVisibility();
16917 var providedColumnGroup = this.params.columnGroup.getProvidedColumnGroup();
16918 this.addManagedListener(providedColumnGroup, _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"].EVENT_EXPANDED_CHANGED, this.updateIconVisibility.bind(this));
16919 this.addManagedListener(providedColumnGroup, _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_1__["ProvidedColumnGroup"].EVENT_EXPANDABLE_CHANGED, this.updateIconVisibility.bind(this));
16920 };
16921 HeaderGroupComp.prototype.addTouchAndClickListeners = function (eElement, action) {
16922 var touchListener = new _widgets_touchListener__WEBPACK_IMPORTED_MODULE_10__["TouchListener"](eElement, true);
16923 this.addManagedListener(touchListener, _widgets_touchListener__WEBPACK_IMPORTED_MODULE_10__["TouchListener"].EVENT_TAP, action);
16924 this.addDestroyFunc(function () { return touchListener.destroy(); });
16925 this.addManagedListener(eElement, "click", action);
16926 };
16927 HeaderGroupComp.prototype.updateIconVisibility = function () {
16928 var columnGroup = this.params.columnGroup;
16929 if (columnGroup.isExpandable()) {
16930 var expanded = this.params.columnGroup.isExpanded();
16931 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setDisplayed"])(this.eOpenIcon, expanded);
16932 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setDisplayed"])(this.eCloseIcon, !expanded);
16933 }
16934 else {
16935 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setDisplayed"])(this.eOpenIcon, false);
16936 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setDisplayed"])(this.eCloseIcon, false);
16937 }
16938 };
16939 HeaderGroupComp.prototype.addInIcon = function (iconName, refName) {
16940 var eIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_6__["createIconNoSpan"])(iconName, this.gridOptionsWrapper, null);
16941 if (eIcon) {
16942 this.getRefElement(refName).appendChild(eIcon);
16943 }
16944 };
16945 HeaderGroupComp.prototype.addGroupExpandIcon = function () {
16946 if (!this.params.columnGroup.isExpandable()) {
16947 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setDisplayed"])(this.eOpenIcon, false);
16948 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setDisplayed"])(this.eCloseIcon, false);
16949 return;
16950 }
16951 };
16952 HeaderGroupComp.prototype.setupLabel = function () {
16953 // no renderer, default text render
16954 var displayName = this.params.displayName;
16955 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["exists"])(displayName)) {
16956 var displayNameSanitised = Object(_utils_string__WEBPACK_IMPORTED_MODULE_7__["escapeString"])(displayName);
16957 this.getRefElement('agLabel').innerHTML = displayNameSanitised;
16958 }
16959 };
16960 HeaderGroupComp.TEMPLATE = "<div class=\"ag-header-group-cell-label\" ref=\"agContainer\" role=\"presentation\">\n <span ref=\"agLabel\" class=\"ag-header-group-text\" role=\"presentation\"></span>\n <span ref=\"agOpened\" class=\"ag-header-icon ag-header-expand-icon ag-header-expand-icon-expanded\"></span>\n <span ref=\"agClosed\" class=\"ag-header-icon ag-header-expand-icon ag-header-expand-icon-collapsed\"></span>\n </div>";
16961 __decorate([
16962 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])("columnModel")
16963 ], HeaderGroupComp.prototype, "columnModel", void 0);
16964 __decorate([
16965 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_9__["RefSelector"])("agOpened")
16966 ], HeaderGroupComp.prototype, "eOpenIcon", void 0);
16967 __decorate([
16968 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_9__["RefSelector"])("agClosed")
16969 ], HeaderGroupComp.prototype, "eCloseIcon", void 0);
16970 return HeaderGroupComp;
16971}(_widgets_component__WEBPACK_IMPORTED_MODULE_8__["Component"]));
16972
16973
16974
16975
16976
16977/***/ }),
16978/* 84 */
16979/***/ (function(module, __webpack_exports__, __webpack_require__) {
16980
16981"use strict";
16982__webpack_require__.r(__webpack_exports__);
16983/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LargeTextCellEditor", function() { return LargeTextCellEditor; });
16984/* harmony import */ var _widgets_popupComponent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(85);
16985/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
16986/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
16987/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(65);
16988/**
16989 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
16990 * @version v27.3.0
16991 * @link https://www.ag-grid.com/
16992 * @license MIT
16993 */
16994var __extends = (undefined && undefined.__extends) || (function () {
16995 var extendStatics = function (d, b) {
16996 extendStatics = Object.setPrototypeOf ||
16997 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
16998 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
16999 return extendStatics(d, b);
17000 };
17001 return function (d, b) {
17002 extendStatics(d, b);
17003 function __() { this.constructor = d; }
17004 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
17005 };
17006})();
17007var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
17008 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17009 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17010 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
17011 return c > 3 && r && Object.defineProperty(target, key, r), r;
17012};
17013
17014
17015
17016
17017var LargeTextCellEditor = /** @class */ (function (_super) {
17018 __extends(LargeTextCellEditor, _super);
17019 function LargeTextCellEditor() {
17020 return _super.call(this, LargeTextCellEditor.TEMPLATE) || this;
17021 }
17022 LargeTextCellEditor.prototype.init = function (params) {
17023 this.params = params;
17024 this.focusAfterAttached = params.cellStartedEdit;
17025 this.eTextArea
17026 .setMaxLength(params.maxLength || 200)
17027 .setCols(params.cols || 60)
17028 .setRows(params.rows || 10);
17029 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(params.value)) {
17030 this.eTextArea.setValue(params.value.toString(), true);
17031 }
17032 this.addGuiEventListener('keydown', this.onKeyDown.bind(this));
17033 };
17034 LargeTextCellEditor.prototype.onKeyDown = function (event) {
17035 var key = event.key;
17036 if (key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].LEFT ||
17037 key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].UP ||
17038 key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].RIGHT ||
17039 key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].DOWN ||
17040 (event.shiftKey && key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].ENTER)) { // shift+enter allows for newlines
17041 event.stopPropagation();
17042 }
17043 };
17044 LargeTextCellEditor.prototype.afterGuiAttached = function () {
17045 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
17046 this.eTextArea.setInputAriaLabel(translate('ariaInputEditor', 'Input Editor'));
17047 if (this.focusAfterAttached) {
17048 this.eTextArea.getFocusableElement().focus();
17049 }
17050 };
17051 LargeTextCellEditor.prototype.getValue = function () {
17052 return this.params.parseValue(this.eTextArea.getValue());
17053 };
17054 LargeTextCellEditor.TEMPLATE = "<div class=\"ag-large-text\" tabindex=\"0\">\n <ag-input-text-area ref=\"eTextArea\" class=\"ag-large-text-input\"></ag-input-text-area>\n </div>";
17055 __decorate([
17056 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])("eTextArea")
17057 ], LargeTextCellEditor.prototype, "eTextArea", void 0);
17058 return LargeTextCellEditor;
17059}(_widgets_popupComponent__WEBPACK_IMPORTED_MODULE_0__["PopupComponent"]));
17060
17061
17062
17063
17064
17065/***/ }),
17066/* 85 */
17067/***/ (function(module, __webpack_exports__, __webpack_require__) {
17068
17069"use strict";
17070__webpack_require__.r(__webpack_exports__);
17071/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PopupComponent", function() { return PopupComponent; });
17072/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
17073/**
17074 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
17075 * @version v27.3.0
17076 * @link https://www.ag-grid.com/
17077 * @license MIT
17078 */
17079var __extends = (undefined && undefined.__extends) || (function () {
17080 var extendStatics = function (d, b) {
17081 extendStatics = Object.setPrototypeOf ||
17082 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
17083 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
17084 return extendStatics(d, b);
17085 };
17086 return function (d, b) {
17087 extendStatics(d, b);
17088 function __() { this.constructor = d; }
17089 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
17090 };
17091})();
17092
17093var PopupComponent = /** @class */ (function (_super) {
17094 __extends(PopupComponent, _super);
17095 function PopupComponent() {
17096 return _super !== null && _super.apply(this, arguments) || this;
17097 }
17098 PopupComponent.prototype.isPopup = function () {
17099 return true;
17100 };
17101 PopupComponent.prototype.setParentComponent = function (container) {
17102 container.addCssClass('ag-has-popup');
17103 _super.prototype.setParentComponent.call(this, container);
17104 };
17105 PopupComponent.prototype.destroy = function () {
17106 var parentComp = this.parentComponent;
17107 var hasParent = parentComp && parentComp.isAlive();
17108 if (hasParent) {
17109 parentComp.getGui().classList.remove('ag-has-popup');
17110 }
17111 _super.prototype.destroy.call(this);
17112 };
17113 return PopupComponent;
17114}(_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
17115
17116
17117
17118
17119
17120/***/ }),
17121/* 86 */
17122/***/ (function(module, __webpack_exports__, __webpack_require__) {
17123
17124"use strict";
17125__webpack_require__.r(__webpack_exports__);
17126/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PopupSelectCellEditor", function() { return PopupSelectCellEditor; });
17127/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(14);
17128/* harmony import */ var _selectCellEditor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(87);
17129/**
17130 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
17131 * @version v27.3.0
17132 * @link https://www.ag-grid.com/
17133 * @license MIT
17134 */
17135var __extends = (undefined && undefined.__extends) || (function () {
17136 var extendStatics = function (d, b) {
17137 extendStatics = Object.setPrototypeOf ||
17138 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
17139 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
17140 return extendStatics(d, b);
17141 };
17142 return function (d, b) {
17143 extendStatics(d, b);
17144 function __() { this.constructor = d; }
17145 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
17146 };
17147})();
17148
17149
17150var PopupSelectCellEditor = /** @class */ (function (_super) {
17151 __extends(PopupSelectCellEditor, _super);
17152 function PopupSelectCellEditor() {
17153 var _this = _super.call(this) || this;
17154 Object(_utils_function__WEBPACK_IMPORTED_MODULE_0__["doOnce"])(function () { return console.warn('AG Grid: The PopupSelectCellEditor (agPopupSelectCellEditor) is deprecated. Instead use {cellEditor: "agSelectCellEditor", cellEditorPopup: true} '); }, 'PopupSelectCellEditor.deprecated');
17155 return _this;
17156 }
17157 PopupSelectCellEditor.prototype.isPopup = function () {
17158 return true;
17159 };
17160 return PopupSelectCellEditor;
17161}(_selectCellEditor__WEBPACK_IMPORTED_MODULE_1__["SelectCellEditor"]));
17162
17163
17164
17165
17166
17167/***/ }),
17168/* 87 */
17169/***/ (function(module, __webpack_exports__, __webpack_require__) {
17170
17171"use strict";
17172__webpack_require__.r(__webpack_exports__);
17173/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SelectCellEditor", function() { return SelectCellEditor; });
17174/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
17175/* harmony import */ var _widgets_popupComponent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(85);
17176/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(57);
17177/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7);
17178/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(65);
17179/**
17180 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
17181 * @version v27.3.0
17182 * @link https://www.ag-grid.com/
17183 * @license MIT
17184 */
17185var __extends = (undefined && undefined.__extends) || (function () {
17186 var extendStatics = function (d, b) {
17187 extendStatics = Object.setPrototypeOf ||
17188 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
17189 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
17190 return extendStatics(d, b);
17191 };
17192 return function (d, b) {
17193 extendStatics(d, b);
17194 function __() { this.constructor = d; }
17195 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
17196 };
17197})();
17198var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
17199 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17200 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17201 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
17202 return c > 3 && r && Object.defineProperty(target, key, r), r;
17203};
17204
17205
17206
17207
17208
17209var SelectCellEditor = /** @class */ (function (_super) {
17210 __extends(SelectCellEditor, _super);
17211 function SelectCellEditor() {
17212 var _this = _super.call(this, '<div class="ag-cell-edit-wrapper"><ag-select class="ag-cell-editor" ref="eSelect"></ag-select></div>') || this;
17213 _this.startedByEnter = false;
17214 return _this;
17215 }
17216 SelectCellEditor.prototype.init = function (params) {
17217 var _this = this;
17218 this.focusAfterAttached = params.cellStartedEdit;
17219 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["missing"])(params.values)) {
17220 console.warn('AG Grid: no values found for select cellEditor');
17221 return;
17222 }
17223 this.startedByEnter = params.eventKey != null ? params.eventKey === _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].ENTER : false;
17224 var hasValue = false;
17225 params.values.forEach(function (value) {
17226 var option = { value: value };
17227 var valueFormatted = _this.valueFormatterService.formatValue(params.column, null, null, value);
17228 var valueFormattedExits = valueFormatted !== null && valueFormatted !== undefined;
17229 option.text = valueFormattedExits ? valueFormatted : value;
17230 _this.eSelect.addOption(option);
17231 hasValue = hasValue || params.value === value;
17232 });
17233 if (hasValue) {
17234 this.eSelect.setValue(params.value, true);
17235 }
17236 else if (params.values.length) {
17237 this.eSelect.setValue(params.values[0], true);
17238 }
17239 // we don't want to add this if full row editing, otherwise selecting will stop the
17240 // full row editing.
17241 if (!this.gridOptionsWrapper.isFullRowEdit()) {
17242 this.eSelect.onValueChange(function () { return params.stopEditing(); });
17243 }
17244 };
17245 SelectCellEditor.prototype.afterGuiAttached = function () {
17246 if (this.focusAfterAttached) {
17247 this.eSelect.getFocusableElement().focus();
17248 }
17249 if (this.startedByEnter) {
17250 this.eSelect.showPicker();
17251 }
17252 };
17253 SelectCellEditor.prototype.focusIn = function () {
17254 this.eSelect.getFocusableElement().focus();
17255 };
17256 SelectCellEditor.prototype.getValue = function () {
17257 return this.eSelect.getValue();
17258 };
17259 SelectCellEditor.prototype.isPopup = function () {
17260 return false;
17261 };
17262 __decorate([
17263 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('valueFormatterService')
17264 ], SelectCellEditor.prototype, "valueFormatterService", void 0);
17265 __decorate([
17266 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('eSelect')
17267 ], SelectCellEditor.prototype, "eSelect", void 0);
17268 return SelectCellEditor;
17269}(_widgets_popupComponent__WEBPACK_IMPORTED_MODULE_1__["PopupComponent"]));
17270
17271
17272
17273
17274
17275/***/ }),
17276/* 88 */
17277/***/ (function(module, __webpack_exports__, __webpack_require__) {
17278
17279"use strict";
17280__webpack_require__.r(__webpack_exports__);
17281/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PopupTextCellEditor", function() { return PopupTextCellEditor; });
17282/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(14);
17283/* harmony import */ var _textCellEditor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(89);
17284/**
17285 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
17286 * @version v27.3.0
17287 * @link https://www.ag-grid.com/
17288 * @license MIT
17289 */
17290var __extends = (undefined && undefined.__extends) || (function () {
17291 var extendStatics = function (d, b) {
17292 extendStatics = Object.setPrototypeOf ||
17293 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
17294 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
17295 return extendStatics(d, b);
17296 };
17297 return function (d, b) {
17298 extendStatics(d, b);
17299 function __() { this.constructor = d; }
17300 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
17301 };
17302})();
17303
17304
17305var PopupTextCellEditor = /** @class */ (function (_super) {
17306 __extends(PopupTextCellEditor, _super);
17307 function PopupTextCellEditor() {
17308 var _this = _super.call(this) || this;
17309 Object(_utils_function__WEBPACK_IMPORTED_MODULE_0__["doOnce"])(function () { return console.warn('AG Grid: The PopupTextCellEditor (agPopupTextCellEditor) is deprecated. Instead use {cellEditor: "agTextCellEditor", cellEditorPopup: true} '); }, 'PopupTextCellEditor.deprecated');
17310 return _this;
17311 }
17312 PopupTextCellEditor.prototype.isPopup = function () {
17313 return true;
17314 };
17315 return PopupTextCellEditor;
17316}(_textCellEditor__WEBPACK_IMPORTED_MODULE_1__["TextCellEditor"]));
17317
17318
17319
17320
17321
17322/***/ }),
17323/* 89 */
17324/***/ (function(module, __webpack_exports__, __webpack_require__) {
17325
17326"use strict";
17327__webpack_require__.r(__webpack_exports__);
17328/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TextCellEditor", function() { return TextCellEditor; });
17329/* harmony import */ var _widgets_popupComponent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(85);
17330/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
17331/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
17332/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(43);
17333/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(65);
17334/**
17335 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
17336 * @version v27.3.0
17337 * @link https://www.ag-grid.com/
17338 * @license MIT
17339 */
17340var __extends = (undefined && undefined.__extends) || (function () {
17341 var extendStatics = function (d, b) {
17342 extendStatics = Object.setPrototypeOf ||
17343 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
17344 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
17345 return extendStatics(d, b);
17346 };
17347 return function (d, b) {
17348 extendStatics(d, b);
17349 function __() { this.constructor = d; }
17350 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
17351 };
17352})();
17353var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
17354 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17355 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17356 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
17357 return c > 3 && r && Object.defineProperty(target, key, r), r;
17358};
17359
17360
17361
17362
17363
17364var TextCellEditor = /** @class */ (function (_super) {
17365 __extends(TextCellEditor, _super);
17366 function TextCellEditor() {
17367 return _super.call(this, TextCellEditor.TEMPLATE) || this;
17368 }
17369 TextCellEditor.prototype.init = function (params) {
17370 this.params = params;
17371 var eInput = this.eInput;
17372 var startValue;
17373 // cellStartedEdit is only false if we are doing fullRow editing
17374 if (params.cellStartedEdit) {
17375 this.focusAfterAttached = true;
17376 if (params.eventKey === _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].BACKSPACE || params.eventKey === _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].DELETE) {
17377 startValue = '';
17378 }
17379 else if (params.charPress) {
17380 startValue = params.charPress;
17381 }
17382 else {
17383 startValue = this.getStartValue(params);
17384 if (params.eventKey !== _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].F2) {
17385 this.highlightAllOnFocus = true;
17386 }
17387 }
17388 }
17389 else {
17390 this.focusAfterAttached = false;
17391 startValue = this.getStartValue(params);
17392 }
17393 if (startValue != null) {
17394 eInput.setValue(startValue, true);
17395 }
17396 this.addManagedListener(eInput.getGui(), 'keydown', function (event) {
17397 var key = event.key;
17398 if (key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].PAGE_UP || key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].PAGE_DOWN) {
17399 event.preventDefault();
17400 }
17401 });
17402 };
17403 TextCellEditor.prototype.afterGuiAttached = function () {
17404 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
17405 var eInput = this.eInput;
17406 eInput.setInputAriaLabel(translate('ariaInputEditor', 'Input Editor'));
17407 if (!this.focusAfterAttached) {
17408 return;
17409 }
17410 // Added for AG-3238. We can't remove this explicit focus() because Chrome requires an input
17411 // to be focused before setSelectionRange will work. But it triggers a bug in Safari where
17412 // explicitly focusing then blurring an empty field will cause the parent container to scroll.
17413 if (!Object(_utils_browser__WEBPACK_IMPORTED_MODULE_3__["isBrowserSafari"])()) {
17414 eInput.getFocusableElement().focus();
17415 }
17416 var inputEl = eInput.getInputElement();
17417 if (this.highlightAllOnFocus) {
17418 inputEl.select();
17419 }
17420 else {
17421 // when we started editing, we want the caret at the end, not the start.
17422 // this comes into play in two scenarios:
17423 // a) when user hits F2
17424 // b) when user hits a printable character
17425 var value = eInput.getValue();
17426 var len = (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(value) && value.length) || 0;
17427 if (len) {
17428 inputEl.setSelectionRange(len, len);
17429 }
17430 }
17431 };
17432 // gets called when tabbing trough cells and in full row edit mode
17433 TextCellEditor.prototype.focusIn = function () {
17434 var eInput = this.eInput;
17435 var focusEl = eInput.getFocusableElement();
17436 var inputEl = eInput.getInputElement();
17437 focusEl.focus();
17438 inputEl.select();
17439 };
17440 TextCellEditor.prototype.getValue = function () {
17441 var eInput = this.eInput;
17442 return this.params.parseValue(eInput.getValue());
17443 };
17444 TextCellEditor.prototype.getStartValue = function (params) {
17445 var formatValue = params.useFormatter || params.column.getColDef().refData;
17446 return formatValue ? params.formatValue(params.value) : params.value;
17447 };
17448 TextCellEditor.prototype.isPopup = function () {
17449 return false;
17450 };
17451 TextCellEditor.TEMPLATE = '<div class="ag-cell-edit-wrapper"><ag-input-text-field class="ag-cell-editor" ref="eInput"></ag-input-text-field></div>';
17452 __decorate([
17453 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eInput')
17454 ], TextCellEditor.prototype, "eInput", void 0);
17455 return TextCellEditor;
17456}(_widgets_popupComponent__WEBPACK_IMPORTED_MODULE_0__["PopupComponent"]));
17457
17458
17459
17460
17461
17462/***/ }),
17463/* 90 */
17464/***/ (function(module, __webpack_exports__, __webpack_require__) {
17465
17466"use strict";
17467__webpack_require__.r(__webpack_exports__);
17468/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AnimateShowChangeCellRenderer", function() { return AnimateShowChangeCellRenderer; });
17469/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
17470/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(36);
17471/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
17472/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42);
17473/**
17474 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
17475 * @version v27.3.0
17476 * @link https://www.ag-grid.com/
17477 * @license MIT
17478 */
17479var __extends = (undefined && undefined.__extends) || (function () {
17480 var extendStatics = function (d, b) {
17481 extendStatics = Object.setPrototypeOf ||
17482 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
17483 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
17484 return extendStatics(d, b);
17485 };
17486 return function (d, b) {
17487 extendStatics(d, b);
17488 function __() { this.constructor = d; }
17489 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
17490 };
17491})();
17492var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
17493 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17494 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17495 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
17496 return c > 3 && r && Object.defineProperty(target, key, r), r;
17497};
17498
17499
17500
17501
17502var ARROW_UP = '\u2191';
17503var ARROW_DOWN = '\u2193';
17504var AnimateShowChangeCellRenderer = /** @class */ (function (_super) {
17505 __extends(AnimateShowChangeCellRenderer, _super);
17506 function AnimateShowChangeCellRenderer() {
17507 var _this = _super.call(this, AnimateShowChangeCellRenderer.TEMPLATE) || this;
17508 _this.refreshCount = 0;
17509 return _this;
17510 }
17511 AnimateShowChangeCellRenderer.prototype.init = function (params) {
17512 // this.params = params;
17513 this.eValue = this.queryForHtmlElement('.ag-value-change-value');
17514 this.eDelta = this.queryForHtmlElement('.ag-value-change-delta');
17515 this.refresh(params);
17516 };
17517 AnimateShowChangeCellRenderer.prototype.showDelta = function (params, delta) {
17518 var absDelta = Math.abs(delta);
17519 var valueFormatted = params.formatValue(absDelta);
17520 var valueToUse = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(valueFormatted) ? valueFormatted : absDelta;
17521 var deltaUp = (delta >= 0);
17522 if (deltaUp) {
17523 this.eDelta.innerHTML = ARROW_UP + valueToUse;
17524 }
17525 else {
17526 // because negative, use ABS to remove sign
17527 this.eDelta.innerHTML = ARROW_DOWN + valueToUse;
17528 }
17529 this.eDelta.classList.toggle('ag-value-change-delta-up', deltaUp);
17530 this.eDelta.classList.toggle('ag-value-change-delta-down', !deltaUp);
17531 };
17532 AnimateShowChangeCellRenderer.prototype.setTimerToRemoveDelta = function () {
17533 var _this = this;
17534 // the refreshCount makes sure that if the value updates again while
17535 // the below timer is waiting, then the below timer will realise it
17536 // is not the most recent and will not try to remove the delta value.
17537 this.refreshCount++;
17538 var refreshCountCopy = this.refreshCount;
17539 window.setTimeout(function () {
17540 if (refreshCountCopy === _this.refreshCount) {
17541 _this.hideDeltaValue();
17542 }
17543 }, 2000);
17544 };
17545 AnimateShowChangeCellRenderer.prototype.hideDeltaValue = function () {
17546 this.eValue.classList.remove('ag-value-change-value-highlight');
17547 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["clearElement"])(this.eDelta);
17548 };
17549 AnimateShowChangeCellRenderer.prototype.refresh = function (params) {
17550 var value = params.value;
17551 if (value === this.lastValue) {
17552 return false;
17553 }
17554 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(params.valueFormatted)) {
17555 this.eValue.innerHTML = params.valueFormatted;
17556 }
17557 else if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(params.value)) {
17558 this.eValue.innerHTML = value;
17559 }
17560 else {
17561 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["clearElement"])(this.eValue);
17562 }
17563 // we don't show the delta if we are in the middle of a filter. see comment on FilterManager
17564 // with regards processingFilterChange
17565 if (this.filterManager.isSuppressFlashingCellsBecauseFiltering()) {
17566 return false;
17567 }
17568 if (typeof value === 'number' && typeof this.lastValue === 'number') {
17569 var delta = value - this.lastValue;
17570 this.showDelta(params, delta);
17571 }
17572 // highlight the current value, but only if it's not new, otherwise it
17573 // would get highlighted first time the value is shown
17574 if (this.lastValue) {
17575 this.eValue.classList.add('ag-value-change-value-highlight');
17576 }
17577 this.setTimerToRemoveDelta();
17578 this.lastValue = value;
17579 return true;
17580 };
17581 AnimateShowChangeCellRenderer.TEMPLATE = '<span>' +
17582 '<span class="ag-value-change-delta"></span>' +
17583 '<span class="ag-value-change-value"></span>' +
17584 '</span>';
17585 __decorate([
17586 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('filterManager')
17587 ], AnimateShowChangeCellRenderer.prototype, "filterManager", void 0);
17588 return AnimateShowChangeCellRenderer;
17589}(_widgets_component__WEBPACK_IMPORTED_MODULE_1__["Component"]));
17590
17591
17592
17593
17594
17595/***/ }),
17596/* 91 */
17597/***/ (function(module, __webpack_exports__, __webpack_require__) {
17598
17599"use strict";
17600__webpack_require__.r(__webpack_exports__);
17601/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AnimateSlideCellRenderer", function() { return AnimateSlideCellRenderer; });
17602/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
17603/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(36);
17604/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
17605/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7);
17606/**
17607 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
17608 * @version v27.3.0
17609 * @link https://www.ag-grid.com/
17610 * @license MIT
17611 */
17612var __extends = (undefined && undefined.__extends) || (function () {
17613 var extendStatics = function (d, b) {
17614 extendStatics = Object.setPrototypeOf ||
17615 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
17616 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
17617 return extendStatics(d, b);
17618 };
17619 return function (d, b) {
17620 extendStatics(d, b);
17621 function __() { this.constructor = d; }
17622 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
17623 };
17624})();
17625var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
17626 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17627 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17628 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
17629 return c > 3 && r && Object.defineProperty(target, key, r), r;
17630};
17631
17632
17633
17634
17635var AnimateSlideCellRenderer = /** @class */ (function (_super) {
17636 __extends(AnimateSlideCellRenderer, _super);
17637 function AnimateSlideCellRenderer() {
17638 var _this = _super.call(this, AnimateSlideCellRenderer.TEMPLATE) || this;
17639 _this.refreshCount = 0;
17640 _this.eCurrent = _this.queryForHtmlElement('.ag-value-slide-current');
17641 return _this;
17642 }
17643 AnimateSlideCellRenderer.prototype.init = function (params) {
17644 this.refresh(params);
17645 };
17646 AnimateSlideCellRenderer.prototype.addSlideAnimation = function () {
17647 var _this = this;
17648 this.refreshCount++;
17649 // below we keep checking this, and stop working on the animation
17650 // if it no longer matches - this means another animation has started
17651 // and this one is stale.
17652 var refreshCountCopy = this.refreshCount;
17653 // if old animation, remove it
17654 if (this.ePrevious) {
17655 this.getGui().removeChild(this.ePrevious);
17656 }
17657 this.ePrevious = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["loadTemplate"])('<span class="ag-value-slide-previous ag-value-slide-out"></span>');
17658 this.ePrevious.innerHTML = this.eCurrent.innerHTML;
17659 this.getGui().insertBefore(this.ePrevious, this.eCurrent);
17660 // having timeout of 0 allows use to skip to the next css turn,
17661 // so we know the previous css classes have been applied. so the
17662 // complex set of setTimeout below creates the animation
17663 window.setTimeout(function () {
17664 if (refreshCountCopy !== _this.refreshCount) {
17665 return;
17666 }
17667 _this.ePrevious.classList.add('ag-value-slide-out-end');
17668 }, 50);
17669 window.setTimeout(function () {
17670 if (refreshCountCopy !== _this.refreshCount) {
17671 return;
17672 }
17673 _this.getGui().removeChild(_this.ePrevious);
17674 _this.ePrevious = null;
17675 }, 3000);
17676 };
17677 AnimateSlideCellRenderer.prototype.refresh = function (params) {
17678 var value = params.value;
17679 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["missing"])(value)) {
17680 value = '';
17681 }
17682 if (value === this.lastValue) {
17683 return false;
17684 }
17685 // we don't show the delta if we are in the middle of a filter. see comment on FilterManager
17686 // with regards processingFilterChange
17687 if (this.filterManager.isSuppressFlashingCellsBecauseFiltering()) {
17688 return false;
17689 }
17690 this.addSlideAnimation();
17691 this.lastValue = value;
17692 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["exists"])(params.valueFormatted)) {
17693 this.eCurrent.innerHTML = params.valueFormatted;
17694 }
17695 else if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["exists"])(params.value)) {
17696 this.eCurrent.innerHTML = value;
17697 }
17698 else {
17699 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["clearElement"])(this.eCurrent);
17700 }
17701 return true;
17702 };
17703 AnimateSlideCellRenderer.TEMPLATE = "<span>\n <span class=\"ag-value-slide-current\"></span>\n </span>";
17704 __decorate([
17705 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('filterManager')
17706 ], AnimateSlideCellRenderer.prototype, "filterManager", void 0);
17707 return AnimateSlideCellRenderer;
17708}(_widgets_component__WEBPACK_IMPORTED_MODULE_1__["Component"]));
17709
17710
17711
17712
17713
17714/***/ }),
17715/* 92 */
17716/***/ (function(module, __webpack_exports__, __webpack_require__) {
17717
17718"use strict";
17719__webpack_require__.r(__webpack_exports__);
17720/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GroupCellRenderer", function() { return GroupCellRenderer; });
17721/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(44);
17722/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42);
17723/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(36);
17724/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(57);
17725/* harmony import */ var _groupCellRendererCtrl__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(93);
17726/**
17727 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
17728 * @version v27.3.0
17729 * @link https://www.ag-grid.com/
17730 * @license MIT
17731 */
17732var __extends = (undefined && undefined.__extends) || (function () {
17733 var extendStatics = function (d, b) {
17734 extendStatics = Object.setPrototypeOf ||
17735 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
17736 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
17737 return extendStatics(d, b);
17738 };
17739 return function (d, b) {
17740 extendStatics(d, b);
17741 function __() { this.constructor = d; }
17742 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
17743 };
17744})();
17745var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
17746 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17747 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17748 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
17749 return c > 3 && r && Object.defineProperty(target, key, r), r;
17750};
17751
17752
17753
17754
17755
17756var GroupCellRenderer = /** @class */ (function (_super) {
17757 __extends(GroupCellRenderer, _super);
17758 function GroupCellRenderer() {
17759 return _super.call(this, GroupCellRenderer.TEMPLATE) || this;
17760 }
17761 GroupCellRenderer.prototype.init = function (params) {
17762 var _this = this;
17763 var compProxy = {
17764 setInnerRenderer: function (compDetails, valueToDisplay) { return _this.setRenderDetails(compDetails, valueToDisplay); },
17765 setChildCount: function (count) { return _this.eChildCount.innerHTML = count; },
17766 addOrRemoveCssClass: function (cssClass, value) { return _this.addOrRemoveCssClass(cssClass, value); },
17767 setContractedDisplayed: function (expanded) { return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__["setDisplayed"])(_this.eContracted, expanded); },
17768 setExpandedDisplayed: function (expanded) { return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__["setDisplayed"])(_this.eExpanded, expanded); },
17769 setCheckboxVisible: function (visible) { return _this.eCheckbox.classList.toggle('ag-invisible', !visible); }
17770 };
17771 var ctrl = this.createManagedBean(new _groupCellRendererCtrl__WEBPACK_IMPORTED_MODULE_4__["GroupCellRendererCtrl"]());
17772 var fullWidth = !params.colDef;
17773 var eGui = this.getGui();
17774 ctrl.init(compProxy, eGui, this.eCheckbox, this.eExpanded, this.eContracted, this.constructor, params);
17775 if (fullWidth) {
17776 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_0__["setAriaRole"])(eGui, 'gridcell');
17777 }
17778 };
17779 GroupCellRenderer.prototype.setRenderDetails = function (compDetails, valueToDisplay) {
17780 var _this = this;
17781 if (compDetails) {
17782 var componentPromise = compDetails.newAgStackInstance();
17783 if (!componentPromise) {
17784 return;
17785 }
17786 componentPromise.then(function (comp) {
17787 if (!comp) {
17788 return;
17789 }
17790 var destroyComp = function () { return _this.context.destroyBean(comp); };
17791 if (_this.isAlive()) {
17792 _this.eValue.appendChild(comp.getGui());
17793 _this.addDestroyFunc(destroyComp);
17794 }
17795 else {
17796 destroyComp();
17797 }
17798 });
17799 }
17800 else {
17801 this.eValue.innerText = valueToDisplay;
17802 }
17803 };
17804 // this is a user component, and IComponent has "public destroy()" as part of the interface.
17805 // so we need to have public here instead of private or protected
17806 GroupCellRenderer.prototype.destroy = function () {
17807 this.getContext().destroyBean(this.innerCellRenderer);
17808 _super.prototype.destroy.call(this);
17809 };
17810 GroupCellRenderer.prototype.refresh = function () {
17811 return false;
17812 };
17813 GroupCellRenderer.TEMPLATE = "<span class=\"ag-cell-wrapper\">\n <span class=\"ag-group-expanded\" ref=\"eExpanded\"></span>\n <span class=\"ag-group-contracted\" ref=\"eContracted\"></span>\n <span class=\"ag-group-checkbox ag-invisible\" ref=\"eCheckbox\"></span>\n <span class=\"ag-group-value\" ref=\"eValue\"></span>\n <span class=\"ag-group-child-count\" ref=\"eChildCount\"></span>\n </span>";
17814 __decorate([
17815 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_3__["RefSelector"])('eExpanded')
17816 ], GroupCellRenderer.prototype, "eExpanded", void 0);
17817 __decorate([
17818 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_3__["RefSelector"])('eContracted')
17819 ], GroupCellRenderer.prototype, "eContracted", void 0);
17820 __decorate([
17821 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_3__["RefSelector"])('eCheckbox')
17822 ], GroupCellRenderer.prototype, "eCheckbox", void 0);
17823 __decorate([
17824 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_3__["RefSelector"])('eValue')
17825 ], GroupCellRenderer.prototype, "eValue", void 0);
17826 __decorate([
17827 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_3__["RefSelector"])('eChildCount')
17828 ], GroupCellRenderer.prototype, "eChildCount", void 0);
17829 return GroupCellRenderer;
17830}(_widgets_component__WEBPACK_IMPORTED_MODULE_2__["Component"]));
17831
17832
17833
17834
17835
17836/***/ }),
17837/* 93 */
17838/***/ (function(module, __webpack_exports__, __webpack_require__) {
17839
17840"use strict";
17841__webpack_require__.r(__webpack_exports__);
17842/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GroupCellRendererCtrl", function() { return GroupCellRendererCtrl; });
17843/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
17844/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65);
17845/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(20);
17846/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12);
17847/* harmony import */ var _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(94);
17848/* harmony import */ var _utils_event__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(21);
17849/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(44);
17850/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(14);
17851/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(7);
17852/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(48);
17853/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(13);
17854/* harmony import */ var _checkboxSelectionComponent__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(95);
17855/* harmony import */ var _row_rowDragComp__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(96);
17856/**
17857 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
17858 * @version v27.3.0
17859 * @link https://www.ag-grid.com/
17860 * @license MIT
17861 */
17862var __extends = (undefined && undefined.__extends) || (function () {
17863 var extendStatics = function (d, b) {
17864 extendStatics = Object.setPrototypeOf ||
17865 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
17866 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
17867 return extendStatics(d, b);
17868 };
17869 return function (d, b) {
17870 extendStatics(d, b);
17871 function __() { this.constructor = d; }
17872 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
17873 };
17874})();
17875var __assign = (undefined && undefined.__assign) || function () {
17876 __assign = Object.assign || function(t) {
17877 for (var s, i = 1, n = arguments.length; i < n; i++) {
17878 s = arguments[i];
17879 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
17880 t[p] = s[p];
17881 }
17882 return t;
17883 };
17884 return __assign.apply(this, arguments);
17885};
17886var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
17887 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17888 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17889 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
17890 return c > 3 && r && Object.defineProperty(target, key, r), r;
17891};
17892
17893
17894
17895
17896
17897
17898
17899
17900
17901
17902
17903
17904
17905var GroupCellRendererCtrl = /** @class */ (function (_super) {
17906 __extends(GroupCellRendererCtrl, _super);
17907 function GroupCellRendererCtrl() {
17908 return _super !== null && _super.apply(this, arguments) || this;
17909 }
17910 GroupCellRendererCtrl.prototype.init = function (comp, eGui, eCheckbox, eExpanded, eContracted, compClass, params) {
17911 this.params = params;
17912 this.eGui = eGui;
17913 this.eCheckbox = eCheckbox;
17914 this.eExpanded = eExpanded;
17915 this.eContracted = eContracted;
17916 this.comp = comp;
17917 this.compClass = compClass;
17918 var topLevelFooter = this.isTopLevelFooter();
17919 var embeddedRowMismatch = this.isEmbeddedRowMismatch();
17920 // This allows for empty strings to appear as groups since
17921 // it will only return for null or undefined.
17922 var nullValue = params.value == null;
17923 var skipCell = false;
17924 // if the groupCellRenderer is inside of a footer and groupHideOpenParents is true
17925 // we should only display the groupCellRenderer if the current column is the rowGroupedColumn
17926 if (this.gridOptionsWrapper.isGroupIncludeFooter() && this.gridOptionsWrapper.isGroupHideOpenParents()) {
17927 var node = params.node;
17928 if (node.footer) {
17929 var showRowGroup = params.colDef && params.colDef.showRowGroup;
17930 var rowGroupColumnId = node.rowGroupColumn && node.rowGroupColumn.getColId();
17931 skipCell = showRowGroup !== rowGroupColumnId;
17932 }
17933 }
17934 this.cellIsBlank = topLevelFooter ? false : (embeddedRowMismatch || nullValue || skipCell);
17935 if (this.cellIsBlank) {
17936 return;
17937 }
17938 this.setupShowingValueForOpenedParent();
17939 this.findDisplayedGroupNode();
17940 this.addFullWidthRowDraggerIfNeeded();
17941 this.addExpandAndContract();
17942 this.addCheckboxIfNeeded();
17943 this.addValueElement();
17944 this.setupIndent();
17945 this.refreshAriaExpanded();
17946 };
17947 GroupCellRendererCtrl.prototype.destroy = function () {
17948 _super.prototype.destroy.call(this);
17949 // property cleanup to avoid memory leaks
17950 this.expandListener = null;
17951 };
17952 GroupCellRendererCtrl.prototype.refreshAriaExpanded = function () {
17953 var _a = this.params, node = _a.node, eParentOfValue = _a.eParentOfValue;
17954 if (this.expandListener) {
17955 this.expandListener = this.expandListener();
17956 }
17957 if (!this.isExpandable()) {
17958 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_6__["removeAriaExpanded"])(eParentOfValue);
17959 return;
17960 }
17961 var listener = function () {
17962 // for react, we don't use JSX, as setting attributes via jsx is slower
17963 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_6__["setAriaExpanded"])(eParentOfValue, !!node.expanded);
17964 };
17965 this.expandListener = this.addManagedListener(node, _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__["RowNode"].EVENT_EXPANDED_CHANGED, listener) || null;
17966 listener();
17967 };
17968 GroupCellRendererCtrl.prototype.isTopLevelFooter = function () {
17969 if (!this.gridOptionsWrapper.isGroupIncludeTotalFooter()) {
17970 return false;
17971 }
17972 if (this.params.value != null || this.params.node.level != -1) {
17973 return false;
17974 }
17975 // at this point, we know it's the root node and there is no value present, so it's a footer cell.
17976 // the only thing to work out is if we are displaying groups across multiple
17977 // columns (groupMultiAutoColumn=true), we only want 'total' to appear in the first column.
17978 var colDef = this.params.colDef;
17979 var doingFullWidth = colDef == null;
17980 if (doingFullWidth) {
17981 return true;
17982 }
17983 if (colDef.showRowGroup === true) {
17984 return true;
17985 }
17986 var rowGroupCols = this.columnModel.getRowGroupColumns();
17987 // this is a sanity check, rowGroupCols should always be present
17988 if (!rowGroupCols || rowGroupCols.length === 0) {
17989 return true;
17990 }
17991 var firstRowGroupCol = rowGroupCols[0];
17992 return firstRowGroupCol.getId() === colDef.showRowGroup;
17993 };
17994 // if we are doing embedded full width rows, we only show the renderer when
17995 // in the body, or if pinning in the pinned section, or if pinning and RTL,
17996 // in the right section. otherwise we would have the cell repeated in each section.
17997 GroupCellRendererCtrl.prototype.isEmbeddedRowMismatch = function () {
17998 if (!this.params.fullWidth || !this.gridOptionsWrapper.isEmbedFullWidthRows()) {
17999 return false;
18000 }
18001 var pinnedLeftCell = this.params.pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_LEFT;
18002 var pinnedRightCell = this.params.pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_RIGHT;
18003 var bodyCell = !pinnedLeftCell && !pinnedRightCell;
18004 if (this.gridOptionsWrapper.isEnableRtl()) {
18005 if (this.columnModel.isPinningLeft()) {
18006 return !pinnedRightCell;
18007 }
18008 return !bodyCell;
18009 }
18010 if (this.columnModel.isPinningLeft()) {
18011 return !pinnedLeftCell;
18012 }
18013 return !bodyCell;
18014 };
18015 GroupCellRendererCtrl.prototype.findDisplayedGroupNode = function () {
18016 var column = this.params.column;
18017 var rowNode = this.params.node;
18018 if (this.showingValueForOpenedParent) {
18019 var pointer = rowNode.parent;
18020 while (pointer != null) {
18021 if (pointer.rowGroupColumn && column.isRowGroupDisplayed(pointer.rowGroupColumn.getId())) {
18022 this.displayedGroupNode = pointer;
18023 break;
18024 }
18025 pointer = pointer.parent;
18026 }
18027 }
18028 // if we didn't find a displayed group, set it to the row node
18029 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_8__["missing"])(this.displayedGroupNode)) {
18030 this.displayedGroupNode = rowNode;
18031 }
18032 };
18033 GroupCellRendererCtrl.prototype.setupShowingValueForOpenedParent = function () {
18034 // note - this code depends on sortService.updateGroupDataForHiddenOpenParents, where group data
18035 // is updated to reflect the dragged down parents
18036 var rowNode = this.params.node;
18037 var column = this.params.column;
18038 if (!this.gridOptionsWrapper.isGroupHideOpenParents()) {
18039 this.showingValueForOpenedParent = false;
18040 return;
18041 }
18042 // hideOpenParents means rowNode.groupData can have data for the group this column is displaying, even though
18043 // this rowNode isn't grouping by the column we are displaying
18044 // if no groupData at all, we are not showing a parent value
18045 if (!rowNode.groupData) {
18046 this.showingValueForOpenedParent = false;
18047 return;
18048 }
18049 // this is the normal case, in that we are showing a group for which this column is configured. note that
18050 // this means the Row Group is closed (if it was open, we would not be displaying it)
18051 var showingGroupNode = rowNode.rowGroupColumn != null;
18052 if (showingGroupNode) {
18053 var keyOfGroupingColumn = rowNode.rowGroupColumn.getId();
18054 var configuredToShowThisGroupLevel = column.isRowGroupDisplayed(keyOfGroupingColumn);
18055 // if showing group as normal, we didn't take group info from parent
18056 if (configuredToShowThisGroupLevel) {
18057 this.showingValueForOpenedParent = false;
18058 return;
18059 }
18060 }
18061 // see if we are showing a Group Value for the Displayed Group. if we are showing a group value, and this Row Node
18062 // is not grouping by this Displayed Group, we must of gotten the value from a parent node
18063 var valPresent = rowNode.groupData[column.getId()] != null;
18064 this.showingValueForOpenedParent = valPresent;
18065 };
18066 GroupCellRendererCtrl.prototype.addValueElement = function () {
18067 if (this.displayedGroupNode.footer) {
18068 this.addFooterValue();
18069 }
18070 else {
18071 this.addGroupValue();
18072 this.addChildCount();
18073 }
18074 };
18075 GroupCellRendererCtrl.prototype.addGroupValue = function () {
18076 // we try and use the cellRenderer of the column used for the grouping if we can
18077 var paramsAdjusted = this.adjustParamsWithDetailsFromRelatedColumn();
18078 var innerCompDetails = this.getInnerCompDetails(paramsAdjusted);
18079 var valueFormatted = paramsAdjusted.valueFormatted, value = paramsAdjusted.value;
18080 var valueWhenNoRenderer = valueFormatted != null ? valueFormatted : value;
18081 this.comp.setInnerRenderer(innerCompDetails, valueWhenNoRenderer);
18082 };
18083 GroupCellRendererCtrl.prototype.adjustParamsWithDetailsFromRelatedColumn = function () {
18084 var relatedColumn = this.displayedGroupNode.rowGroupColumn;
18085 var column = this.params.column;
18086 if (!relatedColumn) {
18087 return this.params;
18088 }
18089 var notFullWidth = column != null;
18090 if (notFullWidth) {
18091 var showingThisRowGroup = column.isRowGroupDisplayed(relatedColumn.getId());
18092 if (!showingThisRowGroup) {
18093 return this.params;
18094 }
18095 }
18096 var params = this.params;
18097 var _a = this.params, value = _a.value, node = _a.node;
18098 var valueFormatted = this.valueFormatterService.formatValue(relatedColumn, node, value);
18099 // we don't update the original params, as they could of come through React,
18100 // as react has RowGroupCellRenderer, which means the params could be props which
18101 // would be read only
18102 var paramsAdjusted = __assign(__assign({}, params), { valueFormatted: valueFormatted });
18103 return paramsAdjusted;
18104 };
18105 GroupCellRendererCtrl.prototype.addFooterValue = function () {
18106 var footerValueGetter = this.params.footerValueGetter;
18107 var footerValue = '';
18108 if (footerValueGetter) {
18109 // params is same as we were given, except we set the value as the item to display
18110 var paramsClone = Object(_utils_object__WEBPACK_IMPORTED_MODULE_10__["cloneObject"])(this.params);
18111 paramsClone.value = this.params.value;
18112 if (typeof footerValueGetter === 'function') {
18113 footerValue = footerValueGetter(paramsClone);
18114 }
18115 else if (typeof footerValueGetter === 'string') {
18116 footerValue = this.expressionService.evaluate(footerValueGetter, paramsClone);
18117 }
18118 else {
18119 console.warn('AG Grid: footerValueGetter should be either a function or a string (expression)');
18120 }
18121 }
18122 else {
18123 footerValue = 'Total ' + (this.params.value != null ? this.params.value : '');
18124 }
18125 var innerCompDetails = this.getInnerCompDetails(this.params);
18126 this.comp.setInnerRenderer(innerCompDetails, footerValue);
18127 };
18128 GroupCellRendererCtrl.prototype.getInnerCompDetails = function (params) {
18129 var _this = this;
18130 // for full width rows, we don't do any of the below
18131 if (params.fullWidth) {
18132 return this.userComponentFactory.getFullWidthGroupRowInnerCellRenderer(this.gridOptions.groupRowRendererParams, params);
18133 }
18134 // when grouping, the normal case is we use the cell renderer of the grouped column. eg if grouping by country
18135 // and then rating, we will use the country cell renderer for each country group row and likewise the rating
18136 // cell renderer for each rating group row.
18137 //
18138 // however if the user has innerCellRenderer defined, this gets preference and we don't use cell renderers
18139 // of the grouped columns.
18140 //
18141 // so we check and use in the following order:
18142 //
18143 // 1) thisColDef.cellRendererParams.innerRenderer of the column showing the groups (eg auto group column)
18144 // 2) groupedColDef.cellRenderer of the grouped column
18145 // 3) groupedColDef.cellRendererParams.innerRenderer
18146 // we check if cell renderer provided for the group cell renderer, eg colDef.cellRendererParams.innerRenderer
18147 var innerCompDetails = this.userComponentFactory
18148 .getInnerRendererDetails(params, params);
18149 // avoid using GroupCellRenderer again, otherwise stack overflow, as we insert same renderer again and again.
18150 // this covers off chance user is grouping by a column that is also configured with GroupCellRenderer
18151 var isGroupRowRenderer = function (details) { return details && details.componentClass == _this.compClass; };
18152 if (innerCompDetails && !isGroupRowRenderer(innerCompDetails)) {
18153 // use the renderer defined in cellRendererParams.innerRenderer
18154 return innerCompDetails;
18155 }
18156 var relatedColumn = this.displayedGroupNode.rowGroupColumn;
18157 var relatedColDef = relatedColumn ? relatedColumn.getColDef() : undefined;
18158 if (!relatedColDef) {
18159 return;
18160 }
18161 // otherwise see if we can use the cellRenderer of the column we are grouping by
18162 var relatedCompDetails = this.userComponentFactory
18163 .getCellRendererDetails(relatedColDef, params);
18164 if (relatedCompDetails && !isGroupRowRenderer(relatedCompDetails)) {
18165 // Only if the original column is using a specific renderer, it it is a using a DEFAULT one ignore it
18166 return relatedCompDetails;
18167 }
18168 if (isGroupRowRenderer(relatedCompDetails) &&
18169 relatedColDef.cellRendererParams &&
18170 relatedColDef.cellRendererParams.innerRenderer) {
18171 // edge case - this comes from a column which has been grouped dynamically, that has a renderer 'group'
18172 // and has an inner cell renderer
18173 var res = this.userComponentFactory.getInnerRendererDetails(relatedColDef.cellRendererParams, params);
18174 return res;
18175 }
18176 };
18177 GroupCellRendererCtrl.prototype.addChildCount = function () {
18178 // only include the child count if it's included, eg if user doing custom aggregation,
18179 // then this could be left out, or set to -1, ie no child count
18180 if (this.params.suppressCount) {
18181 return;
18182 }
18183 this.addManagedListener(this.displayedGroupNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__["RowNode"].EVENT_ALL_CHILDREN_COUNT_CHANGED, this.updateChildCount.bind(this));
18184 // filtering changes the child count, so need to cater for it
18185 this.updateChildCount();
18186 };
18187 GroupCellRendererCtrl.prototype.updateChildCount = function () {
18188 var allChildrenCount = this.displayedGroupNode.allChildrenCount;
18189 var showingGroupForThisNode = this.isShowRowGroupForThisRow();
18190 var showCount = showingGroupForThisNode && allChildrenCount != null && allChildrenCount >= 0;
18191 var countString = showCount ? "(" + allChildrenCount + ")" : "";
18192 this.comp.setChildCount(countString);
18193 };
18194 GroupCellRendererCtrl.prototype.isShowRowGroupForThisRow = function () {
18195 if (this.gridOptionsWrapper.isTreeData()) {
18196 return true;
18197 }
18198 var rowGroupColumn = this.displayedGroupNode.rowGroupColumn;
18199 if (!rowGroupColumn) {
18200 return false;
18201 }
18202 // column is null for fullWidthRows
18203 var column = this.params.column;
18204 var thisColumnIsInterested = column == null || column.isRowGroupDisplayed(rowGroupColumn.getId());
18205 return thisColumnIsInterested;
18206 };
18207 GroupCellRendererCtrl.prototype.addExpandAndContract = function () {
18208 var params = this.params;
18209 var eExpandedIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_9__["createIconNoSpan"])('groupExpanded', this.gridOptionsWrapper, null);
18210 var eContractedIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_9__["createIconNoSpan"])('groupContracted', this.gridOptionsWrapper, null);
18211 if (eExpandedIcon) {
18212 this.eExpanded.appendChild(eExpandedIcon);
18213 }
18214 if (eContractedIcon) {
18215 this.eContracted.appendChild(eContractedIcon);
18216 }
18217 var eGroupCell = params.eGridCell;
18218 // if editing groups, then double click is to start editing
18219 if (!this.gridOptionsWrapper.isEnableGroupEdit() && this.isExpandable() && !params.suppressDoubleClickExpand) {
18220 this.addManagedListener(eGroupCell, 'dblclick', this.onCellDblClicked.bind(this));
18221 }
18222 this.addManagedListener(this.eExpanded, 'click', this.onExpandClicked.bind(this));
18223 this.addManagedListener(this.eContracted, 'click', this.onExpandClicked.bind(this));
18224 // expand / contract as the user hits enter
18225 this.addManagedListener(eGroupCell, 'keydown', this.onKeyDown.bind(this));
18226 this.addManagedListener(params.node, _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__["RowNode"].EVENT_EXPANDED_CHANGED, this.showExpandAndContractIcons.bind(this));
18227 this.showExpandAndContractIcons();
18228 // because we don't show the expand / contract when there are no children, we need to check every time
18229 // the number of children change.
18230 var expandableChangedListener = this.onRowNodeIsExpandableChanged.bind(this);
18231 this.addManagedListener(this.displayedGroupNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__["RowNode"].EVENT_ALL_CHILDREN_COUNT_CHANGED, expandableChangedListener);
18232 this.addManagedListener(this.displayedGroupNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__["RowNode"].EVENT_MASTER_CHANGED, expandableChangedListener);
18233 this.addManagedListener(this.displayedGroupNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__["RowNode"].EVENT_GROUP_CHANGED, expandableChangedListener);
18234 this.addManagedListener(this.displayedGroupNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__["RowNode"].EVENT_HAS_CHILDREN_CHANGED, expandableChangedListener);
18235 };
18236 GroupCellRendererCtrl.prototype.onExpandClicked = function (mouseEvent) {
18237 if (Object(_utils_event__WEBPACK_IMPORTED_MODULE_5__["isStopPropagationForAgGrid"])(mouseEvent)) {
18238 return;
18239 }
18240 // so if we expand a node, it does not also get selected.
18241 Object(_utils_event__WEBPACK_IMPORTED_MODULE_5__["stopPropagationForAgGrid"])(mouseEvent);
18242 this.onExpandOrContract(mouseEvent);
18243 };
18244 GroupCellRendererCtrl.prototype.onExpandOrContract = function (e) {
18245 // must use the displayedGroup, so if data was dragged down, we expand the parent, not this row
18246 var rowNode = this.displayedGroupNode;
18247 var nextExpandState = !rowNode.expanded;
18248 rowNode.setExpanded(nextExpandState, e);
18249 };
18250 GroupCellRendererCtrl.prototype.isExpandable = function () {
18251 if (this.showingValueForOpenedParent) {
18252 return true;
18253 }
18254 var rowNode = this.displayedGroupNode;
18255 var reducedLeafNode = this.columnModel.isPivotMode() && rowNode.leafGroup;
18256 var expandableGroup = rowNode.isExpandable() && !rowNode.footer && !reducedLeafNode;
18257 if (!expandableGroup) {
18258 return false;
18259 }
18260 // column is null for fullWidthRows
18261 var column = this.params.column;
18262 var displayingForOneColumnOnly = column != null && typeof column.getColDef().showRowGroup === 'string';
18263 if (displayingForOneColumnOnly) {
18264 var showing = this.isShowRowGroupForThisRow();
18265 return showing;
18266 }
18267 return true;
18268 };
18269 GroupCellRendererCtrl.prototype.showExpandAndContractIcons = function () {
18270 var _a = this, params = _a.params, displayedGroup = _a.displayedGroupNode, columnModel = _a.columnModel;
18271 var node = params.node;
18272 var isExpandable = this.isExpandable();
18273 if (isExpandable) {
18274 // if expandable, show one based on expand state.
18275 // if we were dragged down, means our parent is always expanded
18276 var expanded = this.showingValueForOpenedParent ? true : node.expanded;
18277 this.comp.setExpandedDisplayed(expanded);
18278 this.comp.setContractedDisplayed(!expanded);
18279 }
18280 else {
18281 // it not expandable, show neither
18282 this.comp.setExpandedDisplayed(false);
18283 this.comp.setContractedDisplayed(false);
18284 }
18285 // compensation padding for leaf nodes, so there is blank space instead of the expand icon
18286 var pivotMode = columnModel.isPivotMode();
18287 var pivotModeAndLeafGroup = pivotMode && displayedGroup.leafGroup;
18288 var addExpandableCss = isExpandable && !pivotModeAndLeafGroup;
18289 var isTotalFooterNode = node.footer && node.level === -1;
18290 this.comp.addOrRemoveCssClass('ag-cell-expandable', addExpandableCss);
18291 this.comp.addOrRemoveCssClass('ag-row-group', addExpandableCss);
18292 if (pivotMode) {
18293 this.comp.addOrRemoveCssClass('ag-pivot-leaf-group', pivotModeAndLeafGroup);
18294 }
18295 else if (!isTotalFooterNode) {
18296 this.comp.addOrRemoveCssClass('ag-row-group-leaf-indent', !addExpandableCss);
18297 }
18298 };
18299 GroupCellRendererCtrl.prototype.onRowNodeIsExpandableChanged = function () {
18300 // maybe if no children now, we should hide the expand / contract icons
18301 this.showExpandAndContractIcons();
18302 // if we have no children, this impacts the indent
18303 this.setIndent();
18304 this.refreshAriaExpanded();
18305 };
18306 GroupCellRendererCtrl.prototype.setupIndent = function () {
18307 // only do this if an indent - as this overwrites the padding that
18308 // the theme set, which will make things look 'not aligned' for the
18309 // first group level.
18310 var node = this.params.node;
18311 var suppressPadding = this.params.suppressPadding;
18312 if (!suppressPadding) {
18313 this.addManagedListener(node, _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__["RowNode"].EVENT_UI_LEVEL_CHANGED, this.setIndent.bind(this));
18314 this.setIndent();
18315 }
18316 };
18317 GroupCellRendererCtrl.prototype.setIndent = function () {
18318 if (this.gridOptionsWrapper.isGroupHideOpenParents()) {
18319 return;
18320 }
18321 var params = this.params;
18322 var rowNode = params.node;
18323 // if we are only showing one group column, we don't want to be indenting based on level
18324 var fullWithRow = !!params.colDef;
18325 var treeData = this.gridOptionsWrapper.isTreeData();
18326 var manyDimensionThisColumn = !fullWithRow || treeData || params.colDef.showRowGroup === true;
18327 var paddingCount = manyDimensionThisColumn ? rowNode.uiLevel : 0;
18328 var userProvidedPaddingPixelsTheDeprecatedWay = params.padding >= 0;
18329 if (userProvidedPaddingPixelsTheDeprecatedWay) {
18330 Object(_utils_function__WEBPACK_IMPORTED_MODULE_7__["doOnce"])(function () { return console.warn('AG Grid: cellRendererParams.padding no longer works, it was deprecated in since v14.2 and removed in v26, configuring padding for groupCellRenderer should be done with Sass variables and themes. Please see the AG Grid documentation page for Themes, in particular the property $row-group-indent-size.'); }, 'groupCellRenderer->doDeprecatedWay');
18331 }
18332 if (this.indentClass) {
18333 this.comp.addOrRemoveCssClass(this.indentClass, false);
18334 }
18335 this.indentClass = 'ag-row-group-indent-' + paddingCount;
18336 this.comp.addOrRemoveCssClass(this.indentClass, true);
18337 };
18338 GroupCellRendererCtrl.prototype.addFullWidthRowDraggerIfNeeded = function () {
18339 var _this = this;
18340 if (!this.params.fullWidth || !this.params.rowDrag) {
18341 return;
18342 }
18343 var rowDragComp = new _row_rowDragComp__WEBPACK_IMPORTED_MODULE_12__["RowDragComp"](function () { return _this.params.value; }, this.params.node);
18344 this.createManagedBean(rowDragComp, this.context);
18345 this.eGui.insertAdjacentElement('afterbegin', rowDragComp.getGui());
18346 };
18347 GroupCellRendererCtrl.prototype.isUserWantsSelected = function () {
18348 var paramsCheckbox = this.params.checkbox;
18349 if (typeof paramsCheckbox === 'function') {
18350 return paramsCheckbox(this.params);
18351 }
18352 return paramsCheckbox === true;
18353 };
18354 GroupCellRendererCtrl.prototype.addCheckboxIfNeeded = function () {
18355 var _this = this;
18356 var rowNode = this.displayedGroupNode;
18357 var checkboxNeeded = this.isUserWantsSelected() &&
18358 // footers cannot be selected
18359 !rowNode.footer &&
18360 // pinned rows cannot be selected
18361 !rowNode.rowPinned &&
18362 // details cannot be selected
18363 !rowNode.detail;
18364 if (checkboxNeeded) {
18365 var cbSelectionComponent_1 = new _checkboxSelectionComponent__WEBPACK_IMPORTED_MODULE_11__["CheckboxSelectionComponent"]();
18366 this.getContext().createBean(cbSelectionComponent_1);
18367 cbSelectionComponent_1.init({ rowNode: rowNode, column: this.params.column });
18368 this.eCheckbox.appendChild(cbSelectionComponent_1.getGui());
18369 this.addDestroyFunc(function () { return _this.getContext().destroyBean(cbSelectionComponent_1); });
18370 }
18371 this.comp.setCheckboxVisible(checkboxNeeded);
18372 };
18373 GroupCellRendererCtrl.prototype.onKeyDown = function (event) {
18374 var enterKeyPressed = event.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].ENTER;
18375 if (!enterKeyPressed || this.params.suppressEnterExpand) {
18376 return;
18377 }
18378 var cellEditable = this.params.column && this.params.column.isCellEditable(this.params.node);
18379 if (cellEditable) {
18380 return;
18381 }
18382 this.onExpandOrContract(event);
18383 };
18384 GroupCellRendererCtrl.prototype.onCellDblClicked = function (mouseEvent) {
18385 if (Object(_utils_event__WEBPACK_IMPORTED_MODULE_5__["isStopPropagationForAgGrid"])(mouseEvent)) {
18386 return;
18387 }
18388 // we want to avoid acting on double click events on the expand / contract icon,
18389 // as that icons already has expand / collapse functionality on it. otherwise if
18390 // the icon was double clicked, we would get 'click', 'click', 'dblclick' which
18391 // is open->close->open, however double click should be open->close only.
18392 var targetIsExpandIcon = Object(_utils_event__WEBPACK_IMPORTED_MODULE_5__["isElementInEventPath"])(this.eExpanded, mouseEvent)
18393 || Object(_utils_event__WEBPACK_IMPORTED_MODULE_5__["isElementInEventPath"])(this.eContracted, mouseEvent);
18394 if (!targetIsExpandIcon) {
18395 this.onExpandOrContract(mouseEvent);
18396 }
18397 };
18398 __decorate([
18399 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Autowired"])('expressionService')
18400 ], GroupCellRendererCtrl.prototype, "expressionService", void 0);
18401 __decorate([
18402 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Autowired"])('valueFormatterService')
18403 ], GroupCellRendererCtrl.prototype, "valueFormatterService", void 0);
18404 __decorate([
18405 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Autowired"])('columnModel')
18406 ], GroupCellRendererCtrl.prototype, "columnModel", void 0);
18407 __decorate([
18408 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Autowired"])('userComponentFactory')
18409 ], GroupCellRendererCtrl.prototype, "userComponentFactory", void 0);
18410 __decorate([
18411 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Autowired"])('gridOptions')
18412 ], GroupCellRendererCtrl.prototype, "gridOptions", void 0);
18413 return GroupCellRendererCtrl;
18414}(_context_beanStub__WEBPACK_IMPORTED_MODULE_2__["BeanStub"]));
18415
18416
18417
18418
18419
18420/***/ }),
18421/* 94 */
18422/***/ (function(module, __webpack_exports__, __webpack_require__) {
18423
18424"use strict";
18425__webpack_require__.r(__webpack_exports__);
18426/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowHighlightPosition", function() { return RowHighlightPosition; });
18427/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowNode", function() { return RowNode; });
18428/* harmony import */ var _eventService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(11);
18429/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(23);
18430/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
18431/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7);
18432/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(13);
18433/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(14);
18434/**
18435 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
18436 * @version v27.3.0
18437 * @link https://www.ag-grid.com/
18438 * @license MIT
18439 */
18440
18441
18442
18443
18444
18445
18446var RowHighlightPosition;
18447(function (RowHighlightPosition) {
18448 RowHighlightPosition[RowHighlightPosition["Above"] = 0] = "Above";
18449 RowHighlightPosition[RowHighlightPosition["Below"] = 1] = "Below";
18450})(RowHighlightPosition || (RowHighlightPosition = {}));
18451var RowNode = /** @class */ (function () {
18452 function RowNode(beans) {
18453 /** The current row index. If the row is filtered out or in a collapsed group, this value will be `null`. */
18454 this.rowIndex = null;
18455 /** The key for the group eg Ireland, UK, USA */
18456 this.key = null;
18457 /** Children mapped by the pivot columns. */
18458 this.childrenMapped = {};
18459 /**
18460 * This will be `true` if it has a rowIndex assigned, otherwise `false`.
18461 */
18462 this.displayed = false;
18463 /** The row top position in pixels. */
18464 this.rowTop = null;
18465 /** The top pixel for this row last time, makes sense if data set was ordered or filtered,
18466 * it is used so new rows can animate in from their old position. */
18467 this.oldRowTop = null;
18468 /** `true` by default - can be overridden via gridOptions.isRowSelectable(rowNode) */
18469 this.selectable = true;
18470 /** Used by sorting service - to give deterministic sort to groups. Previously we
18471 * just id for this, however id is a string and had slower sorting compared to numbers. */
18472 this.__objectId = RowNode.OBJECT_ID_SEQUENCE++;
18473 /** When one or more Columns are using autoHeight, this keeps track of height of each autoHeight Cell,
18474 * indexed by the Column ID. */
18475 this.__autoHeights = {};
18476 /** `true` when nodes with the same id are being removed and added as part of the same batch transaction */
18477 this.alreadyRendered = false;
18478 this.highlighted = null;
18479 this.selected = false;
18480 this.onRowHeightChangedDebounced = Object(_utils_function__WEBPACK_IMPORTED_MODULE_5__["debounce"])(this.onRowHeightChanged.bind(this), 100);
18481 this.beans = beans;
18482 }
18483 /** Replaces the data on the `rowNode`. When complete, the grid will refresh the the entire rendered row if it is showing. */
18484 RowNode.prototype.setData = function (data) {
18485 this.setDataCommon(data, false);
18486 };
18487 // similar to setRowData, however it is expected that the data is the same data item. this
18488 // is intended to be used with Redux type stores, where the whole data can be changed. we are
18489 // guaranteed that the data is the same entity (so grid doesn't need to worry about the id of the
18490 // underlying data changing, hence doesn't need to worry about selection). the grid, upon receiving
18491 // dataChanged event, will refresh the cells rather than rip them all out (so user can show transitions).
18492 RowNode.prototype.updateData = function (data) {
18493 this.setDataCommon(data, true);
18494 };
18495 RowNode.prototype.setDataCommon = function (data, update) {
18496 var oldData = this.data;
18497 this.data = data;
18498 this.beans.valueCache.onDataChanged();
18499 this.updateDataOnDetailNode();
18500 this.checkRowSelectable();
18501 var event = this.createDataChangedEvent(data, oldData, update);
18502 this.dispatchLocalEvent(event);
18503 };
18504 // when we are doing master / detail, the detail node is lazy created, but then kept around.
18505 // so if we show / hide the detail, the same detail rowNode is used. so we need to keep the data
18506 // in sync, otherwise expand/collapse of the detail would still show the old values.
18507 RowNode.prototype.updateDataOnDetailNode = function () {
18508 if (this.detailNode) {
18509 this.detailNode.data = this.data;
18510 }
18511 };
18512 RowNode.prototype.createDataChangedEvent = function (newData, oldData, update) {
18513 return {
18514 type: RowNode.EVENT_DATA_CHANGED,
18515 node: this,
18516 oldData: oldData,
18517 newData: newData,
18518 update: update
18519 };
18520 };
18521 RowNode.prototype.createLocalRowEvent = function (type) {
18522 return {
18523 type: type,
18524 node: this
18525 };
18526 };
18527 RowNode.prototype.getRowIndexString = function () {
18528 if (this.rowPinned === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP) {
18529 return 't-' + this.rowIndex;
18530 }
18531 if (this.rowPinned === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM) {
18532 return 'b-' + this.rowIndex;
18533 }
18534 return this.rowIndex.toString();
18535 };
18536 RowNode.prototype.createDaemonNode = function () {
18537 var oldNode = new RowNode(this.beans);
18538 // just copy the id and data, this is enough for the node to be used
18539 // in the selection controller (the selection controller is the only
18540 // place where daemon nodes can live).
18541 oldNode.id = this.id;
18542 oldNode.data = this.data;
18543 oldNode.daemon = true;
18544 oldNode.selected = this.selected;
18545 oldNode.level = this.level;
18546 return oldNode;
18547 };
18548 RowNode.prototype.setDataAndId = function (data, id) {
18549 var oldNode = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["exists"])(this.id) ? this.createDaemonNode() : null;
18550 var oldData = this.data;
18551 this.data = data;
18552 this.updateDataOnDetailNode();
18553 this.setId(id);
18554 this.beans.selectionService.syncInRowNode(this, oldNode);
18555 this.checkRowSelectable();
18556 var event = this.createDataChangedEvent(data, oldData, false);
18557 this.dispatchLocalEvent(event);
18558 };
18559 RowNode.prototype.checkRowSelectable = function () {
18560 var isRowSelectableFunc = this.beans.gridOptionsWrapper.getIsRowSelectableFunc();
18561 this.setRowSelectable(isRowSelectableFunc ? isRowSelectableFunc(this) : true);
18562 };
18563 RowNode.prototype.setRowSelectable = function (newVal) {
18564 if (this.selectable !== newVal) {
18565 this.selectable = newVal;
18566 if (this.eventService) {
18567 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_SELECTABLE_CHANGED));
18568 }
18569 }
18570 };
18571 RowNode.prototype.setId = function (id) {
18572 // see if user is providing the id's
18573 var getRowIdFunc = this.beans.gridOptionsWrapper.getRowIdFunc();
18574 if (getRowIdFunc) {
18575 // if user is providing the id's, then we set the id only after the data has been set.
18576 // this is important for virtual pagination and viewport, where empty rows exist.
18577 if (this.data) {
18578 // we pass 'true' as we skip this level when generating keys,
18579 // as we don't always have the key for this level (eg when updating
18580 // data via transaction on SSRM, we are getting key to look up the
18581 // RowNode, don't have the RowNode yet, thus no way to get the current key)
18582 var parentKeys = this.getGroupKeys(true);
18583 this.id = getRowIdFunc({
18584 data: this.data,
18585 parentKeys: parentKeys.length > 0 ? parentKeys : undefined,
18586 level: this.level
18587 });
18588 // make sure id provided doesn't start with 'row-group-' as this is reserved. also check that
18589 // it has 'startsWith' in case the user provided a number.
18590 if (this.id !== null && typeof this.id === 'string' && this.id.startsWith(RowNode.ID_PREFIX_ROW_GROUP)) {
18591 console.error("AG Grid: Row IDs cannot start with " + RowNode.ID_PREFIX_ROW_GROUP + ", this is a reserved prefix for AG Grid's row grouping feature.");
18592 }
18593 // force id to be a string
18594 if (this.id !== null && typeof this.id !== 'string') {
18595 this.id = '' + this.id;
18596 }
18597 }
18598 else {
18599 // this can happen if user has set blank into the rowNode after the row previously
18600 // having data. this happens in virtual page row model, when data is delete and
18601 // the page is refreshed.
18602 this.id = undefined;
18603 }
18604 }
18605 else {
18606 this.id = id;
18607 }
18608 };
18609 RowNode.prototype.getGroupKeys = function (excludeSelf) {
18610 if (excludeSelf === void 0) { excludeSelf = false; }
18611 var keys = [];
18612 var pointer = this;
18613 if (excludeSelf) {
18614 pointer = pointer.parent;
18615 }
18616 while (pointer && pointer.level >= 0) {
18617 keys.push(pointer.key);
18618 pointer = pointer.parent;
18619 }
18620 keys.reverse();
18621 return keys;
18622 };
18623 RowNode.prototype.isPixelInRange = function (pixel) {
18624 if (!Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["exists"])(this.rowTop) || !Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["exists"])(this.rowHeight)) {
18625 return false;
18626 }
18627 return pixel >= this.rowTop && pixel < (this.rowTop + this.rowHeight);
18628 };
18629 RowNode.prototype.setFirstChild = function (firstChild) {
18630 if (this.firstChild === firstChild) {
18631 return;
18632 }
18633 this.firstChild = firstChild;
18634 if (this.eventService) {
18635 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_FIRST_CHILD_CHANGED));
18636 }
18637 };
18638 RowNode.prototype.setLastChild = function (lastChild) {
18639 if (this.lastChild === lastChild) {
18640 return;
18641 }
18642 this.lastChild = lastChild;
18643 if (this.eventService) {
18644 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_LAST_CHILD_CHANGED));
18645 }
18646 };
18647 RowNode.prototype.setChildIndex = function (childIndex) {
18648 if (this.childIndex === childIndex) {
18649 return;
18650 }
18651 this.childIndex = childIndex;
18652 if (this.eventService) {
18653 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_CHILD_INDEX_CHANGED));
18654 }
18655 };
18656 RowNode.prototype.setRowTop = function (rowTop) {
18657 this.oldRowTop = this.rowTop;
18658 if (this.rowTop === rowTop) {
18659 return;
18660 }
18661 this.rowTop = rowTop;
18662 if (this.eventService) {
18663 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_TOP_CHANGED));
18664 }
18665 this.setDisplayed(rowTop !== null);
18666 };
18667 RowNode.prototype.clearRowTopAndRowIndex = function () {
18668 this.oldRowTop = null;
18669 this.setRowTop(null);
18670 this.setRowIndex(null);
18671 };
18672 RowNode.prototype.setDisplayed = function (displayed) {
18673 if (this.displayed === displayed) {
18674 return;
18675 }
18676 this.displayed = displayed;
18677 if (this.eventService) {
18678 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_DISPLAYED_CHANGED));
18679 }
18680 };
18681 RowNode.prototype.setDragging = function (dragging) {
18682 if (this.dragging === dragging) {
18683 return;
18684 }
18685 this.dragging = dragging;
18686 if (this.eventService) {
18687 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_DRAGGING_CHANGED));
18688 }
18689 };
18690 RowNode.prototype.setHighlighted = function (highlighted) {
18691 if (highlighted === this.highlighted) {
18692 return;
18693 }
18694 this.highlighted = highlighted;
18695 if (this.eventService) {
18696 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_HIGHLIGHT_CHANGED));
18697 }
18698 };
18699 RowNode.prototype.setAllChildrenCount = function (allChildrenCount) {
18700 if (this.allChildrenCount === allChildrenCount) {
18701 return;
18702 }
18703 this.allChildrenCount = allChildrenCount;
18704 if (this.eventService) {
18705 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED));
18706 }
18707 };
18708 RowNode.prototype.setMaster = function (master) {
18709 if (this.master === master) {
18710 return;
18711 }
18712 // if changing AWAY from master, then unexpand, otherwise
18713 // next time it's shown it is expanded again
18714 if (this.master && !master) {
18715 this.expanded = false;
18716 }
18717 this.master = master;
18718 if (this.eventService) {
18719 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_MASTER_CHANGED));
18720 }
18721 };
18722 RowNode.prototype.setGroup = function (group) {
18723 if (this.group === group) {
18724 return;
18725 }
18726 // if we used to be a group, and no longer, then close the node
18727 if (this.group && !group) {
18728 this.expanded = false;
18729 }
18730 this.group = group;
18731 this.updateHasChildren();
18732 if (this.eventService) {
18733 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_GROUP_CHANGED));
18734 }
18735 };
18736 /**
18737 * Sets the row height.
18738 * Call if you want to change the height initially assigned to the row.
18739 * After calling, you must call `api.onRowHeightChanged()` so the grid knows it needs to work out the placement of the rows. */
18740 RowNode.prototype.setRowHeight = function (rowHeight, estimated) {
18741 if (estimated === void 0) { estimated = false; }
18742 this.rowHeight = rowHeight;
18743 this.rowHeightEstimated = estimated;
18744 if (this.eventService) {
18745 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_HEIGHT_CHANGED));
18746 }
18747 };
18748 RowNode.prototype.setRowAutoHeight = function (cellHeight, column) {
18749 if (!this.__autoHeights) {
18750 this.__autoHeights = {};
18751 }
18752 var autoHeights = this.__autoHeights;
18753 autoHeights[column.getId()] = cellHeight;
18754 if (cellHeight != null) {
18755 if (this.checkAutoHeightsDebounced == null) {
18756 this.checkAutoHeightsDebounced = Object(_utils_function__WEBPACK_IMPORTED_MODULE_5__["debounce"])(this.checkAutoHeights.bind(this), 1);
18757 }
18758 this.checkAutoHeightsDebounced();
18759 }
18760 };
18761 RowNode.prototype.checkAutoHeights = function () {
18762 var notAllPresent = false;
18763 var nonePresent = true;
18764 var newRowHeight = 0;
18765 var autoHeights = this.__autoHeights;
18766 if (autoHeights == null) {
18767 return;
18768 }
18769 var displayedAutoHeightCols = this.beans.columnModel.getAllDisplayedAutoHeightCols();
18770 displayedAutoHeightCols.forEach(function (col) {
18771 var cellHeight = autoHeights[col.getId()];
18772 if (cellHeight == null) {
18773 notAllPresent = true;
18774 return;
18775 }
18776 nonePresent = false;
18777 if (cellHeight > newRowHeight) {
18778 newRowHeight = cellHeight;
18779 }
18780 });
18781 if (notAllPresent) {
18782 return;
18783 }
18784 // we take min of 10, so we don't adjust for empty rows. if <10, we put to default.
18785 // this prevents the row starting very small when waiting for async components,
18786 // which would then mean the grid squashes in far to many rows (as small heights
18787 // means more rows fit in) which looks crap. so best ignore small values and assume
18788 // we are still waiting for values to render.
18789 if (nonePresent || newRowHeight < 10) {
18790 newRowHeight = this.beans.gridOptionsWrapper.getRowHeightForNode(this).height;
18791 }
18792 if (newRowHeight == this.rowHeight) {
18793 return;
18794 }
18795 this.setRowHeight(newRowHeight);
18796 this.onRowHeightChangedDebounced();
18797 };
18798 /** This method is debounced. It is used for row auto-height. If we don't debounce,
18799 * then the Row Models will end up recalculating each row position
18800 * for each row height change and result in the Row Renderer laying out rows.
18801 * This is particularly bad if using print layout, and showing eg 1,000 rows,
18802 * each row will change it's height, causing Row Model to update 1,000 times.
18803 */
18804 RowNode.prototype.onRowHeightChanged = function () {
18805 var rowModel = this.beans.rowModel;
18806 if (rowModel.onRowHeightChanged) {
18807 rowModel.onRowHeightChanged();
18808 }
18809 };
18810 RowNode.prototype.setRowIndex = function (rowIndex) {
18811 if (this.rowIndex === rowIndex) {
18812 return;
18813 }
18814 this.rowIndex = rowIndex;
18815 if (this.eventService) {
18816 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_ROW_INDEX_CHANGED));
18817 }
18818 };
18819 RowNode.prototype.setUiLevel = function (uiLevel) {
18820 if (this.uiLevel === uiLevel) {
18821 return;
18822 }
18823 this.uiLevel = uiLevel;
18824 if (this.eventService) {
18825 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_UI_LEVEL_CHANGED));
18826 }
18827 };
18828 RowNode.prototype.setExpanded = function (expanded, e) {
18829 if (this.expanded === expanded) {
18830 return;
18831 }
18832 this.expanded = expanded;
18833 if (this.eventService) {
18834 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_EXPANDED_CHANGED));
18835 }
18836 var event = Object.assign({}, this.createGlobalRowEvent(_events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_ROW_GROUP_OPENED), {
18837 expanded: expanded,
18838 event: e || null
18839 });
18840 this.beans.rowNodeEventThrottle.dispatchExpanded(event);
18841 // when using footers we need to refresh the group row, as the aggregation
18842 // values jump between group and footer
18843 if (this.beans.gridOptionsWrapper.isGroupIncludeFooter()) {
18844 this.beans.rowRenderer.refreshCells({ rowNodes: [this] });
18845 }
18846 };
18847 RowNode.prototype.createGlobalRowEvent = function (type) {
18848 return {
18849 type: type,
18850 node: this,
18851 data: this.data,
18852 rowIndex: this.rowIndex,
18853 rowPinned: this.rowPinned,
18854 context: this.beans.gridOptionsWrapper.getContext(),
18855 api: this.beans.gridOptionsWrapper.getApi(),
18856 columnApi: this.beans.gridOptionsWrapper.getColumnApi()
18857 };
18858 };
18859 RowNode.prototype.dispatchLocalEvent = function (event) {
18860 if (this.eventService) {
18861 this.eventService.dispatchEvent(event);
18862 }
18863 };
18864 /**
18865 * Replaces the value on the `rowNode` for the specified column. When complete,
18866 * the grid will refresh the rendered cell on the required row only.
18867 *
18868 * @param colKey The column where the value should be updated
18869 * @param newValue The new value
18870 * @param eventSource The source of the event
18871 * @returns `True` if the value was changed, otherwise `False`.
18872 */
18873 RowNode.prototype.setDataValue = function (colKey, newValue, eventSource) {
18874 // When it is done via the editors, no 'cell changed' event gets fired, as it's assumed that
18875 // the cell knows about the change given it's in charge of the editing.
18876 // this method is for the client to call, so the cell listens for the change
18877 // event, and also flashes the cell when the change occurs.
18878 var column = this.beans.columnModel.getPrimaryColumn(colKey);
18879 var oldValue = this.beans.valueService.getValue(column, this);
18880 var valueChanged = this.beans.valueService.setValue(this, column, newValue, eventSource);
18881 this.dispatchCellChangedEvent(column, newValue, oldValue);
18882 return valueChanged;
18883 };
18884 RowNode.prototype.setGroupValue = function (colKey, newValue) {
18885 var column = this.beans.columnModel.getGridColumn(colKey);
18886 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["missing"])(this.groupData)) {
18887 this.groupData = {};
18888 }
18889 var columnId = column.getColId();
18890 var oldValue = this.groupData[columnId];
18891 if (oldValue === newValue) {
18892 return;
18893 }
18894 this.groupData[columnId] = newValue;
18895 this.dispatchCellChangedEvent(column, newValue, oldValue);
18896 };
18897 // sets the data for an aggregation
18898 RowNode.prototype.setAggData = function (newAggData) {
18899 var _this = this;
18900 // find out all keys that could potentially change
18901 var colIds = Object(_utils_object__WEBPACK_IMPORTED_MODULE_4__["getAllKeysInObjects"])([this.aggData, newAggData]);
18902 var oldAggData = this.aggData;
18903 this.aggData = newAggData;
18904 // if no event service, nobody has registered for events, so no need fire event
18905 if (this.eventService) {
18906 colIds.forEach(function (colId) {
18907 var column = _this.beans.columnModel.getGridColumn(colId);
18908 var value = _this.aggData ? _this.aggData[colId] : undefined;
18909 var oldValue = oldAggData ? oldAggData[colId] : undefined;
18910 _this.dispatchCellChangedEvent(column, value, oldValue);
18911 });
18912 }
18913 };
18914 RowNode.prototype.updateHasChildren = function () {
18915 // we need to return true when this.group=true, as this is used by server side row model
18916 // (as children are lazy loaded and stored in a cache anyway). otherwise we return true
18917 // if children exist.
18918 var newValue = (this.group && !this.footer) || (this.childrenAfterGroup && this.childrenAfterGroup.length > 0);
18919 if (newValue !== this.__hasChildren) {
18920 this.__hasChildren = !!newValue;
18921 if (this.eventService) {
18922 this.eventService.dispatchEvent(this.createLocalRowEvent(RowNode.EVENT_HAS_CHILDREN_CHANGED));
18923 }
18924 }
18925 };
18926 RowNode.prototype.hasChildren = function () {
18927 if (this.__hasChildren == null) {
18928 this.updateHasChildren();
18929 }
18930 return this.__hasChildren;
18931 };
18932 RowNode.prototype.isEmptyRowGroupNode = function () {
18933 return this.group && Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["missingOrEmpty"])(this.childrenAfterGroup);
18934 };
18935 RowNode.prototype.dispatchCellChangedEvent = function (column, newValue, oldValue) {
18936 var cellChangedEvent = {
18937 type: RowNode.EVENT_CELL_CHANGED,
18938 node: this,
18939 column: column,
18940 newValue: newValue,
18941 oldValue: oldValue
18942 };
18943 this.dispatchLocalEvent(cellChangedEvent);
18944 };
18945 /**
18946 * The first time `quickFilter` runs, the grid creates a one-off string representation of the row.
18947 * This string is then used for the quick filter instead of hitting each column separately.
18948 * When you edit, using grid editing, this string gets cleared down.
18949 * However if you edit without using grid editing, you will need to clear this string down for the row to be updated with the new values.
18950 * Otherwise new values will not work with the `quickFilter`. */
18951 RowNode.prototype.resetQuickFilterAggregateText = function () {
18952 this.quickFilterAggregateText = null;
18953 };
18954 RowNode.prototype.isExpandable = function () {
18955 return (this.hasChildren() && !this.footer) || this.master ? true : false;
18956 };
18957 /** Returns:
18958 * - `true` if node is selected,
18959 * - `false` if the node isn't selected
18960 * - `undefined` if it's partially selected (group where not all children are selected). */
18961 RowNode.prototype.isSelected = function () {
18962 // for footers, we just return what our sibling selected state is, as cannot select a footer
18963 if (this.footer) {
18964 return this.sibling.isSelected();
18965 }
18966 return this.selected;
18967 };
18968 /** Perform a depth-first search of this node and its children. */
18969 RowNode.prototype.depthFirstSearch = function (callback) {
18970 if (this.childrenAfterGroup) {
18971 this.childrenAfterGroup.forEach(function (child) { return child.depthFirstSearch(callback); });
18972 }
18973 callback(this);
18974 };
18975 // + rowController.updateGroupsInSelection()
18976 // + selectionController.calculatedSelectedForAllGroupNodes()
18977 RowNode.prototype.calculateSelectedFromChildren = function () {
18978 var _a;
18979 var atLeastOneSelected = false;
18980 var atLeastOneDeSelected = false;
18981 var atLeastOneMixed = false;
18982 var newSelectedValue;
18983 if (!((_a = this.childrenAfterGroup) === null || _a === void 0 ? void 0 : _a.length)) {
18984 return;
18985 }
18986 for (var i = 0; i < this.childrenAfterGroup.length; i++) {
18987 var child = this.childrenAfterGroup[i];
18988 // skip non-selectable nodes to prevent inconsistent selection values
18989 if (!child.selectable) {
18990 continue;
18991 }
18992 var childState = child.isSelected();
18993 switch (childState) {
18994 case true:
18995 atLeastOneSelected = true;
18996 break;
18997 case false:
18998 atLeastOneDeSelected = true;
18999 break;
19000 default:
19001 atLeastOneMixed = true;
19002 break;
19003 }
19004 }
19005 if (atLeastOneMixed) {
19006 newSelectedValue = undefined;
19007 }
19008 else if (atLeastOneSelected && !atLeastOneDeSelected) {
19009 newSelectedValue = true;
19010 }
19011 else if (!atLeastOneSelected && atLeastOneDeSelected) {
19012 newSelectedValue = false;
19013 }
19014 else {
19015 newSelectedValue = undefined;
19016 }
19017 this.selectThisNode(newSelectedValue);
19018 };
19019 RowNode.prototype.setSelectedInitialValue = function (selected) {
19020 this.selected = selected;
19021 };
19022 /**
19023 * Select (or deselect) the node.
19024 * @param newValue -`true` for selection, `false` for deselection.
19025 * @param clearSelection - If selecting, then passing `true` will select the node exclusively (i.e. NOT do multi select). If doing deselection, `clearSelection` has no impact.
19026 * @param suppressFinishActions - Pass `true` to prevent the `selectionChanged` from being fired. Note that the `rowSelected` event will still be fired.
19027 */
19028 RowNode.prototype.setSelected = function (newValue, clearSelection, suppressFinishActions) {
19029 if (clearSelection === void 0) { clearSelection = false; }
19030 if (suppressFinishActions === void 0) { suppressFinishActions = false; }
19031 this.setSelectedParams({
19032 newValue: newValue,
19033 clearSelection: clearSelection,
19034 suppressFinishActions: suppressFinishActions,
19035 rangeSelect: false
19036 });
19037 };
19038 RowNode.prototype.isRowPinned = function () {
19039 return this.rowPinned === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP || this.rowPinned === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM;
19040 };
19041 // to make calling code more readable, this is the same method as setSelected except it takes names parameters
19042 RowNode.prototype.setSelectedParams = function (params) {
19043 var _a;
19044 var groupSelectsChildren = this.beans.gridOptionsWrapper.isGroupSelectsChildren();
19045 var newValue = params.newValue === true;
19046 var clearSelection = params.clearSelection === true;
19047 var suppressFinishActions = params.suppressFinishActions === true;
19048 var rangeSelect = params.rangeSelect === true;
19049 // groupSelectsFiltered only makes sense when group selects children
19050 var groupSelectsFiltered = groupSelectsChildren && (params.groupSelectsFiltered === true);
19051 if (this.id === undefined) {
19052 console.warn('AG Grid: cannot select node until id for node is known');
19053 return 0;
19054 }
19055 if (this.rowPinned) {
19056 console.warn('AG Grid: cannot select pinned rows');
19057 return 0;
19058 }
19059 // if we are a footer, we don't do selection, just pass the info
19060 // to the sibling (the parent of the group)
19061 if (this.footer) {
19062 return this.sibling.setSelectedParams(params);
19063 }
19064 if (rangeSelect && this.beans.selectionService.getLastSelectedNode()) {
19065 var newRowClicked = this.beans.selectionService.getLastSelectedNode() !== this;
19066 var allowMultiSelect = this.beans.gridOptionsWrapper.isRowSelectionMulti();
19067 if (newRowClicked && allowMultiSelect) {
19068 var nodesChanged = this.doRowRangeSelection(params.newValue);
19069 this.beans.selectionService.setLastSelectedNode(this);
19070 return nodesChanged;
19071 }
19072 }
19073 var updatedCount = 0;
19074 // when groupSelectsFiltered, then this node may end up intermediate despite
19075 // trying to set it to true / false. this group will be calculated further on
19076 // down when we call calculatedSelectedForAllGroupNodes(). we need to skip it
19077 // here, otherwise the updatedCount would include it.
19078 var skipThisNode = groupSelectsFiltered && this.group;
19079 if (!skipThisNode) {
19080 var thisNodeWasSelected = this.selectThisNode(newValue);
19081 if (thisNodeWasSelected) {
19082 updatedCount++;
19083 }
19084 }
19085 if (groupSelectsChildren && ((_a = this.childrenAfterGroup) === null || _a === void 0 ? void 0 : _a.length)) {
19086 updatedCount += this.selectChildNodes(newValue, groupSelectsFiltered);
19087 }
19088 // clear other nodes if not doing multi select
19089 if (!suppressFinishActions) {
19090 var clearOtherNodes = newValue && (clearSelection || !this.beans.gridOptionsWrapper.isRowSelectionMulti());
19091 if (clearOtherNodes) {
19092 updatedCount += this.beans.selectionService.clearOtherNodes(this);
19093 }
19094 // only if we selected something, then update groups and fire events
19095 if (updatedCount > 0) {
19096 this.beans.selectionService.updateGroupsFromChildrenSelections();
19097 // this is the very end of the 'action node', so we are finished all the updates,
19098 // include any parent / child changes that this method caused
19099 var event_1 = {
19100 type: _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_SELECTION_CHANGED,
19101 api: this.beans.gridApi,
19102 columnApi: this.beans.columnApi
19103 };
19104 this.beans.eventService.dispatchEvent(event_1);
19105 }
19106 // so if user next does shift-select, we know where to start the selection from
19107 if (newValue) {
19108 this.beans.selectionService.setLastSelectedNode(this);
19109 }
19110 }
19111 return updatedCount;
19112 };
19113 // selects all rows between this node and the last selected node (or the top if this is the first selection).
19114 // not to be mixed up with 'cell range selection' where you drag the mouse, this is row range selection, by
19115 // holding down 'shift'.
19116 RowNode.prototype.doRowRangeSelection = function (value) {
19117 var _this = this;
19118 if (value === void 0) { value = true; }
19119 var groupsSelectChildren = this.beans.gridOptionsWrapper.isGroupSelectsChildren();
19120 var lastSelectedNode = this.beans.selectionService.getLastSelectedNode();
19121 var nodesToSelect = this.beans.rowModel.getNodesInRangeForSelection(this, lastSelectedNode);
19122 var updatedCount = 0;
19123 nodesToSelect.forEach(function (rowNode) {
19124 if (rowNode.group && groupsSelectChildren || (value === false && _this === rowNode)) {
19125 return;
19126 }
19127 var nodeWasSelected = rowNode.selectThisNode(value);
19128 if (nodeWasSelected) {
19129 updatedCount++;
19130 }
19131 });
19132 this.beans.selectionService.updateGroupsFromChildrenSelections();
19133 var event = {
19134 type: _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_SELECTION_CHANGED,
19135 api: this.beans.gridApi,
19136 columnApi: this.beans.columnApi
19137 };
19138 this.beans.eventService.dispatchEvent(event);
19139 return updatedCount;
19140 };
19141 RowNode.prototype.isParentOfNode = function (potentialParent) {
19142 var parentNode = this.parent;
19143 while (parentNode) {
19144 if (parentNode === potentialParent) {
19145 return true;
19146 }
19147 parentNode = parentNode.parent;
19148 }
19149 return false;
19150 };
19151 RowNode.prototype.selectThisNode = function (newValue) {
19152 // we only check selectable when newValue=true (ie selecting) to allow unselecting values,
19153 // as selectable is dynamic, need a way to unselect rows when selectable becomes false.
19154 var selectionNotAllowed = !this.selectable && newValue;
19155 var selectionNotChanged = this.selected === newValue;
19156 if (selectionNotAllowed || selectionNotChanged) {
19157 return false;
19158 }
19159 this.selected = newValue;
19160 if (this.eventService) {
19161 this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_ROW_SELECTED));
19162 }
19163 var event = this.createGlobalRowEvent(_events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_ROW_SELECTED);
19164 this.beans.eventService.dispatchEvent(event);
19165 return true;
19166 };
19167 RowNode.prototype.selectChildNodes = function (newValue, groupSelectsFiltered) {
19168 var children = groupSelectsFiltered ? this.childrenAfterAggFilter : this.childrenAfterGroup;
19169 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["missing"])(children)) {
19170 return 0;
19171 }
19172 var updatedCount = 0;
19173 for (var i = 0; i < children.length; i++) {
19174 updatedCount += children[i].setSelectedParams({
19175 newValue: newValue,
19176 clearSelection: false,
19177 suppressFinishActions: true,
19178 groupSelectsFiltered: groupSelectsFiltered
19179 });
19180 }
19181 return updatedCount;
19182 };
19183 /** Add an event listener. */
19184 RowNode.prototype.addEventListener = function (eventType, listener) {
19185 if (!this.eventService) {
19186 this.eventService = new _eventService__WEBPACK_IMPORTED_MODULE_0__["EventService"]();
19187 }
19188 this.eventService.addEventListener(eventType, listener);
19189 };
19190 /** Remove event listener. */
19191 RowNode.prototype.removeEventListener = function (eventType, listener) {
19192 if (!this.eventService) {
19193 return;
19194 }
19195 this.eventService.removeEventListener(eventType, listener);
19196 if (this.eventService.noRegisteredListenersExist()) {
19197 this.eventService = null;
19198 }
19199 };
19200 RowNode.prototype.onMouseEnter = function () {
19201 this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_ENTER));
19202 };
19203 RowNode.prototype.onMouseLeave = function () {
19204 this.dispatchLocalEvent(this.createLocalRowEvent(RowNode.EVENT_MOUSE_LEAVE));
19205 };
19206 RowNode.prototype.getFirstChildOfFirstChild = function (rowGroupColumn) {
19207 var currentRowNode = this;
19208 var isCandidate = true;
19209 var foundFirstChildPath = false;
19210 var nodeToSwapIn = null;
19211 // if we are hiding groups, then if we are the first child, of the first child,
19212 // all the way up to the column we are interested in, then we show the group cell.
19213 while (isCandidate && !foundFirstChildPath) {
19214 var parentRowNode = currentRowNode.parent;
19215 var firstChild = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["exists"])(parentRowNode) && currentRowNode.firstChild;
19216 if (firstChild) {
19217 if (parentRowNode.rowGroupColumn === rowGroupColumn) {
19218 foundFirstChildPath = true;
19219 nodeToSwapIn = parentRowNode;
19220 }
19221 }
19222 else {
19223 isCandidate = false;
19224 }
19225 currentRowNode = parentRowNode;
19226 }
19227 return foundFirstChildPath ? nodeToSwapIn : null;
19228 };
19229 RowNode.prototype.isFullWidthCell = function () {
19230 var isFullWidthCellFunc = this.beans.gridOptionsWrapper.getIsFullWidthCellFunc();
19231 return isFullWidthCellFunc ? isFullWidthCellFunc({ rowNode: this }) : false;
19232 };
19233 /**
19234 * Returns the route of the row node. If the Row Node is a group, it returns the route to that Row Node.
19235 * If the Row Node is not a group, it returns `undefined`.
19236 */
19237 RowNode.prototype.getRoute = function () {
19238 if (this.key == null) {
19239 return;
19240 }
19241 var res = [];
19242 var pointer = this;
19243 while (pointer.key != null) {
19244 res.push(pointer.key);
19245 pointer = pointer.parent;
19246 }
19247 return res.reverse();
19248 };
19249 RowNode.ID_PREFIX_ROW_GROUP = 'row-group-';
19250 RowNode.ID_PREFIX_TOP_PINNED = 't-';
19251 RowNode.ID_PREFIX_BOTTOM_PINNED = 'b-';
19252 RowNode.OBJECT_ID_SEQUENCE = 0;
19253 RowNode.EVENT_ROW_SELECTED = 'rowSelected';
19254 RowNode.EVENT_DATA_CHANGED = 'dataChanged';
19255 RowNode.EVENT_CELL_CHANGED = 'cellChanged';
19256 RowNode.EVENT_ALL_CHILDREN_COUNT_CHANGED = 'allChildrenCountChanged';
19257 RowNode.EVENT_MASTER_CHANGED = 'masterChanged';
19258 RowNode.EVENT_GROUP_CHANGED = 'groupChanged';
19259 RowNode.EVENT_MOUSE_ENTER = 'mouseEnter';
19260 RowNode.EVENT_MOUSE_LEAVE = 'mouseLeave';
19261 RowNode.EVENT_HEIGHT_CHANGED = 'heightChanged';
19262 RowNode.EVENT_TOP_CHANGED = 'topChanged';
19263 RowNode.EVENT_DISPLAYED_CHANGED = 'displayedChanged';
19264 RowNode.EVENT_FIRST_CHILD_CHANGED = 'firstChildChanged';
19265 RowNode.EVENT_LAST_CHILD_CHANGED = 'lastChildChanged';
19266 RowNode.EVENT_CHILD_INDEX_CHANGED = 'childIndexChanged';
19267 RowNode.EVENT_ROW_INDEX_CHANGED = 'rowIndexChanged';
19268 RowNode.EVENT_EXPANDED_CHANGED = 'expandedChanged';
19269 RowNode.EVENT_HAS_CHILDREN_CHANGED = 'hasChildrenChanged';
19270 RowNode.EVENT_SELECTABLE_CHANGED = 'selectableChanged';
19271 RowNode.EVENT_UI_LEVEL_CHANGED = 'uiLevelChanged';
19272 RowNode.EVENT_HIGHLIGHT_CHANGED = 'rowHighlightChanged';
19273 RowNode.EVENT_DRAGGING_CHANGED = 'draggingChanged';
19274 return RowNode;
19275}());
19276
19277
19278
19279
19280
19281/***/ }),
19282/* 95 */
19283/***/ (function(module, __webpack_exports__, __webpack_require__) {
19284
19285"use strict";
19286__webpack_require__.r(__webpack_exports__);
19287/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CheckboxSelectionComponent", function() { return CheckboxSelectionComponent; });
19288/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
19289/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(36);
19290/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23);
19291/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(57);
19292/* harmony import */ var _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(94);
19293/* harmony import */ var _utils_event__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(21);
19294/**
19295 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
19296 * @version v27.3.0
19297 * @link https://www.ag-grid.com/
19298 * @license MIT
19299 */
19300var __extends = (undefined && undefined.__extends) || (function () {
19301 var extendStatics = function (d, b) {
19302 extendStatics = Object.setPrototypeOf ||
19303 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
19304 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
19305 return extendStatics(d, b);
19306 };
19307 return function (d, b) {
19308 extendStatics(d, b);
19309 function __() { this.constructor = d; }
19310 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
19311 };
19312})();
19313var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
19314 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
19315 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
19316 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
19317 return c > 3 && r && Object.defineProperty(target, key, r), r;
19318};
19319
19320
19321
19322
19323
19324
19325var CheckboxSelectionComponent = /** @class */ (function (_super) {
19326 __extends(CheckboxSelectionComponent, _super);
19327 function CheckboxSelectionComponent() {
19328 return _super.call(this, /* html*/ "\n <div class=\"ag-selection-checkbox\" role=\"presentation\">\n <ag-checkbox role=\"presentation\" ref=\"eCheckbox\"></ag-checkbox>\n </div>") || this;
19329 }
19330 CheckboxSelectionComponent.prototype.postConstruct = function () {
19331 this.eCheckbox.setPassive(true);
19332 };
19333 CheckboxSelectionComponent.prototype.getCheckboxId = function () {
19334 return this.eCheckbox.getInputElement().id;
19335 };
19336 CheckboxSelectionComponent.prototype.onDataChanged = function () {
19337 // when rows are loaded for the second time, this can impact the selection, as a row
19338 // could be loaded as already selected (if user scrolls down, and then up again).
19339 this.onSelectionChanged();
19340 };
19341 CheckboxSelectionComponent.prototype.onSelectableChanged = function () {
19342 this.showOrHideSelect();
19343 };
19344 CheckboxSelectionComponent.prototype.onSelectionChanged = function () {
19345 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
19346 var state = this.rowNode.isSelected();
19347 var stateName = state === undefined
19348 ? translate('ariaIndeterminate', 'indeterminate')
19349 : (state === true
19350 ? translate('ariaChecked', 'checked')
19351 : translate('ariaUnchecked', 'unchecked'));
19352 var ariaLabel = translate('ariaRowToggleSelection', 'Press Space to toggle row selection');
19353 this.eCheckbox.setValue(state, true);
19354 this.eCheckbox.setInputAriaLabel(ariaLabel + " (" + stateName + ")");
19355 };
19356 CheckboxSelectionComponent.prototype.onCheckedClicked = function (event) {
19357 var groupSelectsFiltered = this.gridOptionsWrapper.isGroupSelectsFiltered();
19358 var updatedCount = this.rowNode.setSelectedParams({ newValue: false, rangeSelect: event.shiftKey, groupSelectsFiltered: groupSelectsFiltered });
19359 return updatedCount;
19360 };
19361 CheckboxSelectionComponent.prototype.onUncheckedClicked = function (event) {
19362 var groupSelectsFiltered = this.gridOptionsWrapper.isGroupSelectsFiltered();
19363 var updatedCount = this.rowNode.setSelectedParams({ newValue: true, rangeSelect: event.shiftKey, groupSelectsFiltered: groupSelectsFiltered });
19364 return updatedCount;
19365 };
19366 CheckboxSelectionComponent.prototype.init = function (params) {
19367 var _this = this;
19368 this.rowNode = params.rowNode;
19369 this.column = params.column;
19370 this.onSelectionChanged();
19371 // we don't want the row clicked event to fire when selecting the checkbox, otherwise the row
19372 // would possibly get selected twice
19373 this.addGuiEventListener('click', function (event) { return Object(_utils_event__WEBPACK_IMPORTED_MODULE_5__["stopPropagationForAgGrid"])(event); });
19374 // likewise we don't want double click on this icon to open a group
19375 this.addGuiEventListener('dblclick', function (event) { return Object(_utils_event__WEBPACK_IMPORTED_MODULE_5__["stopPropagationForAgGrid"])(event); });
19376 this.addManagedListener(this.eCheckbox.getInputElement(), 'click', function (event) {
19377 var isSelected = _this.eCheckbox.getValue();
19378 var previousValue = _this.eCheckbox.getPreviousValue();
19379 if (previousValue === undefined || isSelected === undefined) {
19380 // Indeterminate state - try toggling children to determine action.
19381 var result = _this.onUncheckedClicked(event || {});
19382 if (result === 0) {
19383 _this.onCheckedClicked(event);
19384 }
19385 }
19386 else if (isSelected) {
19387 _this.onCheckedClicked(event);
19388 }
19389 else {
19390 _this.onUncheckedClicked(event || {});
19391 }
19392 });
19393 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__["RowNode"].EVENT_ROW_SELECTED, this.onSelectionChanged.bind(this));
19394 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__["RowNode"].EVENT_DATA_CHANGED, this.onDataChanged.bind(this));
19395 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__["RowNode"].EVENT_SELECTABLE_CHANGED, this.onSelectableChanged.bind(this));
19396 var isRowSelectableFunc = this.gridOptionsWrapper.getIsRowSelectableFunc();
19397 var checkboxVisibleIsDynamic = isRowSelectableFunc || this.checkboxCallbackExists();
19398 if (checkboxVisibleIsDynamic) {
19399 var showOrHideSelectListener = this.showOrHideSelect.bind(this);
19400 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED, showOrHideSelectListener);
19401 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__["RowNode"].EVENT_DATA_CHANGED, showOrHideSelectListener);
19402 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_4__["RowNode"].EVENT_CELL_CHANGED, showOrHideSelectListener);
19403 this.showOrHideSelect();
19404 }
19405 this.eCheckbox.getInputElement().setAttribute('tabindex', '-1');
19406 };
19407 CheckboxSelectionComponent.prototype.showOrHideSelect = function () {
19408 // if the isRowSelectable() is not provided the row node is selectable by default
19409 var selectable = this.rowNode.selectable;
19410 // checkboxSelection callback is deemed a legacy solution however we will still consider it's result.
19411 // If selectable, then also check the colDef callback. if not selectable, this it short circuits - no need
19412 // to call the colDef callback.
19413 if (selectable && this.checkboxCallbackExists()) {
19414 selectable = this.column.isCellCheckboxSelection(this.rowNode);
19415 }
19416 // show checkbox if both conditions are true
19417 this.setVisible(selectable);
19418 };
19419 CheckboxSelectionComponent.prototype.checkboxCallbackExists = function () {
19420 // column will be missing if groupUseEntireRow=true
19421 var colDef = this.column ? this.column.getColDef() : null;
19422 return !!colDef && typeof colDef.checkboxSelection === 'function';
19423 };
19424 __decorate([
19425 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_3__["RefSelector"])('eCheckbox')
19426 ], CheckboxSelectionComponent.prototype, "eCheckbox", void 0);
19427 __decorate([
19428 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
19429 ], CheckboxSelectionComponent.prototype, "postConstruct", null);
19430 return CheckboxSelectionComponent;
19431}(_widgets_component__WEBPACK_IMPORTED_MODULE_1__["Component"]));
19432
19433
19434
19435
19436
19437/***/ }),
19438/* 96 */
19439/***/ (function(module, __webpack_exports__, __webpack_require__) {
19440
19441"use strict";
19442__webpack_require__.r(__webpack_exports__);
19443/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowDragComp", function() { return RowDragComp; });
19444/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
19445/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
19446/* harmony import */ var _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(94);
19447/* harmony import */ var _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(97);
19448/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(24);
19449/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(20);
19450/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(48);
19451/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(14);
19452/**
19453 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
19454 * @version v27.3.0
19455 * @link https://www.ag-grid.com/
19456 * @license MIT
19457 */
19458var __extends = (undefined && undefined.__extends) || (function () {
19459 var extendStatics = function (d, b) {
19460 extendStatics = Object.setPrototypeOf ||
19461 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
19462 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
19463 return extendStatics(d, b);
19464 };
19465 return function (d, b) {
19466 extendStatics(d, b);
19467 function __() { this.constructor = d; }
19468 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
19469 };
19470})();
19471var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
19472 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
19473 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
19474 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
19475 return c > 3 && r && Object.defineProperty(target, key, r), r;
19476};
19477
19478
19479
19480
19481
19482
19483
19484
19485var RowDragComp = /** @class */ (function (_super) {
19486 __extends(RowDragComp, _super);
19487 function RowDragComp(cellValueFn, rowNode, column, customGui, dragStartPixels, suppressVisibilityChange) {
19488 var _this = _super.call(this) || this;
19489 _this.cellValueFn = cellValueFn;
19490 _this.rowNode = rowNode;
19491 _this.column = column;
19492 _this.customGui = customGui;
19493 _this.dragStartPixels = dragStartPixels;
19494 _this.suppressVisibilityChange = suppressVisibilityChange;
19495 _this.dragSource = null;
19496 return _this;
19497 }
19498 RowDragComp.prototype.isCustomGui = function () {
19499 return this.customGui != null;
19500 };
19501 RowDragComp.prototype.postConstruct = function () {
19502 if (!this.customGui) {
19503 this.setTemplate(/* html */ "<div class=\"ag-drag-handle ag-row-drag\" aria-hidden=\"true\"></div>");
19504 this.getGui().appendChild(Object(_utils_icon__WEBPACK_IMPORTED_MODULE_6__["createIconNoSpan"])('rowDrag', this.beans.gridOptionsWrapper, null));
19505 this.addDragSource();
19506 }
19507 else {
19508 this.setDragElement(this.customGui, this.dragStartPixels);
19509 }
19510 this.checkCompatibility();
19511 if (!this.suppressVisibilityChange) {
19512 var strategy = this.beans.gridOptionsWrapper.isRowDragManaged() ?
19513 new ManagedVisibilityStrategy(this, this.beans, this.rowNode, this.column) :
19514 new NonManagedVisibilityStrategy(this, this.beans, this.rowNode, this.column);
19515 this.createManagedBean(strategy, this.beans.context);
19516 }
19517 };
19518 RowDragComp.prototype.setDragElement = function (dragElement, dragStartPixels) {
19519 this.setTemplateFromElement(dragElement);
19520 this.addDragSource(dragStartPixels);
19521 };
19522 RowDragComp.prototype.getSelectedCount = function () {
19523 var isRowDragMultiRow = this.beans.gridOptionsWrapper.isRowDragMultiRow();
19524 if (!isRowDragMultiRow) {
19525 return 1;
19526 }
19527 var selection = this.beans.selectionService.getSelectedNodes();
19528 return selection.indexOf(this.rowNode) !== -1 ? selection.length : 1;
19529 };
19530 // returns true if all compatibility items work out
19531 RowDragComp.prototype.checkCompatibility = function () {
19532 var managed = this.beans.gridOptionsWrapper.isRowDragManaged();
19533 var treeData = this.beans.gridOptionsWrapper.isTreeData();
19534 if (treeData && managed) {
19535 Object(_utils_function__WEBPACK_IMPORTED_MODULE_7__["doOnce"])(function () {
19536 return console.warn('AG Grid: If using row drag with tree data, you cannot have rowDragManaged=true');
19537 }, 'RowDragComp.managedAndTreeData');
19538 }
19539 };
19540 RowDragComp.prototype.addDragSource = function (dragStartPixels) {
19541 var _this = this;
19542 if (dragStartPixels === void 0) { dragStartPixels = 4; }
19543 // if this is changing the drag element, delete the previous dragSource
19544 if (this.dragSource) {
19545 this.removeDragSource();
19546 }
19547 var dragItem = {
19548 rowNode: this.rowNode,
19549 columns: this.column ? [this.column] : undefined,
19550 defaultTextValue: this.cellValueFn(),
19551 };
19552 var rowDragText = this.column && this.column.getColDef().rowDragText;
19553 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
19554 this.dragSource = {
19555 type: _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_3__["DragSourceType"].RowDrag,
19556 eElement: this.getGui(),
19557 dragItemName: function () {
19558 var dragItemCount = _this.getSelectedCount();
19559 if (rowDragText) {
19560 return rowDragText(dragItem, dragItemCount);
19561 }
19562 return dragItemCount === 1 ? _this.cellValueFn() : dragItemCount + " " + translate('rowDragRows', 'rows');
19563 },
19564 getDragItem: function () { return dragItem; },
19565 dragStartPixels: dragStartPixels,
19566 dragSourceDomDataKey: this.beans.gridOptionsWrapper.getDomDataKey()
19567 };
19568 this.beans.dragAndDropService.addDragSource(this.dragSource, true);
19569 };
19570 RowDragComp.prototype.removeDragSource = function () {
19571 if (this.dragSource) {
19572 this.beans.dragAndDropService.removeDragSource(this.dragSource);
19573 }
19574 this.dragSource = null;
19575 };
19576 __decorate([
19577 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('beans')
19578 ], RowDragComp.prototype, "beans", void 0);
19579 __decorate([
19580 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
19581 ], RowDragComp.prototype, "postConstruct", null);
19582 __decorate([
19583 _context_context__WEBPACK_IMPORTED_MODULE_1__["PreDestroy"]
19584 ], RowDragComp.prototype, "removeDragSource", null);
19585 return RowDragComp;
19586}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
19587
19588var VisibilityStrategy = /** @class */ (function (_super) {
19589 __extends(VisibilityStrategy, _super);
19590 function VisibilityStrategy(parent, rowNode, column) {
19591 var _this = _super.call(this) || this;
19592 _this.parent = parent;
19593 _this.rowNode = rowNode;
19594 _this.column = column;
19595 return _this;
19596 }
19597 VisibilityStrategy.prototype.setDisplayedOrVisible = function (neverDisplayed) {
19598 if (neverDisplayed) {
19599 this.parent.setDisplayed(false);
19600 }
19601 else {
19602 var shown = true;
19603 var isShownSometimes = false;
19604 if (this.column) {
19605 shown = this.column.isRowDrag(this.rowNode) || this.parent.isCustomGui();
19606 isShownSometimes = Object(_utils_function__WEBPACK_IMPORTED_MODULE_7__["isFunction"])(this.column.getColDef().rowDrag);
19607 }
19608 // if shown sometimes, them some rows can have drag handle while other don't,
19609 // so we use setVisible to keep the handles horizontally aligned (as setVisible
19610 // keeps the empty space, whereas setDisplayed looses the space)
19611 if (isShownSometimes) {
19612 this.parent.setDisplayed(true);
19613 this.parent.setVisible(shown);
19614 }
19615 else {
19616 this.parent.setDisplayed(shown);
19617 this.parent.setVisible(true);
19618 }
19619 }
19620 };
19621 return VisibilityStrategy;
19622}(_context_beanStub__WEBPACK_IMPORTED_MODULE_5__["BeanStub"]));
19623// when non managed, the visibility depends on suppressRowDrag property only
19624var NonManagedVisibilityStrategy = /** @class */ (function (_super) {
19625 __extends(NonManagedVisibilityStrategy, _super);
19626 function NonManagedVisibilityStrategy(parent, beans, rowNode, column) {
19627 var _this = _super.call(this, parent, rowNode, column) || this;
19628 _this.beans = beans;
19629 return _this;
19630 }
19631 NonManagedVisibilityStrategy.prototype.postConstruct = function () {
19632 this.addManagedListener(this.beans.gridOptionsWrapper, 'suppressRowDrag', this.onSuppressRowDrag.bind(this));
19633 // in case data changes, then we need to update visibility of drag item
19634 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_DATA_CHANGED, this.workOutVisibility.bind(this));
19635 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));
19636 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));
19637 this.addManagedListener(this.beans.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_NEW_COLUMNS_LOADED, this.workOutVisibility.bind(this));
19638 this.workOutVisibility();
19639 };
19640 NonManagedVisibilityStrategy.prototype.onSuppressRowDrag = function () {
19641 this.workOutVisibility();
19642 };
19643 NonManagedVisibilityStrategy.prototype.workOutVisibility = function () {
19644 // only show the drag if both sort and filter are not present
19645 var neverDisplayed = this.beans.gridOptionsWrapper.isSuppressRowDrag();
19646 this.setDisplayedOrVisible(neverDisplayed);
19647 };
19648 __decorate([
19649 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
19650 ], NonManagedVisibilityStrategy.prototype, "postConstruct", null);
19651 return NonManagedVisibilityStrategy;
19652}(VisibilityStrategy));
19653// when managed, the visibility depends on sort, filter and row group, as well as suppressRowDrag property
19654var ManagedVisibilityStrategy = /** @class */ (function (_super) {
19655 __extends(ManagedVisibilityStrategy, _super);
19656 function ManagedVisibilityStrategy(parent, beans, rowNode, column) {
19657 var _this = _super.call(this, parent, rowNode, column) || this;
19658 _this.beans = beans;
19659 return _this;
19660 }
19661 ManagedVisibilityStrategy.prototype.postConstruct = function () {
19662 // we do not show the component if sort, filter or grouping is active
19663 this.addManagedListener(this.beans.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_SORT_CHANGED, this.workOutVisibility.bind(this));
19664 this.addManagedListener(this.beans.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_FILTER_CHANGED, this.workOutVisibility.bind(this));
19665 this.addManagedListener(this.beans.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_COLUMN_ROW_GROUP_CHANGED, this.workOutVisibility.bind(this));
19666 this.addManagedListener(this.beans.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_NEW_COLUMNS_LOADED, this.workOutVisibility.bind(this));
19667 // in case data changes, then we need to update visibility of drag item
19668 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_DATA_CHANGED, this.workOutVisibility.bind(this));
19669 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_CELL_CHANGED, this.workOutVisibility.bind(this));
19670 this.addManagedListener(this.beans.gridOptionsWrapper, 'suppressRowDrag', this.onSuppressRowDrag.bind(this));
19671 this.workOutVisibility();
19672 };
19673 ManagedVisibilityStrategy.prototype.onSuppressRowDrag = function () {
19674 this.workOutVisibility();
19675 };
19676 ManagedVisibilityStrategy.prototype.workOutVisibility = function () {
19677 // only show the drag if both sort and filter are not present
19678 var gridBodyCon = this.beans.ctrlsService.getGridBodyCtrl();
19679 var rowDragFeature = gridBodyCon.getRowDragFeature();
19680 var shouldPreventRowMove = rowDragFeature && rowDragFeature.shouldPreventRowMove();
19681 var suppressRowDrag = this.beans.gridOptionsWrapper.isSuppressRowDrag();
19682 var hasExternalDropZones = this.beans.dragAndDropService.hasExternalDropZones();
19683 var neverDisplayed = (shouldPreventRowMove && !hasExternalDropZones) || suppressRowDrag;
19684 this.setDisplayedOrVisible(neverDisplayed);
19685 };
19686 __decorate([
19687 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
19688 ], ManagedVisibilityStrategy.prototype, "postConstruct", null);
19689 return ManagedVisibilityStrategy;
19690}(VisibilityStrategy));
19691
19692
19693
19694
19695/***/ }),
19696/* 97 */
19697/***/ (function(module, __webpack_exports__, __webpack_require__) {
19698
19699"use strict";
19700__webpack_require__.r(__webpack_exports__);
19701/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DragSourceType", function() { return DragSourceType; });
19702/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VerticalDirection", function() { return VerticalDirection; });
19703/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HorizontalDirection", function() { return HorizontalDirection; });
19704/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DragAndDropService", function() { return DragAndDropService; });
19705/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
19706/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
19707/* harmony import */ var _utils_string__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(26);
19708/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(48);
19709/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(18);
19710/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(43);
19711/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(42);
19712/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(14);
19713/**
19714 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
19715 * @version v27.3.0
19716 * @link https://www.ag-grid.com/
19717 * @license MIT
19718 */
19719var __extends = (undefined && undefined.__extends) || (function () {
19720 var extendStatics = function (d, b) {
19721 extendStatics = Object.setPrototypeOf ||
19722 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
19723 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
19724 return extendStatics(d, b);
19725 };
19726 return function (d, b) {
19727 extendStatics(d, b);
19728 function __() { this.constructor = d; }
19729 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
19730 };
19731})();
19732var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
19733 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
19734 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
19735 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
19736 return c > 3 && r && Object.defineProperty(target, key, r), r;
19737};
19738var __values = (undefined && undefined.__values) || function(o) {
19739 var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
19740 if (m) return m.call(o);
19741 if (o && typeof o.length === "number") return {
19742 next: function () {
19743 if (o && i >= o.length) o = void 0;
19744 return { value: o && o[i++], done: !o };
19745 }
19746 };
19747 throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
19748};
19749
19750
19751
19752
19753
19754
19755
19756
19757var DragSourceType;
19758(function (DragSourceType) {
19759 DragSourceType[DragSourceType["ToolPanel"] = 0] = "ToolPanel";
19760 DragSourceType[DragSourceType["HeaderCell"] = 1] = "HeaderCell";
19761 DragSourceType[DragSourceType["RowDrag"] = 2] = "RowDrag";
19762 DragSourceType[DragSourceType["ChartPanel"] = 3] = "ChartPanel";
19763})(DragSourceType || (DragSourceType = {}));
19764var VerticalDirection;
19765(function (VerticalDirection) {
19766 VerticalDirection[VerticalDirection["Up"] = 0] = "Up";
19767 VerticalDirection[VerticalDirection["Down"] = 1] = "Down";
19768})(VerticalDirection || (VerticalDirection = {}));
19769var HorizontalDirection;
19770(function (HorizontalDirection) {
19771 HorizontalDirection[HorizontalDirection["Left"] = 0] = "Left";
19772 HorizontalDirection[HorizontalDirection["Right"] = 1] = "Right";
19773})(HorizontalDirection || (HorizontalDirection = {}));
19774var DragAndDropService = /** @class */ (function (_super) {
19775 __extends(DragAndDropService, _super);
19776 function DragAndDropService() {
19777 var _this = _super !== null && _super.apply(this, arguments) || this;
19778 _this.dragSourceAndParamsList = [];
19779 _this.dropTargets = [];
19780 return _this;
19781 }
19782 DragAndDropService_1 = DragAndDropService;
19783 DragAndDropService.prototype.init = function () {
19784 this.ePinnedIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_3__["createIcon"])('columnMovePin', this.gridOptionsWrapper, null);
19785 this.eHideIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_3__["createIcon"])('columnMoveHide', this.gridOptionsWrapper, null);
19786 this.eMoveIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_3__["createIcon"])('columnMoveMove', this.gridOptionsWrapper, null);
19787 this.eLeftIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_3__["createIcon"])('columnMoveLeft', this.gridOptionsWrapper, null);
19788 this.eRightIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_3__["createIcon"])('columnMoveRight', this.gridOptionsWrapper, null);
19789 this.eGroupIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_3__["createIcon"])('columnMoveGroup', this.gridOptionsWrapper, null);
19790 this.eAggregateIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_3__["createIcon"])('columnMoveValue', this.gridOptionsWrapper, null);
19791 this.ePivotIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_3__["createIcon"])('columnMovePivot', this.gridOptionsWrapper, null);
19792 this.eDropNotAllowedIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_3__["createIcon"])('dropNotAllowed', this.gridOptionsWrapper, null);
19793 };
19794 DragAndDropService.prototype.addDragSource = function (dragSource, allowTouch) {
19795 if (allowTouch === void 0) { allowTouch = false; }
19796 var params = {
19797 eElement: dragSource.eElement,
19798 dragStartPixels: dragSource.dragStartPixels,
19799 onDragStart: this.onDragStart.bind(this, dragSource),
19800 onDragStop: this.onDragStop.bind(this),
19801 onDragging: this.onDragging.bind(this)
19802 };
19803 this.dragSourceAndParamsList.push({ params: params, dragSource: dragSource });
19804 this.dragService.addDragSource(params, allowTouch);
19805 };
19806 DragAndDropService.prototype.removeDragSource = function (dragSource) {
19807 var sourceAndParams = this.dragSourceAndParamsList.find(function (item) { return item.dragSource === dragSource; });
19808 if (sourceAndParams) {
19809 this.dragService.removeDragSource(sourceAndParams.params);
19810 Object(_utils_array__WEBPACK_IMPORTED_MODULE_4__["removeFromArray"])(this.dragSourceAndParamsList, sourceAndParams);
19811 }
19812 };
19813 DragAndDropService.prototype.clearDragSourceParamsList = function () {
19814 var _this = this;
19815 this.dragSourceAndParamsList.forEach(function (sourceAndParams) { return _this.dragService.removeDragSource(sourceAndParams.params); });
19816 this.dragSourceAndParamsList.length = 0;
19817 };
19818 DragAndDropService.prototype.nudge = function () {
19819 if (this.dragging) {
19820 this.onDragging(this.eventLastTime, true);
19821 }
19822 };
19823 DragAndDropService.prototype.onDragStart = function (dragSource, mouseEvent) {
19824 this.dragging = true;
19825 this.dragSource = dragSource;
19826 this.eventLastTime = mouseEvent;
19827 this.dragItem = this.dragSource.getDragItem();
19828 this.lastDropTarget = this.dragSource.dragSourceDropTarget;
19829 if (this.dragSource.onDragStarted) {
19830 this.dragSource.onDragStarted();
19831 }
19832 this.createGhost();
19833 };
19834 DragAndDropService.prototype.onDragStop = function (mouseEvent) {
19835 this.eventLastTime = null;
19836 this.dragging = false;
19837 if (this.dragSource.onDragStopped) {
19838 this.dragSource.onDragStopped();
19839 }
19840 if (this.lastDropTarget && this.lastDropTarget.onDragStop) {
19841 var draggingEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, null, null, false);
19842 this.lastDropTarget.onDragStop(draggingEvent);
19843 }
19844 this.lastDropTarget = null;
19845 this.dragItem = null;
19846 this.removeGhost();
19847 };
19848 DragAndDropService.prototype.onDragging = function (mouseEvent, fromNudge) {
19849 var _this = this;
19850 var hDirection = this.getHorizontalDirection(mouseEvent);
19851 var vDirection = this.getVerticalDirection(mouseEvent);
19852 this.eventLastTime = mouseEvent;
19853 this.positionGhost(mouseEvent);
19854 // check if mouseEvent intersects with any of the drop targets
19855 var validDropTargets = this.dropTargets.filter(function (target) { return _this.isMouseOnDropTarget(mouseEvent, target); });
19856 var len = validDropTargets.length;
19857 var dropTarget = null;
19858 if (len > 0) {
19859 dropTarget = len === 1
19860 ? validDropTargets[0]
19861 // the current mouse position could intersect with more than 1 element
19862 // if they are nested. In that case we need to get the most specific
19863 // container, which is the one that does not contain any other targets.
19864 : validDropTargets.reduce(function (prevTarget, currTarget) {
19865 if (!prevTarget) {
19866 return currTarget;
19867 }
19868 var prevContainer = prevTarget.getContainer();
19869 var currContainer = currTarget.getContainer();
19870 if (prevContainer.contains(currContainer)) {
19871 return currTarget;
19872 }
19873 return prevTarget;
19874 });
19875 }
19876 if (dropTarget !== this.lastDropTarget) {
19877 this.leaveLastTargetIfExists(mouseEvent, hDirection, vDirection, fromNudge);
19878 this.enterDragTargetIfExists(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);
19879 this.lastDropTarget = dropTarget;
19880 }
19881 else if (dropTarget && dropTarget.onDragging) {
19882 var draggingEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);
19883 dropTarget.onDragging(draggingEvent);
19884 }
19885 };
19886 DragAndDropService.prototype.enterDragTargetIfExists = function (dropTarget, mouseEvent, hDirection, vDirection, fromNudge) {
19887 if (!dropTarget) {
19888 return;
19889 }
19890 if (dropTarget.onDragEnter) {
19891 var dragEnterEvent = this.createDropTargetEvent(dropTarget, mouseEvent, hDirection, vDirection, fromNudge);
19892 dropTarget.onDragEnter(dragEnterEvent);
19893 }
19894 this.setGhostIcon(dropTarget.getIconName ? dropTarget.getIconName() : null);
19895 };
19896 DragAndDropService.prototype.leaveLastTargetIfExists = function (mouseEvent, hDirection, vDirection, fromNudge) {
19897 if (!this.lastDropTarget) {
19898 return;
19899 }
19900 if (this.lastDropTarget.onDragLeave) {
19901 var dragLeaveEvent = this.createDropTargetEvent(this.lastDropTarget, mouseEvent, hDirection, vDirection, fromNudge);
19902 this.lastDropTarget.onDragLeave(dragLeaveEvent);
19903 }
19904 this.setGhostIcon(null);
19905 };
19906 DragAndDropService.prototype.getAllContainersFromDropTarget = function (dropTarget) {
19907 var secondaryContainers = dropTarget.getSecondaryContainers ? dropTarget.getSecondaryContainers() : null;
19908 var containers = [[dropTarget.getContainer()]];
19909 return secondaryContainers ? containers.concat(secondaryContainers) : containers;
19910 };
19911 DragAndDropService.prototype.allContainersIntersect = function (mouseEvent, containers) {
19912 var e_1, _a;
19913 try {
19914 for (var containers_1 = __values(containers), containers_1_1 = containers_1.next(); !containers_1_1.done; containers_1_1 = containers_1.next()) {
19915 var container = containers_1_1.value;
19916 var rect = container.getBoundingClientRect();
19917 // if element is not visible, then width and height are zero
19918 if (rect.width === 0 || rect.height === 0) {
19919 return false;
19920 }
19921 var horizontalFit = mouseEvent.clientX >= rect.left && mouseEvent.clientX < rect.right;
19922 var verticalFit = mouseEvent.clientY >= rect.top && mouseEvent.clientY < rect.bottom;
19923 if (!horizontalFit || !verticalFit) {
19924 return false;
19925 }
19926 }
19927 }
19928 catch (e_1_1) { e_1 = { error: e_1_1 }; }
19929 finally {
19930 try {
19931 if (containers_1_1 && !containers_1_1.done && (_a = containers_1.return)) _a.call(containers_1);
19932 }
19933 finally { if (e_1) throw e_1.error; }
19934 }
19935 return true;
19936 };
19937 // checks if the mouse is on the drop target. it checks eContainer and eSecondaryContainers
19938 DragAndDropService.prototype.isMouseOnDropTarget = function (mouseEvent, dropTarget) {
19939 var e_2, _a;
19940 var allContainersFromDropTarget = this.getAllContainersFromDropTarget(dropTarget);
19941 var mouseOverTarget = false;
19942 try {
19943 for (var allContainersFromDropTarget_1 = __values(allContainersFromDropTarget), allContainersFromDropTarget_1_1 = allContainersFromDropTarget_1.next(); !allContainersFromDropTarget_1_1.done; allContainersFromDropTarget_1_1 = allContainersFromDropTarget_1.next()) {
19944 var currentContainers = allContainersFromDropTarget_1_1.value;
19945 if (this.allContainersIntersect(mouseEvent, currentContainers)) {
19946 mouseOverTarget = true;
19947 break;
19948 }
19949 }
19950 }
19951 catch (e_2_1) { e_2 = { error: e_2_1 }; }
19952 finally {
19953 try {
19954 if (allContainersFromDropTarget_1_1 && !allContainersFromDropTarget_1_1.done && (_a = allContainersFromDropTarget_1.return)) _a.call(allContainersFromDropTarget_1);
19955 }
19956 finally { if (e_2) throw e_2.error; }
19957 }
19958 if (dropTarget.targetContainsSource && !dropTarget.getContainer().contains(this.dragSource.eElement)) {
19959 return false;
19960 }
19961 return mouseOverTarget && dropTarget.isInterestedIn(this.dragSource.type, this.dragSource.eElement);
19962 };
19963 DragAndDropService.prototype.addDropTarget = function (dropTarget) {
19964 this.dropTargets.push(dropTarget);
19965 };
19966 DragAndDropService.prototype.removeDropTarget = function (dropTarget) {
19967 this.dropTargets = this.dropTargets.filter(function (target) { return target.getContainer() !== dropTarget.getContainer(); });
19968 };
19969 DragAndDropService.prototype.hasExternalDropZones = function () {
19970 return this.dropTargets.some(function (zones) { return zones.external; });
19971 };
19972 DragAndDropService.prototype.findExternalZone = function (params) {
19973 var externalTargets = this.dropTargets.filter(function (target) { return target.external; });
19974 return externalTargets.find(function (zone) { return zone.getContainer() === params.getContainer(); }) || null;
19975 };
19976 DragAndDropService.prototype.getHorizontalDirection = function (event) {
19977 var clientX = this.eventLastTime && this.eventLastTime.clientX;
19978 var eClientX = event.clientX;
19979 if (clientX === eClientX) {
19980 return null;
19981 }
19982 return clientX > eClientX ? HorizontalDirection.Left : HorizontalDirection.Right;
19983 };
19984 DragAndDropService.prototype.getVerticalDirection = function (event) {
19985 var clientY = this.eventLastTime && this.eventLastTime.clientY;
19986 var eClientY = event.clientY;
19987 if (clientY === eClientY) {
19988 return null;
19989 }
19990 return clientY > eClientY ? VerticalDirection.Up : VerticalDirection.Down;
19991 };
19992 DragAndDropService.prototype.createDropTargetEvent = function (dropTarget, event, hDirection, vDirection, fromNudge) {
19993 // localise x and y to the target
19994 var dropZoneTarget = dropTarget.getContainer();
19995 var rect = dropZoneTarget.getBoundingClientRect();
19996 var _a = this, api = _a.gridApi, columnApi = _a.columnApi, dragItem = _a.dragItem, dragSource = _a.dragSource;
19997 var x = event.clientX - rect.left;
19998 var y = event.clientY - rect.top;
19999 return { event: event, x: x, y: y, vDirection: vDirection, hDirection: hDirection, dragSource: dragSource, fromNudge: fromNudge, dragItem: dragItem, api: api, columnApi: columnApi, dropZoneTarget: dropZoneTarget };
20000 };
20001 DragAndDropService.prototype.positionGhost = function (event) {
20002 var ghost = this.eGhost;
20003 if (!ghost) {
20004 return;
20005 }
20006 var ghostRect = ghost.getBoundingClientRect();
20007 var ghostHeight = ghostRect.height;
20008 // for some reason, without the '-2', it still overlapped by 1 or 2 pixels, which
20009 // then brought in scrollbars to the browser. no idea why, but putting in -2 here
20010 // works around it which is good enough for me.
20011 var browserWidth = Object(_utils_browser__WEBPACK_IMPORTED_MODULE_5__["getBodyWidth"])() - 2;
20012 var browserHeight = Object(_utils_browser__WEBPACK_IMPORTED_MODULE_5__["getBodyHeight"])() - 2;
20013 var top = event.pageY - (ghostHeight / 2);
20014 var left = event.pageX - 10;
20015 var eDocument = this.gridOptionsWrapper.getDocument();
20016 var win = (eDocument.defaultView || window);
20017 var windowScrollY = win.pageYOffset || eDocument.documentElement.scrollTop;
20018 var windowScrollX = win.pageXOffset || eDocument.documentElement.scrollLeft;
20019 // check ghost is not positioned outside of the browser
20020 if (browserWidth > 0 && ((left + ghost.clientWidth) > (browserWidth + windowScrollX))) {
20021 left = browserWidth + windowScrollX - ghost.clientWidth;
20022 }
20023 if (left < 0) {
20024 left = 0;
20025 }
20026 if (browserHeight > 0 && ((top + ghost.clientHeight) > (browserHeight + windowScrollY))) {
20027 top = browserHeight + windowScrollY - ghost.clientHeight;
20028 }
20029 if (top < 0) {
20030 top = 0;
20031 }
20032 ghost.style.left = left + "px";
20033 ghost.style.top = top + "px";
20034 };
20035 DragAndDropService.prototype.removeGhost = function () {
20036 if (this.eGhost && this.eGhostParent) {
20037 this.eGhostParent.removeChild(this.eGhost);
20038 }
20039 this.eGhost = null;
20040 };
20041 DragAndDropService.prototype.createGhost = function () {
20042 this.eGhost = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["loadTemplate"])(DragAndDropService_1.GHOST_TEMPLATE);
20043 var theme = this.environment.getTheme().theme;
20044 if (theme) {
20045 this.eGhost.classList.add(theme);
20046 }
20047 this.eGhostIcon = this.eGhost.querySelector('.ag-dnd-ghost-icon');
20048 this.setGhostIcon(null);
20049 var eText = this.eGhost.querySelector('.ag-dnd-ghost-label');
20050 var dragItemName = this.dragSource.dragItemName;
20051 if (Object(_utils_function__WEBPACK_IMPORTED_MODULE_7__["isFunction"])(dragItemName)) {
20052 dragItemName = dragItemName();
20053 }
20054 eText.innerHTML = Object(_utils_string__WEBPACK_IMPORTED_MODULE_2__["escapeString"])(dragItemName) || '';
20055 this.eGhost.style.height = '25px';
20056 this.eGhost.style.top = '20px';
20057 this.eGhost.style.left = '20px';
20058 var eDocument = this.gridOptionsWrapper.getDocument();
20059 var targetEl = null;
20060 try {
20061 targetEl = eDocument.fullscreenElement;
20062 }
20063 catch (e) {
20064 // some environments like SalesForce will throw errors
20065 // simply by trying to read the fullscreenElement property
20066 }
20067 finally {
20068 if (!targetEl) {
20069 targetEl = eDocument.querySelector('body');
20070 }
20071 }
20072 this.eGhostParent = targetEl;
20073 if (!this.eGhostParent) {
20074 console.warn('AG Grid: could not find document body, it is needed for dragging columns');
20075 }
20076 else {
20077 this.eGhostParent.appendChild(this.eGhost);
20078 }
20079 };
20080 DragAndDropService.prototype.setGhostIcon = function (iconName, shake) {
20081 if (shake === void 0) { shake = false; }
20082 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["clearElement"])(this.eGhostIcon);
20083 var eIcon = null;
20084 if (!iconName) {
20085 iconName = this.dragSource.defaultIconName || DragAndDropService_1.ICON_NOT_ALLOWED;
20086 }
20087 switch (iconName) {
20088 case DragAndDropService_1.ICON_PINNED:
20089 eIcon = this.ePinnedIcon;
20090 break;
20091 case DragAndDropService_1.ICON_MOVE:
20092 eIcon = this.eMoveIcon;
20093 break;
20094 case DragAndDropService_1.ICON_LEFT:
20095 eIcon = this.eLeftIcon;
20096 break;
20097 case DragAndDropService_1.ICON_RIGHT:
20098 eIcon = this.eRightIcon;
20099 break;
20100 case DragAndDropService_1.ICON_GROUP:
20101 eIcon = this.eGroupIcon;
20102 break;
20103 case DragAndDropService_1.ICON_AGGREGATE:
20104 eIcon = this.eAggregateIcon;
20105 break;
20106 case DragAndDropService_1.ICON_PIVOT:
20107 eIcon = this.ePivotIcon;
20108 break;
20109 case DragAndDropService_1.ICON_NOT_ALLOWED:
20110 eIcon = this.eDropNotAllowedIcon;
20111 break;
20112 case DragAndDropService_1.ICON_HIDE:
20113 eIcon = this.eHideIcon;
20114 break;
20115 }
20116 this.eGhostIcon.classList.toggle('ag-shake-left-to-right', shake);
20117 if (eIcon === this.eHideIcon && this.gridOptionsWrapper.isSuppressDragLeaveHidesColumns()) {
20118 return;
20119 }
20120 if (eIcon) {
20121 this.eGhostIcon.appendChild(eIcon);
20122 }
20123 };
20124 var DragAndDropService_1;
20125 DragAndDropService.ICON_PINNED = 'pinned';
20126 DragAndDropService.ICON_MOVE = 'move';
20127 DragAndDropService.ICON_LEFT = 'left';
20128 DragAndDropService.ICON_RIGHT = 'right';
20129 DragAndDropService.ICON_GROUP = 'group';
20130 DragAndDropService.ICON_AGGREGATE = 'aggregate';
20131 DragAndDropService.ICON_PIVOT = 'pivot';
20132 DragAndDropService.ICON_NOT_ALLOWED = 'notAllowed';
20133 DragAndDropService.ICON_HIDE = 'hide';
20134 DragAndDropService.GHOST_TEMPLATE = "<div class=\"ag-dnd-ghost ag-unselectable\">\n <span class=\"ag-dnd-ghost-icon ag-shake-left-to-right\"></span>\n <div class=\"ag-dnd-ghost-label\"></div>\n </div>";
20135 __decorate([
20136 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('dragService')
20137 ], DragAndDropService.prototype, "dragService", void 0);
20138 __decorate([
20139 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('environment')
20140 ], DragAndDropService.prototype, "environment", void 0);
20141 __decorate([
20142 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnApi')
20143 ], DragAndDropService.prototype, "columnApi", void 0);
20144 __decorate([
20145 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridApi')
20146 ], DragAndDropService.prototype, "gridApi", void 0);
20147 __decorate([
20148 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
20149 ], DragAndDropService.prototype, "init", null);
20150 __decorate([
20151 _context_context__WEBPACK_IMPORTED_MODULE_1__["PreDestroy"]
20152 ], DragAndDropService.prototype, "clearDragSourceParamsList", null);
20153 DragAndDropService = DragAndDropService_1 = __decorate([
20154 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('dragAndDropService')
20155 ], DragAndDropService);
20156 return DragAndDropService;
20157}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
20158
20159
20160
20161
20162
20163/***/ }),
20164/* 98 */
20165/***/ (function(module, __webpack_exports__, __webpack_require__) {
20166
20167"use strict";
20168__webpack_require__.r(__webpack_exports__);
20169/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LoadingCellRenderer", function() { return LoadingCellRenderer; });
20170/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
20171/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
20172/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(48);
20173/**
20174 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
20175 * @version v27.3.0
20176 * @link https://www.ag-grid.com/
20177 * @license MIT
20178 */
20179var __extends = (undefined && undefined.__extends) || (function () {
20180 var extendStatics = function (d, b) {
20181 extendStatics = Object.setPrototypeOf ||
20182 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
20183 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
20184 return extendStatics(d, b);
20185 };
20186 return function (d, b) {
20187 extendStatics(d, b);
20188 function __() { this.constructor = d; }
20189 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
20190 };
20191})();
20192var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
20193 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20194 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
20195 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
20196 return c > 3 && r && Object.defineProperty(target, key, r), r;
20197};
20198
20199
20200
20201var LoadingCellRenderer = /** @class */ (function (_super) {
20202 __extends(LoadingCellRenderer, _super);
20203 function LoadingCellRenderer() {
20204 return _super.call(this, LoadingCellRenderer.TEMPLATE) || this;
20205 }
20206 LoadingCellRenderer.prototype.init = function (params) {
20207 params.node.failedLoad ? this.setupFailed() : this.setupLoading();
20208 };
20209 LoadingCellRenderer.prototype.setupFailed = function () {
20210 this.eLoadingText.innerText = 'ERR';
20211 };
20212 LoadingCellRenderer.prototype.setupLoading = function () {
20213 var eLoadingIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_2__["createIconNoSpan"])('groupLoading', this.gridOptionsWrapper, null);
20214 if (eLoadingIcon) {
20215 this.eLoadingIcon.appendChild(eLoadingIcon);
20216 }
20217 var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();
20218 this.eLoadingText.innerText = localeTextFunc('loadingOoo', 'Loading');
20219 };
20220 LoadingCellRenderer.prototype.refresh = function (params) {
20221 return false;
20222 };
20223 // this is a user component, and IComponent has "public destroy()" as part of the interface.
20224 // so we need to override destroy() just to make the method public.
20225 LoadingCellRenderer.prototype.destroy = function () {
20226 _super.prototype.destroy.call(this);
20227 };
20228 LoadingCellRenderer.TEMPLATE = "<div class=\"ag-loading\">\n <span class=\"ag-loading-icon\" ref=\"eLoadingIcon\"></span>\n <span class=\"ag-loading-text\" ref=\"eLoadingText\"></span>\n </div>";
20229 __decorate([
20230 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eLoadingIcon')
20231 ], LoadingCellRenderer.prototype, "eLoadingIcon", void 0);
20232 __decorate([
20233 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eLoadingText')
20234 ], LoadingCellRenderer.prototype, "eLoadingText", void 0);
20235 return LoadingCellRenderer;
20236}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
20237
20238
20239
20240
20241
20242/***/ }),
20243/* 99 */
20244/***/ (function(module, __webpack_exports__, __webpack_require__) {
20245
20246"use strict";
20247__webpack_require__.r(__webpack_exports__);
20248/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LoadingOverlayComponent", function() { return LoadingOverlayComponent; });
20249/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
20250/**
20251 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
20252 * @version v27.3.0
20253 * @link https://www.ag-grid.com/
20254 * @license MIT
20255 */
20256var __extends = (undefined && undefined.__extends) || (function () {
20257 var extendStatics = function (d, b) {
20258 extendStatics = Object.setPrototypeOf ||
20259 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
20260 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
20261 return extendStatics(d, b);
20262 };
20263 return function (d, b) {
20264 extendStatics(d, b);
20265 function __() { this.constructor = d; }
20266 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
20267 };
20268})();
20269
20270var LoadingOverlayComponent = /** @class */ (function (_super) {
20271 __extends(LoadingOverlayComponent, _super);
20272 function LoadingOverlayComponent() {
20273 return _super.call(this) || this;
20274 }
20275 // this is a user component, and IComponent has "public destroy()" as part of the interface.
20276 // so we need to override destroy() just to make the method public.
20277 LoadingOverlayComponent.prototype.destroy = function () {
20278 _super.prototype.destroy.call(this);
20279 };
20280 LoadingOverlayComponent.prototype.init = function (params) {
20281 var template = this.gridOptionsWrapper.getOverlayLoadingTemplate() ?
20282 this.gridOptionsWrapper.getOverlayLoadingTemplate() : LoadingOverlayComponent.DEFAULT_LOADING_OVERLAY_TEMPLATE;
20283 var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();
20284 var localisedTemplate = template.replace('[LOADING...]', localeTextFunc('loadingOoo', 'Loading...'));
20285 this.setTemplate(localisedTemplate);
20286 };
20287 LoadingOverlayComponent.DEFAULT_LOADING_OVERLAY_TEMPLATE = '<span class="ag-overlay-loading-center">[LOADING...]</span>';
20288 return LoadingOverlayComponent;
20289}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
20290
20291
20292
20293
20294
20295/***/ }),
20296/* 100 */
20297/***/ (function(module, __webpack_exports__, __webpack_require__) {
20298
20299"use strict";
20300__webpack_require__.r(__webpack_exports__);
20301/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NoRowsOverlayComponent", function() { return NoRowsOverlayComponent; });
20302/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
20303/**
20304 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
20305 * @version v27.3.0
20306 * @link https://www.ag-grid.com/
20307 * @license MIT
20308 */
20309var __extends = (undefined && undefined.__extends) || (function () {
20310 var extendStatics = function (d, b) {
20311 extendStatics = Object.setPrototypeOf ||
20312 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
20313 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
20314 return extendStatics(d, b);
20315 };
20316 return function (d, b) {
20317 extendStatics(d, b);
20318 function __() { this.constructor = d; }
20319 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
20320 };
20321})();
20322
20323var NoRowsOverlayComponent = /** @class */ (function (_super) {
20324 __extends(NoRowsOverlayComponent, _super);
20325 function NoRowsOverlayComponent() {
20326 return _super.call(this) || this;
20327 }
20328 // this is a user component, and IComponent has "public destroy()" as part of the interface.
20329 // so we need to override destroy() just to make the method public.
20330 NoRowsOverlayComponent.prototype.destroy = function () {
20331 _super.prototype.destroy.call(this);
20332 };
20333 NoRowsOverlayComponent.prototype.init = function (params) {
20334 var template = this.gridOptionsWrapper.getOverlayNoRowsTemplate() ?
20335 this.gridOptionsWrapper.getOverlayNoRowsTemplate() : NoRowsOverlayComponent.DEFAULT_NO_ROWS_TEMPLATE;
20336 var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();
20337 var localisedTemplate = template.replace('[NO_ROWS_TO_SHOW]', localeTextFunc('noRowsToShow', 'No Rows To Show'));
20338 this.setTemplate(localisedTemplate);
20339 };
20340 NoRowsOverlayComponent.DEFAULT_NO_ROWS_TEMPLATE = '<span class="ag-overlay-no-rows-center">[NO_ROWS_TO_SHOW]</span>';
20341 return NoRowsOverlayComponent;
20342}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
20343
20344
20345
20346
20347
20348/***/ }),
20349/* 101 */
20350/***/ (function(module, __webpack_exports__, __webpack_require__) {
20351
20352"use strict";
20353__webpack_require__.r(__webpack_exports__);
20354/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TooltipComponent", function() { return TooltipComponent; });
20355/* harmony import */ var _widgets_popupComponent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(85);
20356/* harmony import */ var _utils_string__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(26);
20357/**
20358 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
20359 * @version v27.3.0
20360 * @link https://www.ag-grid.com/
20361 * @license MIT
20362 */
20363var __extends = (undefined && undefined.__extends) || (function () {
20364 var extendStatics = function (d, b) {
20365 extendStatics = Object.setPrototypeOf ||
20366 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
20367 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
20368 return extendStatics(d, b);
20369 };
20370 return function (d, b) {
20371 extendStatics(d, b);
20372 function __() { this.constructor = d; }
20373 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
20374 };
20375})();
20376
20377
20378var TooltipComponent = /** @class */ (function (_super) {
20379 __extends(TooltipComponent, _super);
20380 function TooltipComponent() {
20381 return _super.call(this, /* html */ "<div class=\"ag-tooltip\"></div>") || this;
20382 }
20383 // will need to type params
20384 TooltipComponent.prototype.init = function (params) {
20385 var value = params.value;
20386 this.getGui().innerHTML = Object(_utils_string__WEBPACK_IMPORTED_MODULE_1__["escapeString"])(value);
20387 };
20388 return TooltipComponent;
20389}(_widgets_popupComponent__WEBPACK_IMPORTED_MODULE_0__["PopupComponent"]));
20390
20391
20392
20393
20394
20395/***/ }),
20396/* 102 */
20397/***/ (function(module, __webpack_exports__, __webpack_require__) {
20398
20399"use strict";
20400__webpack_require__.r(__webpack_exports__);
20401/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UserComponentFactory", function() { return UserComponentFactory; });
20402/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
20403/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
20404/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(37);
20405/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(13);
20406/* harmony import */ var _componentTypes__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(103);
20407/* harmony import */ var _filter_floating_floatingFilterMapper__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(104);
20408/* harmony import */ var _modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(16);
20409/* harmony import */ var _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(17);
20410/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(14);
20411/**
20412 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
20413 * @version v27.3.0
20414 * @link https://www.ag-grid.com/
20415 * @license MIT
20416 */
20417var __extends = (undefined && undefined.__extends) || (function () {
20418 var extendStatics = function (d, b) {
20419 extendStatics = Object.setPrototypeOf ||
20420 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
20421 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
20422 return extendStatics(d, b);
20423 };
20424 return function (d, b) {
20425 extendStatics(d, b);
20426 function __() { this.constructor = d; }
20427 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
20428 };
20429})();
20430var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
20431 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20432 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
20433 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
20434 return c > 3 && r && Object.defineProperty(target, key, r), r;
20435};
20436
20437
20438
20439
20440
20441
20442
20443
20444
20445var ANNOTATIONS = '__annotations__';
20446var UserComponentFactory = /** @class */ (function (_super) {
20447 __extends(UserComponentFactory, _super);
20448 function UserComponentFactory() {
20449 return _super !== null && _super.apply(this, arguments) || this;
20450 }
20451 UserComponentFactory.prototype.getHeaderCompDetails = function (colDef, params) {
20452 return this.getCompDetails(colDef, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["HeaderComponent"], 'agColumnHeader', params);
20453 };
20454 UserComponentFactory.prototype.getHeaderGroupCompDetails = function (params) {
20455 var colGroupDef = params.columnGroup.getColGroupDef();
20456 return this.getCompDetails(colGroupDef, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["HeaderGroupComponent"], 'agColumnGroupHeader', params);
20457 };
20458 // this one is unusual, as it can be LoadingCellRenderer, DetailCellRenderer, FullWidthCellRenderer or GroupRowRenderer.
20459 // so we have to pass the type in.
20460 UserComponentFactory.prototype.getFullWidthCellRendererDetails = function (params) {
20461 return this.getCompDetails(this.gridOptions, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["FullWidth"], null, params, true);
20462 };
20463 UserComponentFactory.prototype.getFullWidthLoadingCellRendererDetails = function (params) {
20464 return this.getCompDetails(this.gridOptions, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["FullWidthLoading"], 'agLoadingCellRenderer', params, true);
20465 };
20466 UserComponentFactory.prototype.getFullWidthGroupCellRendererDetails = function (params) {
20467 return this.getCompDetails(this.gridOptions, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["FullWidthGroup"], 'agGroupRowRenderer', params, true);
20468 };
20469 UserComponentFactory.prototype.getFullWidthDetailCellRendererDetails = function (params) {
20470 return this.getCompDetails(this.gridOptions, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["FullWidthDetail"], 'agDetailCellRenderer', params, true);
20471 };
20472 // CELL RENDERER
20473 UserComponentFactory.prototype.getInnerRendererDetails = function (def, params) {
20474 return this.getCompDetails(def, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["InnerRendererComponent"], null, params);
20475 };
20476 UserComponentFactory.prototype.getFullWidthGroupRowInnerCellRenderer = function (def, params) {
20477 return this.getCompDetails(def, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["InnerRendererComponent"], null, params);
20478 };
20479 UserComponentFactory.prototype.getCellRendererDetails = function (def, params) {
20480 return this.getCompDetails(def, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["CellRendererComponent"], null, params);
20481 };
20482 // CELL EDITOR
20483 UserComponentFactory.prototype.getCellEditorDetails = function (def, params) {
20484 return this.getCompDetails(def, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["CellEditorComponent"], 'agCellEditor', params, true);
20485 };
20486 // FILTER
20487 UserComponentFactory.prototype.getFilterDetails = function (def, params, defaultFilter) {
20488 return this.getCompDetails(def, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["FilterComponent"], defaultFilter, params, true);
20489 };
20490 UserComponentFactory.prototype.getDateCompDetails = function (params) {
20491 return this.getCompDetails(this.gridOptions, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["DateComponent"], 'agDateInput', params, true);
20492 };
20493 UserComponentFactory.prototype.getLoadingOverlayCompDetails = function (params) {
20494 return this.getCompDetails(this.gridOptions, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["LoadingOverlayComponent"], 'agLoadingOverlay', params, true);
20495 };
20496 UserComponentFactory.prototype.getNoRowsOverlayCompDetails = function (params) {
20497 return this.getCompDetails(this.gridOptions, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["NoRowsOverlayComponent"], 'agNoRowsOverlay', params, true);
20498 };
20499 UserComponentFactory.prototype.getTooltipCompDetails = function (params) {
20500 return this.getCompDetails(params.colDef, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["TooltipComponent"], 'agTooltipComponent', params, true);
20501 };
20502 UserComponentFactory.prototype.getSetFilterCellRendererDetails = function (def, params) {
20503 return this.getCompDetails(def, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["CellRendererComponent"], null, params);
20504 };
20505 UserComponentFactory.prototype.getFloatingFilterCompDetails = function (def, params, defaultFloatingFilter) {
20506 return this.getCompDetails(def, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["FloatingFilterComponent"], defaultFloatingFilter, params);
20507 };
20508 UserComponentFactory.prototype.getToolPanelCompDetails = function (toolPanelDef, params) {
20509 return this.getCompDetails(toolPanelDef, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["ToolPanelComponent"], null, params, true);
20510 };
20511 UserComponentFactory.prototype.getStatusPanelCompDetails = function (def, params) {
20512 return this.getCompDetails(def, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["StatusPanelComponent"], null, params, true);
20513 };
20514 UserComponentFactory.prototype.getCompDetails = function (defObject, type, defaultName, params, mandatory) {
20515 var _this = this;
20516 if (mandatory === void 0) { mandatory = false; }
20517 var propertyName = type.propertyName, cellRenderer = type.cellRenderer;
20518 var _a = this.getCompKeys(defObject, type, params), compName = _a.compName, jsComp = _a.jsComp, fwComp = _a.fwComp, paramsFromSelector = _a.paramsFromSelector, popupFromSelector = _a.popupFromSelector, popupPositionFromSelector = _a.popupPositionFromSelector;
20519 var lookupFromRegistry = function (key) {
20520 var item = _this.userComponentRegistry.retrieve(key);
20521 if (item) {
20522 jsComp = !item.componentFromFramework ? item.component : undefined;
20523 fwComp = item.componentFromFramework ? item.component : undefined;
20524 }
20525 };
20526 // if compOption is a string, means we need to look the item up
20527 if (compName != null) {
20528 lookupFromRegistry(compName);
20529 }
20530 // if lookup brought nothing back, and we have a default, lookup the default
20531 if (jsComp == null && fwComp == null && defaultName != null) {
20532 lookupFromRegistry(defaultName);
20533 }
20534 // if we have a comp option, and it's a function, replace it with an object equivalent adaptor
20535 if (jsComp && cellRenderer && !this.agComponentUtils.doesImplementIComponent(jsComp)) {
20536 jsComp = this.agComponentUtils.adaptFunction(propertyName, jsComp);
20537 }
20538 if (!jsComp && !fwComp) {
20539 if (mandatory) {
20540 console.error("Could not find component " + compName + ", did you forget to configure this component?");
20541 }
20542 return;
20543 }
20544 var paramsMerged = this.mergeParamsWithApplicationProvidedParams(defObject, type, params, paramsFromSelector);
20545 var componentFromFramework = jsComp == null;
20546 var componentClass = jsComp ? jsComp : fwComp;
20547 return {
20548 componentFromFramework: componentFromFramework,
20549 componentClass: componentClass,
20550 params: paramsMerged,
20551 type: type,
20552 popupFromSelector: popupFromSelector,
20553 popupPositionFromSelector: popupPositionFromSelector,
20554 newAgStackInstance: function () { return _this.newAgStackInstance(componentClass, componentFromFramework, paramsMerged, type); }
20555 };
20556 };
20557 UserComponentFactory.prototype.getCompKeys = function (defObject, type, params) {
20558 var _this = this;
20559 var propertyName = type.propertyName;
20560 var compName;
20561 var jsComp;
20562 var fwComp;
20563 var paramsFromSelector;
20564 var popupFromSelector;
20565 var popupPositionFromSelector;
20566 // there are two types of js comps, class based and func based. we can only check for
20567 // class based, by checking if getGui() exists. no way to differentiate js func based vs eg react func based
20568 // const isJsClassComp = (comp: any) => this.agComponentUtils.doesImplementIComponent(comp);
20569 // const fwActive = this.frameworkComponentWrapper != null;
20570 // pull from defObject if available
20571 if (defObject) {
20572 var defObjectAny = defObject;
20573 // if selector, use this
20574 var selectorFunc = defObjectAny[propertyName + 'Selector'];
20575 var selectorRes = selectorFunc ? selectorFunc(params) : null;
20576 var assignComp = function (providedJsComp, providedFwComp) {
20577 var xxxFrameworkDeprecatedWarn = function () {
20578 var warningMessage = "AG Grid: As of v27, the property " + propertyName + "Framework is deprecated. The property " + propertyName + " can now be used for JavaScript AND Framework Components.";
20579 Object(_utils_function__WEBPACK_IMPORTED_MODULE_8__["doOnce"])(function () { return console.warn(warningMessage); }, "UserComponentFactory." + propertyName + "FrameworkDeprecated");
20580 };
20581 if (typeof providedJsComp === 'string') {
20582 compName = providedJsComp;
20583 }
20584 else if (typeof providedFwComp === 'string') {
20585 xxxFrameworkDeprecatedWarn();
20586 compName = providedFwComp;
20587 // comp===true for filters, which means use the default comp
20588 }
20589 else if (providedJsComp != null && providedJsComp !== true) {
20590 var isFwkComp = _this.getFrameworkOverrides().isFrameworkComponent(providedJsComp);
20591 if (isFwkComp) {
20592 fwComp = providedJsComp;
20593 }
20594 else {
20595 jsComp = providedJsComp;
20596 }
20597 }
20598 else if (providedFwComp != null) {
20599 xxxFrameworkDeprecatedWarn();
20600 fwComp = providedFwComp;
20601 }
20602 };
20603 if (selectorRes) {
20604 if (selectorRes.frameworkComponent != null) {
20605 var warningMessage_1 = "AG Grid: As of v27, the return for " + propertyName + "Selector has attributes [component, params] only. The attribute frameworkComponent is deprecated. You should now return back Framework Components using the 'component' attribute and the grid works out if it's a framework component or not.";
20606 Object(_utils_function__WEBPACK_IMPORTED_MODULE_8__["doOnce"])(function () { return console.warn(warningMessage_1); }, "UserComponentFactory." + propertyName + "FrameworkSelectorDeprecated");
20607 assignComp(selectorRes.frameworkComponent, undefined);
20608 }
20609 else {
20610 assignComp(selectorRes.component, undefined);
20611 }
20612 paramsFromSelector = selectorRes.params;
20613 popupFromSelector = selectorRes.popup;
20614 popupPositionFromSelector = selectorRes.popupPosition;
20615 }
20616 else {
20617 // if no selector, or result of selector is empty, take from defObject
20618 assignComp(defObjectAny[propertyName], defObjectAny[propertyName + 'Framework']);
20619 }
20620 }
20621 return { compName: compName, jsComp: jsComp, fwComp: fwComp, paramsFromSelector: paramsFromSelector, popupFromSelector: popupFromSelector, popupPositionFromSelector: popupPositionFromSelector };
20622 };
20623 UserComponentFactory.prototype.newAgStackInstance = function (ComponentClass, componentFromFramework, params, type) {
20624 var propertyName = type.propertyName;
20625 var jsComponent = !componentFromFramework;
20626 // using javascript component
20627 var instance;
20628 if (jsComponent) {
20629 instance = new ComponentClass();
20630 }
20631 else {
20632 // Using framework component
20633 var thisComponentConfig = this.componentMetadataProvider.retrieve(propertyName);
20634 instance = this.frameworkComponentWrapper.wrap(ComponentClass, thisComponentConfig.mandatoryMethodList, thisComponentConfig.optionalMethodList, type);
20635 }
20636 var deferredInit = this.initComponent(instance, params);
20637 if (deferredInit == null) {
20638 return _utils__WEBPACK_IMPORTED_MODULE_2__["AgPromise"].resolve(instance);
20639 }
20640 return deferredInit.then(function () { return instance; });
20641 };
20642 // used by Floating Filter
20643 UserComponentFactory.prototype.mergeParamsWithApplicationProvidedParams = function (defObject, type, paramsFromGrid, paramsFromSelector) {
20644 if (paramsFromSelector === void 0) { paramsFromSelector = null; }
20645 var params = {
20646 context: this.gridOptionsWrapper.getContext(),
20647 columnApi: this.gridOptionsWrapper.getColumnApi(),
20648 api: this.gridOptionsWrapper.getApi()
20649 };
20650 Object(_utils_object__WEBPACK_IMPORTED_MODULE_3__["mergeDeep"])(params, paramsFromGrid);
20651 // pull user params from either the old prop name and new prop name
20652 // eg either cellRendererParams and cellCompParams
20653 var defObjectAny = defObject;
20654 var userParams = defObjectAny && defObjectAny[type.propertyName + 'Params'];
20655 if (typeof userParams === 'function') {
20656 var userParamsFromFunc = userParams(paramsFromGrid);
20657 Object(_utils_object__WEBPACK_IMPORTED_MODULE_3__["mergeDeep"])(params, userParamsFromFunc);
20658 }
20659 else if (typeof userParams === 'object') {
20660 Object(_utils_object__WEBPACK_IMPORTED_MODULE_3__["mergeDeep"])(params, userParams);
20661 }
20662 Object(_utils_object__WEBPACK_IMPORTED_MODULE_3__["mergeDeep"])(params, paramsFromSelector);
20663 return params;
20664 };
20665 UserComponentFactory.prototype.initComponent = function (component, params) {
20666 this.context.createBean(component);
20667 if (component.init == null) {
20668 return;
20669 }
20670 return component.init(params);
20671 };
20672 UserComponentFactory.prototype.getDefaultFloatingFilterType = function (def) {
20673 if (def == null) {
20674 return null;
20675 }
20676 var defaultFloatingFilterType = null;
20677 var _a = this.getCompKeys(def, _componentTypes__WEBPACK_IMPORTED_MODULE_4__["FilterComponent"]), compName = _a.compName, jsComp = _a.jsComp, fwComp = _a.fwComp;
20678 if (compName) {
20679 // will be undefined if not in the map
20680 defaultFloatingFilterType = _filter_floating_floatingFilterMapper__WEBPACK_IMPORTED_MODULE_5__["FloatingFilterMapper"].getFloatingFilterType(compName);
20681 }
20682 else {
20683 var usingDefaultFilter = (jsComp == null && fwComp == null) && (def.filter === true);
20684 if (usingDefaultFilter) {
20685 var setFilterModuleLoaded = _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].SetFilterModule);
20686 defaultFloatingFilterType = setFilterModuleLoaded ? 'agSetColumnFloatingFilter' : 'agTextColumnFloatingFilter';
20687 }
20688 }
20689 return defaultFloatingFilterType;
20690 };
20691 __decorate([
20692 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridOptions')
20693 ], UserComponentFactory.prototype, "gridOptions", void 0);
20694 __decorate([
20695 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('agComponentUtils')
20696 ], UserComponentFactory.prototype, "agComponentUtils", void 0);
20697 __decorate([
20698 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('componentMetadataProvider')
20699 ], UserComponentFactory.prototype, "componentMetadataProvider", void 0);
20700 __decorate([
20701 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('userComponentRegistry')
20702 ], UserComponentFactory.prototype, "userComponentRegistry", void 0);
20703 __decorate([
20704 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('frameworkComponentWrapper')
20705 ], UserComponentFactory.prototype, "frameworkComponentWrapper", void 0);
20706 UserComponentFactory = __decorate([
20707 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('userComponentFactory')
20708 ], UserComponentFactory);
20709 return UserComponentFactory;
20710}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
20711
20712
20713
20714
20715
20716/***/ }),
20717/* 103 */
20718/***/ (function(module, __webpack_exports__, __webpack_require__) {
20719
20720"use strict";
20721__webpack_require__.r(__webpack_exports__);
20722/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DateComponent", function() { return DateComponent; });
20723/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderComponent", function() { return HeaderComponent; });
20724/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderGroupComponent", function() { return HeaderGroupComponent; });
20725/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CellRendererComponent", function() { return CellRendererComponent; });
20726/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CellEditorComponent", function() { return CellEditorComponent; });
20727/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InnerRendererComponent", function() { return InnerRendererComponent; });
20728/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LoadingOverlayComponent", function() { return LoadingOverlayComponent; });
20729/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NoRowsOverlayComponent", function() { return NoRowsOverlayComponent; });
20730/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TooltipComponent", function() { return TooltipComponent; });
20731/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FilterComponent", function() { return FilterComponent; });
20732/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FloatingFilterComponent", function() { return FloatingFilterComponent; });
20733/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ToolPanelComponent", function() { return ToolPanelComponent; });
20734/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StatusPanelComponent", function() { return StatusPanelComponent; });
20735/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FullWidth", function() { return FullWidth; });
20736/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FullWidthLoading", function() { return FullWidthLoading; });
20737/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FullWidthGroup", function() { return FullWidthGroup; });
20738/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FullWidthDetail", function() { return FullWidthDetail; });
20739/**
20740 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
20741 * @version v27.3.0
20742 * @link https://www.ag-grid.com/
20743 * @license MIT
20744 */
20745var DateComponent = {
20746 propertyName: 'dateComponent',
20747 cellRenderer: false
20748};
20749var HeaderComponent = {
20750 propertyName: 'headerComponent',
20751 cellRenderer: false
20752};
20753var HeaderGroupComponent = {
20754 propertyName: 'headerGroupComponent',
20755 cellRenderer: false
20756};
20757var CellRendererComponent = {
20758 propertyName: 'cellRenderer',
20759 cellRenderer: true
20760};
20761var CellEditorComponent = {
20762 propertyName: 'cellEditor',
20763 cellRenderer: false
20764};
20765var InnerRendererComponent = {
20766 propertyName: 'innerRenderer',
20767 cellRenderer: true
20768};
20769var LoadingOverlayComponent = {
20770 propertyName: 'loadingOverlayComponent',
20771 cellRenderer: false
20772};
20773var NoRowsOverlayComponent = {
20774 propertyName: 'noRowsOverlayComponent',
20775 cellRenderer: false
20776};
20777var TooltipComponent = {
20778 propertyName: 'tooltipComponent',
20779 cellRenderer: false
20780};
20781var FilterComponent = {
20782 propertyName: 'filter',
20783 cellRenderer: false
20784};
20785var FloatingFilterComponent = {
20786 propertyName: 'floatingFilterComponent',
20787 cellRenderer: false
20788};
20789var ToolPanelComponent = {
20790 propertyName: 'toolPanel',
20791 cellRenderer: false
20792};
20793var StatusPanelComponent = {
20794 propertyName: 'statusPanel',
20795 cellRenderer: false
20796};
20797var FullWidth = {
20798 propertyName: 'fullWidthCellRenderer',
20799 cellRenderer: true
20800};
20801var FullWidthLoading = {
20802 propertyName: 'loadingCellRenderer',
20803 cellRenderer: true
20804};
20805var FullWidthGroup = {
20806 propertyName: 'groupRowRenderer',
20807 cellRenderer: true
20808};
20809var FullWidthDetail = {
20810 propertyName: 'detailCellRenderer',
20811 cellRenderer: true
20812};
20813
20814
20815
20816
20817/***/ }),
20818/* 104 */
20819/***/ (function(module, __webpack_exports__, __webpack_require__) {
20820
20821"use strict";
20822__webpack_require__.r(__webpack_exports__);
20823/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FloatingFilterMapper", function() { return FloatingFilterMapper; });
20824/**
20825 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
20826 * @version v27.3.0
20827 * @link https://www.ag-grid.com/
20828 * @license MIT
20829 */
20830var FloatingFilterMapper = /** @class */ (function () {
20831 function FloatingFilterMapper() {
20832 }
20833 FloatingFilterMapper.getFloatingFilterType = function (filterType) {
20834 return this.filterToFloatingFilterMapping[filterType];
20835 };
20836 FloatingFilterMapper.filterToFloatingFilterMapping = {
20837 set: 'agSetColumnFloatingFilter',
20838 agSetColumnFilter: 'agSetColumnFloatingFilter',
20839 multi: 'agMultiColumnFloatingFilter',
20840 agMultiColumnFilter: 'agMultiColumnFloatingFilter',
20841 number: 'agNumberColumnFloatingFilter',
20842 agNumberColumnFilter: 'agNumberColumnFloatingFilter',
20843 date: 'agDateColumnFloatingFilter',
20844 agDateColumnFilter: 'agDateColumnFloatingFilter',
20845 text: 'agTextColumnFloatingFilter',
20846 agTextColumnFilter: 'agTextColumnFloatingFilter'
20847 };
20848 return FloatingFilterMapper;
20849}());
20850
20851
20852
20853
20854
20855/***/ }),
20856/* 105 */
20857/***/ (function(module, __webpack_exports__, __webpack_require__) {
20858
20859"use strict";
20860__webpack_require__.r(__webpack_exports__);
20861/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ExcelFactoryMode", function() { return ExcelFactoryMode; });
20862/**
20863 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
20864 * @version v27.3.0
20865 * @link https://www.ag-grid.com/
20866 * @license MIT
20867 */
20868// Excel Export
20869var ExcelFactoryMode;
20870(function (ExcelFactoryMode) {
20871 ExcelFactoryMode[ExcelFactoryMode["SINGLE_SHEET"] = 0] = "SINGLE_SHEET";
20872 ExcelFactoryMode[ExcelFactoryMode["MULTI_SHEET"] = 1] = "MULTI_SHEET";
20873})(ExcelFactoryMode || (ExcelFactoryMode = {}));
20874
20875
20876
20877
20878/***/ }),
20879/* 106 */
20880/***/ (function(module, __webpack_exports__, __webpack_require__) {
20881
20882"use strict";
20883__webpack_require__.r(__webpack_exports__);
20884/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DragService", function() { return DragService; });
20885/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
20886/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(23);
20887/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(20);
20888/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7);
20889/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(18);
20890/* harmony import */ var _utils_mouse__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(50);
20891/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(43);
20892/**
20893 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
20894 * @version v27.3.0
20895 * @link https://www.ag-grid.com/
20896 * @license MIT
20897 */
20898var __extends = (undefined && undefined.__extends) || (function () {
20899 var extendStatics = function (d, b) {
20900 extendStatics = Object.setPrototypeOf ||
20901 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
20902 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
20903 return extendStatics(d, b);
20904 };
20905 return function (d, b) {
20906 extendStatics(d, b);
20907 function __() { this.constructor = d; }
20908 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
20909 };
20910})();
20911var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
20912 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20913 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
20914 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
20915 return c > 3 && r && Object.defineProperty(target, key, r), r;
20916};
20917
20918
20919
20920
20921
20922
20923
20924/** Adds drag listening onto an element. In AG Grid this is used twice, first is resizing columns,
20925 * second is moving the columns and column groups around (ie the 'drag' part of Drag and Drop. */
20926var DragService = /** @class */ (function (_super) {
20927 __extends(DragService, _super);
20928 function DragService() {
20929 var _this = _super !== null && _super.apply(this, arguments) || this;
20930 _this.dragEndFunctions = [];
20931 _this.dragSources = [];
20932 return _this;
20933 }
20934 DragService.prototype.init = function () {
20935 this.logger = this.loggerFactory.create('DragService');
20936 };
20937 DragService.prototype.removeAllListeners = function () {
20938 this.dragSources.forEach(this.removeListener.bind(this));
20939 this.dragSources.length = 0;
20940 };
20941 DragService.prototype.removeListener = function (dragSourceAndListener) {
20942 var element = dragSourceAndListener.dragSource.eElement;
20943 var mouseDownListener = dragSourceAndListener.mouseDownListener;
20944 element.removeEventListener('mousedown', mouseDownListener);
20945 // remove touch listener only if it exists
20946 if (dragSourceAndListener.touchEnabled) {
20947 var touchStartListener = dragSourceAndListener.touchStartListener;
20948 element.removeEventListener('touchstart', touchStartListener, { passive: true });
20949 }
20950 };
20951 DragService.prototype.removeDragSource = function (params) {
20952 var dragSourceAndListener = this.dragSources.find(function (item) { return item.dragSource === params; });
20953 if (!dragSourceAndListener) {
20954 return;
20955 }
20956 this.removeListener(dragSourceAndListener);
20957 Object(_utils_array__WEBPACK_IMPORTED_MODULE_4__["removeFromArray"])(this.dragSources, dragSourceAndListener);
20958 };
20959 DragService.prototype.isDragging = function () {
20960 return this.dragging;
20961 };
20962 DragService.prototype.addDragSource = function (params, includeTouch) {
20963 var _this = this;
20964 if (includeTouch === void 0) { includeTouch = false; }
20965 var mouseListener = this.onMouseDown.bind(this, params);
20966 params.eElement.addEventListener('mousedown', mouseListener);
20967 var touchListener = null;
20968 var suppressTouch = this.gridOptionsWrapper.isSuppressTouch();
20969 if (includeTouch && !suppressTouch) {
20970 touchListener = function (touchEvent) {
20971 if (touchEvent.cancelable) {
20972 touchEvent.preventDefault();
20973 }
20974 _this.onTouchStart(params, touchEvent);
20975 };
20976 params.eElement.addEventListener('touchstart', touchListener, { passive: true });
20977 }
20978 this.dragSources.push({
20979 dragSource: params,
20980 mouseDownListener: mouseListener,
20981 touchStartListener: touchListener,
20982 touchEnabled: includeTouch
20983 });
20984 };
20985 // gets called whenever mouse down on any drag source
20986 DragService.prototype.onTouchStart = function (params, touchEvent) {
20987 var _this = this;
20988 this.currentDragParams = params;
20989 this.dragging = false;
20990 var touch = touchEvent.touches[0];
20991 this.touchLastTime = touch;
20992 this.touchStart = touch;
20993 var touchMoveEvent = function (e) { return _this.onTouchMove(e, params.eElement); };
20994 var touchEndEvent = function (e) { return _this.onTouchUp(e, params.eElement); };
20995 var documentTouchMove = function (e) { if (e.cancelable) {
20996 e.preventDefault();
20997 } };
20998 var target = params.eElement;
20999 var events = [
21000 // Prevents the page document from moving while we are dragging items around.
21001 // preventDefault needs to be called in the touchmove listener and never inside the
21002 // touchstart, because using touchstart causes the click event to be cancelled on touch devices.
21003 { target: document, type: 'touchmove', listener: documentTouchMove, options: { passive: false } },
21004 { target: target, type: 'touchmove', listener: touchMoveEvent, options: { passive: true } },
21005 { target: target, type: 'touchend', listener: touchEndEvent, options: { passive: true } },
21006 { target: target, type: 'touchcancel', listener: touchEndEvent, options: { passive: true } }
21007 ];
21008 // temporally add these listeners, for the duration of the drag
21009 this.addTemporaryEvents(events);
21010 // see if we want to start dragging straight away
21011 if (params.dragStartPixels === 0) {
21012 this.onCommonMove(touch, this.touchStart, params.eElement);
21013 }
21014 };
21015 // gets called whenever mouse down on any drag source
21016 DragService.prototype.onMouseDown = function (params, mouseEvent) {
21017 var _this = this;
21018 var e = mouseEvent;
21019 if (params.skipMouseEvent && params.skipMouseEvent(mouseEvent)) {
21020 return;
21021 }
21022 // if there are two elements with parent / child relationship, and both are draggable,
21023 // when we drag the child, we should NOT drag the parent. an example of this is row moving
21024 // and range selection - row moving should get preference when use drags the rowDrag component.
21025 if (e._alreadyProcessedByDragService) {
21026 return;
21027 }
21028 e._alreadyProcessedByDragService = true;
21029 // only interested in left button clicks
21030 if (mouseEvent.button !== 0) {
21031 return;
21032 }
21033 this.currentDragParams = params;
21034 this.dragging = false;
21035 this.mouseStartEvent = mouseEvent;
21036 var eDocument = this.gridOptionsWrapper.getDocument();
21037 var mouseMoveEvent = function (event) { return _this.onMouseMove(event, params.eElement); };
21038 var mouseUpEvent = function (event) { return _this.onMouseUp(event, params.eElement); };
21039 var contextEvent = function (event) { return event.preventDefault(); };
21040 var target = eDocument;
21041 var events = [
21042 { target: target, type: 'mousemove', listener: mouseMoveEvent },
21043 { target: target, type: 'mouseup', listener: mouseUpEvent },
21044 { target: target, type: 'contextmenu', listener: contextEvent }
21045 ];
21046 // temporally add these listeners, for the duration of the drag
21047 this.addTemporaryEvents(events);
21048 //see if we want to start dragging straight away
21049 if (params.dragStartPixels === 0) {
21050 this.onMouseMove(mouseEvent, params.eElement);
21051 }
21052 };
21053 DragService.prototype.addTemporaryEvents = function (events) {
21054 events.forEach(function (currentEvent) {
21055 var target = currentEvent.target, type = currentEvent.type, listener = currentEvent.listener, options = currentEvent.options;
21056 target.addEventListener(type, listener, options);
21057 });
21058 this.dragEndFunctions.push(function () {
21059 events.forEach(function (currentEvent) {
21060 var target = currentEvent.target, type = currentEvent.type, listener = currentEvent.listener, options = currentEvent.options;
21061 target.removeEventListener(type, listener, options);
21062 });
21063 });
21064 };
21065 // returns true if the event is close to the original event by X pixels either vertically or horizontally.
21066 // we only start dragging after X pixels so this allows us to know if we should start dragging yet.
21067 DragService.prototype.isEventNearStartEvent = function (currentEvent, startEvent) {
21068 // by default, we wait 4 pixels before starting the drag
21069 var dragStartPixels = this.currentDragParams.dragStartPixels;
21070 var requiredPixelDiff = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["exists"])(dragStartPixels) ? dragStartPixels : 4;
21071 return Object(_utils_mouse__WEBPACK_IMPORTED_MODULE_5__["areEventsNear"])(currentEvent, startEvent, requiredPixelDiff);
21072 };
21073 DragService.prototype.getFirstActiveTouch = function (touchList) {
21074 for (var i = 0; i < touchList.length; i++) {
21075 if (touchList[i].identifier === this.touchStart.identifier) {
21076 return touchList[i];
21077 }
21078 }
21079 return null;
21080 };
21081 DragService.prototype.onCommonMove = function (currentEvent, startEvent, el) {
21082 if (!this.dragging) {
21083 // if mouse hasn't travelled from the start position enough, do nothing
21084 if (!this.dragging && this.isEventNearStartEvent(currentEvent, startEvent)) {
21085 return;
21086 }
21087 this.dragging = true;
21088 var event_1 = {
21089 type: _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_DRAG_STARTED,
21090 api: this.gridApi,
21091 columnApi: this.columnApi,
21092 target: el
21093 };
21094 this.eventService.dispatchEvent(event_1);
21095 this.currentDragParams.onDragStart(startEvent);
21096 // we need ONE drag action at the startEvent, so that we are guaranteed the drop target
21097 // at the start gets notified. this is because the drag can start outside of the element
21098 // that started it, as the mouse is allowed drag away from the mouse down before it's
21099 // considered a drag (the isEventNearStartEvent() above). if we didn't do this, then
21100 // it would be possible to click a column by the edge, then drag outside of the drop zone
21101 // in less than 4 pixels and the drag officially starts outside of the header but the header
21102 // wouldn't be notified of the dragging.
21103 this.currentDragParams.onDragging(startEvent);
21104 }
21105 this.currentDragParams.onDragging(currentEvent);
21106 };
21107 DragService.prototype.onTouchMove = function (touchEvent, el) {
21108 var touch = this.getFirstActiveTouch(touchEvent.touches);
21109 if (!touch) {
21110 return;
21111 }
21112 // this.___statusPanel.setInfoText(Math.random() + ' onTouchMove preventDefault stopPropagation');
21113 this.onCommonMove(touch, this.touchStart, el);
21114 };
21115 // only gets called after a mouse down - as this is only added after mouseDown
21116 // and is removed when mouseUp happens
21117 DragService.prototype.onMouseMove = function (mouseEvent, el) {
21118 // The event type can be `mousedown` when `dragStartPixels=0`
21119 // we should only preventDefault on `mousemove`.
21120 if (Object(_utils_browser__WEBPACK_IMPORTED_MODULE_6__["isBrowserSafari"])() &&
21121 mouseEvent.type === 'mousemove' &&
21122 mouseEvent.cancelable &&
21123 this.mouseEventService.isEventFromThisGrid(mouseEvent) &&
21124 !this.isOverFormFieldElement(mouseEvent)) {
21125 mouseEvent.preventDefault();
21126 }
21127 this.onCommonMove(mouseEvent, this.mouseStartEvent, el);
21128 };
21129 DragService.prototype.isOverFormFieldElement = function (mouseEvent) {
21130 var _a, _b;
21131 var el = mouseEvent.target;
21132 var tagName = (_a = el) === null || _a === void 0 ? void 0 : _a.tagName.toLocaleLowerCase();
21133 return !!((_b = tagName) === null || _b === void 0 ? void 0 : _b.match('^a$|textarea|input|select|button'));
21134 };
21135 DragService.prototype.onTouchUp = function (touchEvent, el) {
21136 var touch = this.getFirstActiveTouch(touchEvent.changedTouches);
21137 // i haven't worked this out yet, but there is no matching touch
21138 // when we get the touch up event. to get around this, we swap in
21139 // the last touch. this is a hack to 'get it working' while we
21140 // figure out what's going on, why we are not getting a touch in
21141 // current event.
21142 if (!touch) {
21143 touch = this.touchLastTime;
21144 }
21145 // if mouse was left up before we started to move, then this is a tap.
21146 // we check this before onUpCommon as onUpCommon resets the dragging
21147 // let tap = !this.dragging;
21148 // let tapTarget = this.currentDragParams.eElement;
21149 this.onUpCommon(touch, el);
21150 // if tap, tell user
21151 // console.log(`${Math.random()} tap = ${tap}`);
21152 // if (tap) {
21153 // tapTarget.click();
21154 // }
21155 };
21156 DragService.prototype.onMouseUp = function (mouseEvent, el) {
21157 this.onUpCommon(mouseEvent, el);
21158 };
21159 DragService.prototype.onUpCommon = function (eventOrTouch, el) {
21160 if (this.dragging) {
21161 this.dragging = false;
21162 this.currentDragParams.onDragStop(eventOrTouch);
21163 var event_2 = {
21164 type: _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_DRAG_STOPPED,
21165 api: this.gridApi,
21166 columnApi: this.columnApi,
21167 target: el
21168 };
21169 this.eventService.dispatchEvent(event_2);
21170 }
21171 this.mouseStartEvent = null;
21172 this.touchStart = null;
21173 this.touchLastTime = null;
21174 this.currentDragParams = null;
21175 this.dragEndFunctions.forEach(function (func) { return func(); });
21176 this.dragEndFunctions.length = 0;
21177 };
21178 __decorate([
21179 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('loggerFactory')
21180 ], DragService.prototype, "loggerFactory", void 0);
21181 __decorate([
21182 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
21183 ], DragService.prototype, "columnApi", void 0);
21184 __decorate([
21185 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
21186 ], DragService.prototype, "gridApi", void 0);
21187 __decorate([
21188 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('mouseEventService')
21189 ], DragService.prototype, "mouseEventService", void 0);
21190 __decorate([
21191 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
21192 ], DragService.prototype, "init", null);
21193 __decorate([
21194 _context_context__WEBPACK_IMPORTED_MODULE_0__["PreDestroy"]
21195 ], DragService.prototype, "removeAllListeners", null);
21196 DragService = __decorate([
21197 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('dragService')
21198 ], DragService);
21199 return DragService;
21200}(_context_beanStub__WEBPACK_IMPORTED_MODULE_2__["BeanStub"]));
21201
21202
21203
21204
21205
21206/***/ }),
21207/* 107 */
21208/***/ (function(module, __webpack_exports__, __webpack_require__) {
21209
21210"use strict";
21211__webpack_require__.r(__webpack_exports__);
21212/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FilterManager", function() { return FilterManager; });
21213/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(37);
21214/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
21215/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23);
21216/* harmony import */ var _modules_moduleNames__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(16);
21217/* harmony import */ var _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(17);
21218/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(20);
21219/* harmony import */ var _utils_set__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(52);
21220/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(7);
21221/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(13);
21222/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(42);
21223/**
21224 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
21225 * @version v27.3.0
21226 * @link https://www.ag-grid.com/
21227 * @license MIT
21228 */
21229var __extends = (undefined && undefined.__extends) || (function () {
21230 var extendStatics = function (d, b) {
21231 extendStatics = Object.setPrototypeOf ||
21232 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
21233 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
21234 return extendStatics(d, b);
21235 };
21236 return function (d, b) {
21237 extendStatics(d, b);
21238 function __() { this.constructor = d; }
21239 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
21240 };
21241})();
21242var __assign = (undefined && undefined.__assign) || function () {
21243 __assign = Object.assign || function(t) {
21244 for (var s, i = 1, n = arguments.length; i < n; i++) {
21245 s = arguments[i];
21246 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
21247 t[p] = s[p];
21248 }
21249 return t;
21250 };
21251 return __assign.apply(this, arguments);
21252};
21253var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
21254 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
21255 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21256 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
21257 return c > 3 && r && Object.defineProperty(target, key, r), r;
21258};
21259
21260
21261
21262
21263
21264
21265
21266
21267
21268
21269var FilterManager = /** @class */ (function (_super) {
21270 __extends(FilterManager, _super);
21271 function FilterManager() {
21272 var _this = _super !== null && _super.apply(this, arguments) || this;
21273 _this.allColumnFilters = new Map();
21274 _this.activeAggregateFilters = [];
21275 _this.activeColumnFilters = [];
21276 _this.quickFilter = null;
21277 _this.quickFilterParts = null;
21278 // this is true when the grid is processing the filter change. this is used by the cell comps, so that they
21279 // don't flash when data changes due to filter changes. there is no need to flash when filter changes as the
21280 // user is in control, so doesn't make sense to show flashing changes. for example, go to main demo where
21281 // this feature is turned off (hack code to always return false for isSuppressFlashingCellsBecauseFiltering(), put in)
21282 // 100,000 rows and group by country. then do some filtering. all the cells flash, which is silly.
21283 _this.processingFilterChange = false;
21284 return _this;
21285 }
21286 FilterManager_1 = FilterManager;
21287 FilterManager.prototype.init = function () {
21288 var _this = this;
21289 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_GRID_COLUMNS_CHANGED, function () { return _this.onColumnsChanged(); });
21290 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_VALUE_CHANGED, function () { return _this.refreshFiltersForAggregations(); });
21291 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_PIVOT_CHANGED, function () { return _this.refreshFiltersForAggregations(); });
21292 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_PIVOT_MODE_CHANGED, function () { return _this.refreshFiltersForAggregations(); });
21293 this.quickFilter = this.parseQuickFilter(this.gridOptionsWrapper.getQuickFilterText());
21294 this.setQuickFilterParts();
21295 this.allowShowChangeAfterFilter = this.gridOptionsWrapper.isAllowShowChangeAfterFilter();
21296 };
21297 FilterManager.prototype.setQuickFilterParts = function () {
21298 this.quickFilterParts = this.quickFilter ? this.quickFilter.split(' ') : null;
21299 };
21300 FilterManager.prototype.setFilterModel = function (model) {
21301 var _this = this;
21302 var allPromises = [];
21303 var previousModel = this.getFilterModel();
21304 if (model) {
21305 // mark the filters as we set them, so any active filters left over we stop
21306 var modelKeys_1 = Object(_utils_set__WEBPACK_IMPORTED_MODULE_6__["convertToSet"])(Object.keys(model));
21307 this.allColumnFilters.forEach(function (filterWrapper, colId) {
21308 var newModel = model[colId];
21309 allPromises.push(_this.setModelOnFilterWrapper(filterWrapper.filterPromise, newModel));
21310 modelKeys_1.delete(colId);
21311 });
21312 // at this point, processedFields contains data for which we don't have a filter working yet
21313 modelKeys_1.forEach(function (colId) {
21314 var column = _this.columnModel.getPrimaryColumn(colId) || _this.columnModel.getGridColumn(colId);
21315 if (!column) {
21316 console.warn('AG Grid: setFilterModel() - no column found for colId: ' + colId);
21317 return;
21318 }
21319 if (!column.isFilterAllowed()) {
21320 console.warn('AG Grid: setFilterModel() - unable to fully apply model, filtering disabled for colId: ' + colId);
21321 return;
21322 }
21323 var filterWrapper = _this.getOrCreateFilterWrapper(column, 'NO_UI');
21324 if (!filterWrapper) {
21325 console.warn('AG-Grid: setFilterModel() - unable to fully apply model, unable to create filter for colId: ' + colId);
21326 return;
21327 }
21328 allPromises.push(_this.setModelOnFilterWrapper(filterWrapper.filterPromise, model[colId]));
21329 });
21330 }
21331 else {
21332 this.allColumnFilters.forEach(function (filterWrapper) {
21333 allPromises.push(_this.setModelOnFilterWrapper(filterWrapper.filterPromise, null));
21334 });
21335 }
21336 _utils__WEBPACK_IMPORTED_MODULE_0__["AgPromise"].all(allPromises).then(function () {
21337 var currentModel = _this.getFilterModel();
21338 var columns = [];
21339 _this.allColumnFilters.forEach(function (filterWrapper, colId) {
21340 var before = previousModel ? previousModel[colId] : null;
21341 var after = currentModel ? currentModel[colId] : null;
21342 if (!_utils__WEBPACK_IMPORTED_MODULE_0__["_"].jsonEquals(before, after)) {
21343 columns.push(filterWrapper.column);
21344 }
21345 });
21346 if (columns.length > 0) {
21347 _this.onFilterChanged({ columns: columns });
21348 }
21349 });
21350 };
21351 FilterManager.prototype.setModelOnFilterWrapper = function (filterPromise, newModel) {
21352 return new _utils__WEBPACK_IMPORTED_MODULE_0__["AgPromise"](function (resolve) {
21353 filterPromise.then(function (filter) {
21354 if (typeof filter.setModel !== 'function') {
21355 console.warn('AG Grid: filter missing setModel method, which is needed for setFilterModel');
21356 resolve();
21357 }
21358 (filter.setModel(newModel) || _utils__WEBPACK_IMPORTED_MODULE_0__["AgPromise"].resolve()).then(function () { return resolve(); });
21359 });
21360 });
21361 };
21362 FilterManager.prototype.getFilterModel = function () {
21363 var result = {};
21364 this.allColumnFilters.forEach(function (filterWrapper, key) {
21365 // because user can provide filters, we provide useful error checking and messages
21366 var filterPromise = filterWrapper.filterPromise;
21367 var filter = filterPromise.resolveNow(null, function (promiseFilter) { return promiseFilter; });
21368 if (filter == null) {
21369 return null;
21370 }
21371 if (typeof filter.getModel !== 'function') {
21372 console.warn('AG Grid: filter API missing getModel method, which is needed for getFilterModel');
21373 return;
21374 }
21375 var model = filter.getModel();
21376 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_7__["exists"])(model)) {
21377 result[key] = model;
21378 }
21379 });
21380 return result;
21381 };
21382 FilterManager.prototype.isColumnFilterPresent = function () {
21383 return this.activeColumnFilters.length > 0;
21384 };
21385 FilterManager.prototype.isAggregateFilterPresent = function () {
21386 return !!this.activeAggregateFilters.length;
21387 };
21388 FilterManager.prototype.doAggregateFiltersPass = function (node, filterToSkip) {
21389 return this.doColumnFiltersPass(node, filterToSkip, true);
21390 };
21391 // called by:
21392 // 1) onFilterChanged()
21393 // 2) onNewRowsLoaded()
21394 FilterManager.prototype.updateActiveFilters = function () {
21395 var _this = this;
21396 this.activeColumnFilters.length = 0;
21397 this.activeAggregateFilters.length = 0;
21398 var isFilterActive = function (filter) {
21399 if (!filter) {
21400 return false;
21401 } // this never happens, including to avoid compile error
21402 if (!filter.isFilterActive) {
21403 console.warn('AG Grid: Filter is missing isFilterActive() method');
21404 return false;
21405 }
21406 return filter.isFilterActive();
21407 };
21408 var groupFilterEnabled = !!this.gridOptionsWrapper.getGroupAggFiltering();
21409 var isAggFilter = function (column) {
21410 var isSecondary = !column.isPrimary();
21411 // the only filters that can appear on secondary columns are groupAgg filters
21412 if (isSecondary) {
21413 return true;
21414 }
21415 var isShowingPrimaryColumns = !_this.columnModel.isPivotActive();
21416 var isValueActive = column.isValueActive();
21417 // primary columns are only ever groupAgg filters if a) value is active and b) showing primary columns
21418 if (!isValueActive || !isShowingPrimaryColumns) {
21419 return false;
21420 }
21421 // from here on we know: isPrimary=true, isValueActive=true, isShowingPrimaryColumns=true
21422 if (_this.columnModel.isPivotMode()) {
21423 // primary column is pretending to be a pivot column, ie pivotMode=true, but we are
21424 // still showing primary columns
21425 return true;
21426 }
21427 else {
21428 // we are not pivoting, so we groupFilter when it's an agg column
21429 return groupFilterEnabled;
21430 }
21431 };
21432 this.allColumnFilters.forEach(function (filterWrapper) {
21433 if (filterWrapper.filterPromise.resolveNow(false, isFilterActive)) {
21434 var filterComp = filterWrapper.filterPromise.resolveNow(null, function (filter) { return filter; });
21435 if (isAggFilter(filterWrapper.column)) {
21436 _this.activeAggregateFilters.push(filterComp);
21437 }
21438 else {
21439 _this.activeColumnFilters.push(filterComp);
21440 }
21441 }
21442 });
21443 };
21444 FilterManager.prototype.updateFilterFlagInColumns = function (source, additionalEventAttributes) {
21445 this.allColumnFilters.forEach(function (filterWrapper) {
21446 var isFilterActive = filterWrapper.filterPromise.resolveNow(false, function (filter) { return filter.isFilterActive(); });
21447 filterWrapper.column.setFilterActive(isFilterActive, source, additionalEventAttributes);
21448 });
21449 };
21450 FilterManager.prototype.isAnyFilterPresent = function () {
21451 return this.isQuickFilterPresent() || this.isColumnFilterPresent() || this.isAggregateFilterPresent() || this.gridOptionsWrapper.isExternalFilterPresent();
21452 };
21453 FilterManager.prototype.doColumnFiltersPass = function (node, filterToSkip, targetAggregates) {
21454 var data = node.data, aggData = node.aggData;
21455 var targetedFilters = targetAggregates ? this.activeAggregateFilters : this.activeColumnFilters;
21456 var targetedData = targetAggregates ? aggData : data;
21457 for (var i = 0; i < targetedFilters.length; i++) {
21458 var filter = targetedFilters[i];
21459 if (filter == null || filter === filterToSkip) {
21460 continue;
21461 }
21462 if (typeof filter.doesFilterPass !== 'function') {
21463 // because users can do custom filters, give nice error message
21464 throw new Error('Filter is missing method doesFilterPass');
21465 }
21466 if (!filter.doesFilterPass({ node: node, data: targetedData })) {
21467 return false;
21468 }
21469 }
21470 return true;
21471 };
21472 FilterManager.prototype.parseQuickFilter = function (newFilter) {
21473 if (!Object(_utils_generic__WEBPACK_IMPORTED_MODULE_7__["exists"])(newFilter)) {
21474 return null;
21475 }
21476 if (!this.gridOptionsWrapper.isRowModelDefault()) {
21477 console.warn('AG Grid - Quick filtering only works with the Client-Side Row Model');
21478 return null;
21479 }
21480 return newFilter.toUpperCase();
21481 };
21482 FilterManager.prototype.setQuickFilter = function (newFilter) {
21483 if (newFilter != null && typeof newFilter !== 'string') {
21484 console.warn("AG Grid - setQuickFilter() only supports string inputs, received: " + typeof newFilter);
21485 return;
21486 }
21487 var parsedFilter = this.parseQuickFilter(newFilter);
21488 if (this.quickFilter !== parsedFilter) {
21489 this.quickFilter = parsedFilter;
21490 this.setQuickFilterParts();
21491 this.onFilterChanged();
21492 }
21493 };
21494 FilterManager.prototype.refreshFiltersForAggregations = function () {
21495 var isAggFiltering = this.gridOptionsWrapper.getGroupAggFiltering();
21496 if (isAggFiltering) {
21497 this.onFilterChanged();
21498 }
21499 };
21500 // sometimes (especially in React) the filter can call onFilterChanged when we are in the middle
21501 // of a render cycle. this would be bad, so we wait for render cycle to complete when this happens.
21502 // this happens in react when we change React State in the grid (eg setting RowCtrl's in RowContainer)
21503 // which results in React State getting applied in the main application, triggering a useEffect() to
21504 // be kicked off adn then the application calling the grid's API. in AG-6554, the custom filter was
21505 // getting it's useEffect() triggered in this way.
21506 FilterManager.prototype.callOnFilterChangedOutsideRenderCycle = function (params) {
21507 var _this = this;
21508 if (params === void 0) { params = {}; }
21509 var action = function () { return _this.onFilterChanged(params); };
21510 if (this.rowRenderer.isRefreshInProgress()) {
21511 setTimeout(action, 0);
21512 }
21513 else {
21514 action();
21515 }
21516 };
21517 FilterManager.prototype.onFilterChanged = function (params) {
21518 if (params === void 0) { params = {}; }
21519 var filterInstance = params.filterInstance, additionalEventAttributes = params.additionalEventAttributes, columns = params.columns;
21520 this.updateActiveFilters();
21521 this.updateFilterFlagInColumns('filterChanged', additionalEventAttributes);
21522 this.allColumnFilters.forEach(function (filterWrapper) {
21523 if (!filterWrapper.filterPromise) {
21524 return;
21525 }
21526 filterWrapper.filterPromise.then(function (filter) {
21527 if (filter && filter !== filterInstance && filter.onAnyFilterChanged) {
21528 filter.onAnyFilterChanged();
21529 }
21530 });
21531 });
21532 var filterChangedEvent = {
21533 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_FILTER_CHANGED,
21534 api: this.gridApi,
21535 columnApi: this.columnApi,
21536 columns: columns || [],
21537 };
21538 if (additionalEventAttributes) {
21539 Object(_utils_object__WEBPACK_IMPORTED_MODULE_8__["mergeDeep"])(filterChangedEvent, additionalEventAttributes);
21540 }
21541 // because internal events are not async in ag-grid, when the dispatchEvent
21542 // method comes back, we know all listeners have finished executing.
21543 this.processingFilterChange = true;
21544 this.eventService.dispatchEvent(filterChangedEvent);
21545 this.processingFilterChange = false;
21546 };
21547 FilterManager.prototype.isSuppressFlashingCellsBecauseFiltering = function () {
21548 // if user has elected to always flash cell changes, then always return false, otherwise we suppress flashing
21549 // changes when filtering
21550 return !this.allowShowChangeAfterFilter && this.processingFilterChange;
21551 };
21552 FilterManager.prototype.isQuickFilterPresent = function () {
21553 return this.quickFilter !== null;
21554 };
21555 FilterManager.prototype.doesRowPassOtherFilters = function (filterToSkip, node) {
21556 return this.doesRowPassFilter({ rowNode: node, filterInstanceToSkip: filterToSkip });
21557 };
21558 FilterManager.prototype.doesRowPassQuickFilterNoCache = function (node, filterPart) {
21559 var _this = this;
21560 var columns = this.columnModel.getAllColumnsForQuickFilter();
21561 return columns.some(function (column) {
21562 var part = _this.getQuickFilterTextForColumn(column, node);
21563 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_7__["exists"])(part) && part.indexOf(filterPart) >= 0;
21564 });
21565 };
21566 FilterManager.prototype.doesRowPassQuickFilterCache = function (node, filterPart) {
21567 if (!node.quickFilterAggregateText) {
21568 this.aggregateRowForQuickFilter(node);
21569 }
21570 return node.quickFilterAggregateText.indexOf(filterPart) >= 0;
21571 };
21572 FilterManager.prototype.doesRowPassQuickFilter = function (node) {
21573 var _this = this;
21574 var usingCache = this.gridOptionsWrapper.isCacheQuickFilter();
21575 // each part must pass, if any fails, then the whole filter fails
21576 return this.quickFilterParts.every(function (part) {
21577 return usingCache ? _this.doesRowPassQuickFilterCache(node, part) : _this.doesRowPassQuickFilterNoCache(node, part);
21578 });
21579 };
21580 FilterManager.prototype.doesRowPassAggregateFilters = function (params) {
21581 if (this.isAggregateFilterPresent() && !this.doAggregateFiltersPass(params.rowNode, params.filterInstanceToSkip)) {
21582 return false;
21583 }
21584 // got this far, all filters pass
21585 return true;
21586 };
21587 FilterManager.prototype.doesRowPassFilter = function (params) {
21588 // the row must pass ALL of the filters, so if any of them fail,
21589 // we return true. that means if a row passes the quick filter,
21590 // but fails the column filter, it fails overall
21591 // first up, check quick filter
21592 if (this.isQuickFilterPresent() && !this.doesRowPassQuickFilter(params.rowNode)) {
21593 return false;
21594 }
21595 // secondly, give the client a chance to reject this row
21596 if (this.gridOptionsWrapper.isExternalFilterPresent() && !this.gridOptionsWrapper.doesExternalFilterPass(params.rowNode)) {
21597 return false;
21598 }
21599 // lastly, check column filter
21600 if (this.isColumnFilterPresent() && !this.doColumnFiltersPass(params.rowNode, params.filterInstanceToSkip)) {
21601 return false;
21602 }
21603 // got this far, all filters pass
21604 return true;
21605 };
21606 FilterManager.prototype.getQuickFilterTextForColumn = function (column, node) {
21607 var value = this.valueService.getValue(column, node, true);
21608 var colDef = column.getColDef();
21609 if (colDef.getQuickFilterText) {
21610 var params = {
21611 value: value,
21612 node: node,
21613 data: node.data,
21614 column: column,
21615 colDef: colDef,
21616 api: this.gridOptionsWrapper.getApi(),
21617 columnApi: this.gridOptionsWrapper.getColumnApi(),
21618 context: this.gridOptionsWrapper.getContext()
21619 };
21620 value = colDef.getQuickFilterText(params);
21621 }
21622 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_7__["exists"])(value) ? value.toString().toUpperCase() : null;
21623 };
21624 FilterManager.prototype.aggregateRowForQuickFilter = function (node) {
21625 var _this = this;
21626 var stringParts = [];
21627 var columns = this.columnModel.getAllColumnsForQuickFilter();
21628 columns.forEach(function (column) {
21629 var part = _this.getQuickFilterTextForColumn(column, node);
21630 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_7__["exists"])(part)) {
21631 stringParts.push(part);
21632 }
21633 });
21634 node.quickFilterAggregateText = stringParts.join(FilterManager_1.QUICK_FILTER_SEPARATOR);
21635 };
21636 FilterManager.prototype.onNewRowsLoaded = function (source) {
21637 this.allColumnFilters.forEach(function (filterWrapper) {
21638 filterWrapper.filterPromise.then(function (filter) {
21639 if (filter.onNewRowsLoaded) {
21640 filter.onNewRowsLoaded();
21641 }
21642 });
21643 });
21644 this.updateFilterFlagInColumns(source);
21645 this.updateActiveFilters();
21646 };
21647 FilterManager.prototype.createValueGetter = function (column) {
21648 var _this = this;
21649 return function (_a) {
21650 var node = _a.node;
21651 return _this.valueService.getValue(column, node, true);
21652 };
21653 };
21654 FilterManager.prototype.getFilterComponent = function (column, source, createIfDoesNotExist) {
21655 if (createIfDoesNotExist === void 0) { createIfDoesNotExist = true; }
21656 var _a;
21657 if (createIfDoesNotExist) {
21658 return ((_a = this.getOrCreateFilterWrapper(column, source)) === null || _a === void 0 ? void 0 : _a.filterPromise) || null;
21659 }
21660 var filterWrapper = this.cachedFilter(column);
21661 return filterWrapper ? filterWrapper.filterPromise : null;
21662 };
21663 FilterManager.prototype.isFilterActive = function (column) {
21664 var filterWrapper = this.cachedFilter(column);
21665 return !!filterWrapper && filterWrapper.filterPromise.resolveNow(false, function (filter) { return filter.isFilterActive(); });
21666 };
21667 FilterManager.prototype.getOrCreateFilterWrapper = function (column, source) {
21668 if (!column.isFilterAllowed()) {
21669 return null;
21670 }
21671 var filterWrapper = this.cachedFilter(column);
21672 if (!filterWrapper) {
21673 filterWrapper = this.createFilterWrapper(column, source);
21674 this.allColumnFilters.set(column.getColId(), filterWrapper);
21675 }
21676 else if (source !== 'NO_UI') {
21677 this.putIntoGui(filterWrapper, source);
21678 }
21679 return filterWrapper;
21680 };
21681 FilterManager.prototype.cachedFilter = function (column) {
21682 return this.allColumnFilters.get(column.getColId());
21683 };
21684 FilterManager.prototype.createFilterInstance = function (column) {
21685 var _this = this;
21686 var defaultFilter = _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_4__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_3__["ModuleNames"].SetFilterModule) ? 'agSetColumnFilter' : 'agTextColumnFilter';
21687 var colDef = column.getColDef();
21688 var filterInstance;
21689 var params = __assign(__assign({}, this.createFilterParams(column, colDef)), { filterModifiedCallback: function () {
21690 var event = {
21691 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_FILTER_MODIFIED,
21692 api: _this.gridApi,
21693 columnApi: _this.columnApi,
21694 column: column,
21695 filterInstance: filterInstance
21696 };
21697 _this.eventService.dispatchEvent(event);
21698 }, filterChangedCallback: function (additionalEventAttributes) {
21699 var params = { filterInstance: filterInstance, additionalEventAttributes: additionalEventAttributes, columns: [column] };
21700 _this.callOnFilterChangedOutsideRenderCycle(params);
21701 }, doesRowPassOtherFilter: function (node) { return _this.doesRowPassOtherFilters(filterInstance, node); } });
21702 var compDetails = this.userComponentFactory.getFilterDetails(colDef, params, defaultFilter);
21703 if (!compDetails) {
21704 return null;
21705 }
21706 var componentPromise = compDetails.newAgStackInstance();
21707 if (componentPromise) {
21708 componentPromise.then(function (r) { return filterInstance = r; });
21709 }
21710 return componentPromise;
21711 };
21712 FilterManager.prototype.createFilterParams = function (column, colDef) {
21713 var params = {
21714 api: this.gridOptionsWrapper.getApi(),
21715 columnApi: this.gridOptionsWrapper.getColumnApi(),
21716 column: column,
21717 colDef: Object(_utils_object__WEBPACK_IMPORTED_MODULE_8__["cloneObject"])(colDef),
21718 rowModel: this.rowModel,
21719 filterChangedCallback: function () { },
21720 filterModifiedCallback: function () { },
21721 valueGetter: this.createValueGetter(column),
21722 context: this.gridOptionsWrapper.getContext(),
21723 doesRowPassOtherFilter: function () { return true; },
21724 };
21725 return params;
21726 };
21727 FilterManager.prototype.createFilterWrapper = function (column, source) {
21728 var filterWrapper = {
21729 column: column,
21730 filterPromise: null,
21731 compiledElement: null,
21732 guiPromise: _utils__WEBPACK_IMPORTED_MODULE_0__["AgPromise"].resolve(null)
21733 };
21734 filterWrapper.filterPromise = this.createFilterInstance(column);
21735 if (filterWrapper.filterPromise) {
21736 this.putIntoGui(filterWrapper, source);
21737 }
21738 return filterWrapper;
21739 };
21740 FilterManager.prototype.putIntoGui = function (filterWrapper, source) {
21741 var _this = this;
21742 var eFilterGui = document.createElement('div');
21743 eFilterGui.className = 'ag-filter';
21744 filterWrapper.guiPromise = new _utils__WEBPACK_IMPORTED_MODULE_0__["AgPromise"](function (resolve) {
21745 filterWrapper.filterPromise.then(function (filter) {
21746 var guiFromFilter = filter.getGui();
21747 if (!Object(_utils_generic__WEBPACK_IMPORTED_MODULE_7__["exists"])(guiFromFilter)) {
21748 console.warn("AG Grid: getGui method from filter returned " + guiFromFilter + ", it should be a DOM element or an HTML template string.");
21749 }
21750 // for backwards compatibility with Angular 1 - we
21751 // used to allow providing back HTML from getGui().
21752 // once we move away from supporting Angular 1
21753 // directly, we can change this.
21754 if (typeof guiFromFilter === 'string') {
21755 guiFromFilter = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_9__["loadTemplate"])(guiFromFilter);
21756 }
21757 eFilterGui.appendChild(guiFromFilter);
21758 resolve(eFilterGui);
21759 _this.eventService.dispatchEvent({
21760 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_FILTER_OPENED,
21761 column: filterWrapper.column,
21762 source: source,
21763 eGui: eFilterGui,
21764 api: _this.gridApi,
21765 columnApi: _this.columnApi
21766 });
21767 });
21768 });
21769 };
21770 FilterManager.prototype.onColumnsChanged = function () {
21771 var _this = this;
21772 var columns = [];
21773 this.allColumnFilters.forEach(function (wrapper, colId) {
21774 var currentColumn;
21775 if (wrapper.column.isPrimary()) {
21776 currentColumn = _this.columnModel.getPrimaryColumn(colId);
21777 }
21778 else {
21779 currentColumn = _this.columnModel.getGridColumn(colId);
21780 }
21781 if (currentColumn) {
21782 return;
21783 }
21784 columns.push(wrapper.column);
21785 _this.disposeFilterWrapper(wrapper, 'filterDestroyed');
21786 });
21787 if (columns.length > 0) {
21788 this.onFilterChanged({ columns: columns });
21789 }
21790 };
21791 // destroys the filter, so it not longer takes part
21792 FilterManager.prototype.destroyFilter = function (column, source) {
21793 if (source === void 0) { source = 'api'; }
21794 var filterWrapper = this.allColumnFilters.get(column.getColId());
21795 if (filterWrapper) {
21796 this.disposeFilterWrapper(filterWrapper, source);
21797 this.onFilterChanged({ columns: [column] });
21798 }
21799 };
21800 FilterManager.prototype.disposeFilterWrapper = function (filterWrapper, source) {
21801 var _this = this;
21802 filterWrapper.filterPromise.then(function (filter) {
21803 (filter.setModel(null) || _utils__WEBPACK_IMPORTED_MODULE_0__["AgPromise"].resolve()).then(function () {
21804 _this.getContext().destroyBean(filter);
21805 filterWrapper.column.setFilterActive(false, source);
21806 _this.allColumnFilters.delete(filterWrapper.column.getColId());
21807 });
21808 });
21809 };
21810 FilterManager.prototype.destroy = function () {
21811 var _this = this;
21812 _super.prototype.destroy.call(this);
21813 this.allColumnFilters.forEach(function (filterWrapper) { return _this.disposeFilterWrapper(filterWrapper, 'filterDestroyed'); });
21814 };
21815 var FilterManager_1;
21816 FilterManager.QUICK_FILTER_SEPARATOR = '\n';
21817 __decorate([
21818 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('valueService')
21819 ], FilterManager.prototype, "valueService", void 0);
21820 __decorate([
21821 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
21822 ], FilterManager.prototype, "columnModel", void 0);
21823 __decorate([
21824 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('rowModel')
21825 ], FilterManager.prototype, "rowModel", void 0);
21826 __decorate([
21827 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnApi')
21828 ], FilterManager.prototype, "columnApi", void 0);
21829 __decorate([
21830 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridApi')
21831 ], FilterManager.prototype, "gridApi", void 0);
21832 __decorate([
21833 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('userComponentFactory')
21834 ], FilterManager.prototype, "userComponentFactory", void 0);
21835 __decorate([
21836 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('rowRenderer')
21837 ], FilterManager.prototype, "rowRenderer", void 0);
21838 __decorate([
21839 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
21840 ], FilterManager.prototype, "init", null);
21841 __decorate([
21842 _context_context__WEBPACK_IMPORTED_MODULE_1__["PreDestroy"]
21843 ], FilterManager.prototype, "destroy", null);
21844 FilterManager = FilterManager_1 = __decorate([
21845 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('filterManager')
21846 ], FilterManager);
21847 return FilterManager;
21848}(_context_beanStub__WEBPACK_IMPORTED_MODULE_5__["BeanStub"]));
21849
21850
21851
21852
21853
21854/***/ }),
21855/* 108 */
21856/***/ (function(module, __webpack_exports__, __webpack_require__) {
21857
21858"use strict";
21859__webpack_require__.r(__webpack_exports__);
21860/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderFilterCellComp", function() { return HeaderFilterCellComp; });
21861/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
21862/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
21863/* harmony import */ var _abstractCell_abstractHeaderCellComp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(109);
21864/**
21865 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
21866 * @version v27.3.0
21867 * @link https://www.ag-grid.com/
21868 * @license MIT
21869 */
21870var __extends = (undefined && undefined.__extends) || (function () {
21871 var extendStatics = function (d, b) {
21872 extendStatics = Object.setPrototypeOf ||
21873 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
21874 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
21875 return extendStatics(d, b);
21876 };
21877 return function (d, b) {
21878 extendStatics(d, b);
21879 function __() { this.constructor = d; }
21880 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
21881 };
21882})();
21883var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
21884 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
21885 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21886 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
21887 return c > 3 && r && Object.defineProperty(target, key, r), r;
21888};
21889
21890
21891
21892var HeaderFilterCellComp = /** @class */ (function (_super) {
21893 __extends(HeaderFilterCellComp, _super);
21894 function HeaderFilterCellComp(ctrl) {
21895 return _super.call(this, HeaderFilterCellComp.TEMPLATE, ctrl) || this;
21896 }
21897 HeaderFilterCellComp.prototype.postConstruct = function () {
21898 var _this = this;
21899 var eGui = this.getGui();
21900 var compProxy = {
21901 addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },
21902 addOrRemoveBodyCssClass: function (cssClassName, on) { return _this.eFloatingFilterBody.classList.toggle(cssClassName, on); },
21903 addOrRemoveButtonWrapperCssClass: function (cssClassName, on) { return _this.eButtonWrapper.classList.toggle(cssClassName, on); },
21904 setCompDetails: function (compDetails) { return _this.setCompDetails(compDetails); },
21905 getFloatingFilterComp: function () { return _this.compPromise; },
21906 setWidth: function (width) { return eGui.style.width = width; },
21907 setMenuIcon: function (eIcon) { return _this.eButtonShowMainFilter.appendChild(eIcon); }
21908 };
21909 this.ctrl.setComp(compProxy, eGui, this.eButtonShowMainFilter, this.eFloatingFilterBody);
21910 };
21911 HeaderFilterCellComp.prototype.setCompDetails = function (compDetails) {
21912 var _this = this;
21913 // because we are providing defaultFloatingFilterType, we know it will never be undefined;
21914 this.compPromise = compDetails.newAgStackInstance();
21915 this.compPromise.then(function (comp) { return _this.afterCompCreated(comp); });
21916 };
21917 HeaderFilterCellComp.prototype.afterCompCreated = function (comp) {
21918 var _this = this;
21919 if (!comp) {
21920 return;
21921 }
21922 this.addDestroyFunc(function () { return _this.context.destroyBean(comp); });
21923 if (!this.isAlive()) {
21924 return;
21925 }
21926 this.eFloatingFilterBody.appendChild(comp.getGui());
21927 if (comp.afterGuiAttached) {
21928 comp.afterGuiAttached();
21929 }
21930 };
21931 HeaderFilterCellComp.TEMPLATE = "<div class=\"ag-header-cell ag-floating-filter\" role=\"gridcell\" tabindex=\"-1\">\n <div ref=\"eFloatingFilterBody\" role=\"presentation\"></div>\n <div class=\"ag-floating-filter-button ag-hidden\" ref=\"eButtonWrapper\" role=\"presentation\">\n <button type=\"button\" aria-label=\"Open Filter Menu\" class=\"ag-floating-filter-button-button\" ref=\"eButtonShowMainFilter\" tabindex=\"-1\"></button>\n </div>\n </div>";
21932 __decorate([
21933 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eFloatingFilterBody')
21934 ], HeaderFilterCellComp.prototype, "eFloatingFilterBody", void 0);
21935 __decorate([
21936 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eButtonWrapper')
21937 ], HeaderFilterCellComp.prototype, "eButtonWrapper", void 0);
21938 __decorate([
21939 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eButtonShowMainFilter')
21940 ], HeaderFilterCellComp.prototype, "eButtonShowMainFilter", void 0);
21941 __decorate([
21942 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
21943 ], HeaderFilterCellComp.prototype, "postConstruct", null);
21944 return HeaderFilterCellComp;
21945}(_abstractCell_abstractHeaderCellComp__WEBPACK_IMPORTED_MODULE_2__["AbstractHeaderCellComp"]));
21946
21947
21948
21949
21950
21951/***/ }),
21952/* 109 */
21953/***/ (function(module, __webpack_exports__, __webpack_require__) {
21954
21955"use strict";
21956__webpack_require__.r(__webpack_exports__);
21957/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AbstractHeaderCellComp", function() { return AbstractHeaderCellComp; });
21958/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
21959/**
21960 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
21961 * @version v27.3.0
21962 * @link https://www.ag-grid.com/
21963 * @license MIT
21964 */
21965var __extends = (undefined && undefined.__extends) || (function () {
21966 var extendStatics = function (d, b) {
21967 extendStatics = Object.setPrototypeOf ||
21968 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
21969 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
21970 return extendStatics(d, b);
21971 };
21972 return function (d, b) {
21973 extendStatics(d, b);
21974 function __() { this.constructor = d; }
21975 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
21976 };
21977})();
21978
21979var AbstractHeaderCellComp = /** @class */ (function (_super) {
21980 __extends(AbstractHeaderCellComp, _super);
21981 function AbstractHeaderCellComp(template, ctrl) {
21982 var _this = _super.call(this, template) || this;
21983 _this.ctrl = ctrl;
21984 return _this;
21985 }
21986 AbstractHeaderCellComp.prototype.getCtrl = function () {
21987 return this.ctrl;
21988 };
21989 return AbstractHeaderCellComp;
21990}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
21991
21992
21993
21994
21995
21996/***/ }),
21997/* 110 */
21998/***/ (function(module, __webpack_exports__, __webpack_require__) {
21999
22000"use strict";
22001__webpack_require__.r(__webpack_exports__);
22002/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GridBodyComp", function() { return GridBodyComp; });
22003/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
22004/* harmony import */ var _styling_layoutFeature__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(111);
22005/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44);
22006/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(36);
22007/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(57);
22008/* harmony import */ var _gridBodyCtrl__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(114);
22009/* harmony import */ var _rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(118);
22010/**
22011 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
22012 * @version v27.3.0
22013 * @link https://www.ag-grid.com/
22014 * @license MIT
22015 */
22016var __extends = (undefined && undefined.__extends) || (function () {
22017 var extendStatics = function (d, b) {
22018 extendStatics = Object.setPrototypeOf ||
22019 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
22020 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
22021 return extendStatics(d, b);
22022 };
22023 return function (d, b) {
22024 extendStatics(d, b);
22025 function __() { this.constructor = d; }
22026 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
22027 };
22028})();
22029var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
22030 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
22031 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
22032 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22033 return c > 3 && r && Object.defineProperty(target, key, r), r;
22034};
22035
22036
22037
22038
22039
22040
22041
22042var GRID_BODY_TEMPLATE = /* html */ "<div class=\"ag-root ag-unselectable\" role=\"grid\">\n <ag-header-root ref=\"gridHeader\"></ag-header-root>\n <div class=\"ag-floating-top\" ref=\"eTop\" role=\"presentation\">\n <ag-row-container ref=\"topLeftContainer\" name=\"" + _rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_6__["RowContainerName"].TOP_LEFT + "\"></ag-row-container>\n <ag-row-container ref=\"topCenterContainer\" name=\"" + _rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_6__["RowContainerName"].TOP_CENTER + "\"></ag-row-container>\n <ag-row-container ref=\"topRightContainer\" name=\"" + _rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_6__["RowContainerName"].TOP_RIGHT + "\"></ag-row-container>\n <ag-row-container ref=\"topFullWidthContainer\" name=\"" + _rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_6__["RowContainerName"].TOP_FULL_WIDTH + "\"></ag-row-container>\n </div>\n <div class=\"ag-body-viewport\" ref=\"eBodyViewport\" role=\"presentation\">\n <ag-row-container ref=\"leftContainer\" name=\"" + _rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_6__["RowContainerName"].LEFT + "\"></ag-row-container>\n <ag-row-container ref=\"centerContainer\" name=\"" + _rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_6__["RowContainerName"].CENTER + "\"></ag-row-container>\n <ag-row-container ref=\"rightContainer\" name=\"" + _rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_6__["RowContainerName"].RIGHT + "\"></ag-row-container>\n <ag-row-container ref=\"fullWidthContainer\" name=\"" + _rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_6__["RowContainerName"].FULL_WIDTH + "\"></ag-row-container>\n </div>\n <div class=\"ag-floating-bottom\" ref=\"eBottom\" role=\"presentation\">\n <ag-row-container ref=\"bottomLeftContainer\" name=\"" + _rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_6__["RowContainerName"].BOTTOM_LEFT + "\"></ag-row-container>\n <ag-row-container ref=\"bottomCenterContainer\" name=\"" + _rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_6__["RowContainerName"].BOTTOM_CENTER + "\"></ag-row-container>\n <ag-row-container ref=\"bottomRightContainer\" name=\"" + _rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_6__["RowContainerName"].BOTTOM_RIGHT + "\"></ag-row-container>\n <ag-row-container ref=\"bottomFullWidthContainer\" name=\"" + _rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_6__["RowContainerName"].BOTTOM_FULL_WIDTH + "\"></ag-row-container>\n </div>\n <ag-fake-horizontal-scroll></ag-fake-horizontal-scroll>\n <ag-overlay-wrapper></ag-overlay-wrapper>\n </div>";
22043var GridBodyComp = /** @class */ (function (_super) {
22044 __extends(GridBodyComp, _super);
22045 function GridBodyComp() {
22046 return _super.call(this, GRID_BODY_TEMPLATE) || this;
22047 }
22048 GridBodyComp.prototype.init = function () {
22049 var _this = this;
22050 var setHeight = function (height, element) {
22051 var heightString = height + "px";
22052 element.style.minHeight = heightString;
22053 element.style.height = heightString;
22054 };
22055 var compProxy = {
22056 setRowAnimationCssOnBodyViewport: function (cssClass, animate) { return _this.setRowAnimationCssOnBodyViewport(cssClass, animate); },
22057 setColumnCount: function (count) { return Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaColCount"])(_this.getGui(), count); },
22058 setRowCount: function (count) { return Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaRowCount"])(_this.getGui(), count); },
22059 setTopHeight: function (height) { return setHeight(height, _this.eTop); },
22060 setBottomHeight: function (height) { return setHeight(height, _this.eBottom); },
22061 setTopDisplay: function (display) { return _this.eTop.style.display = display; },
22062 setBottomDisplay: function (display) { return _this.eBottom.style.display = display; },
22063 setColumnMovingCss: function (cssClass, flag) { return _this.addOrRemoveCssClass(_gridBodyCtrl__WEBPACK_IMPORTED_MODULE_5__["CSS_CLASS_COLUMN_MOVING"], flag); },
22064 updateLayoutClasses: function (cssClass, params) {
22065 var bodyViewportClassList = _this.eBodyViewport.classList;
22066 bodyViewportClassList.toggle(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_1__["LayoutCssClasses"].AUTO_HEIGHT, params.autoHeight);
22067 bodyViewportClassList.toggle(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_1__["LayoutCssClasses"].NORMAL, params.normal);
22068 bodyViewportClassList.toggle(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_1__["LayoutCssClasses"].PRINT, params.print);
22069 _this.addOrRemoveCssClass(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_1__["LayoutCssClasses"].AUTO_HEIGHT, params.autoHeight);
22070 _this.addOrRemoveCssClass(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_1__["LayoutCssClasses"].NORMAL, params.normal);
22071 _this.addOrRemoveCssClass(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_1__["LayoutCssClasses"].PRINT, params.print);
22072 },
22073 setAlwaysVerticalScrollClass: function (cssClass, on) {
22074 return _this.eBodyViewport.classList.toggle(_gridBodyCtrl__WEBPACK_IMPORTED_MODULE_5__["CSS_CLASS_FORCE_VERTICAL_SCROLL"], on);
22075 },
22076 registerBodyViewportResizeListener: function (listener) {
22077 var unsubscribeFromResize = _this.resizeObserverService.observeResize(_this.eBodyViewport, listener);
22078 _this.addDestroyFunc(function () { return unsubscribeFromResize(); });
22079 },
22080 setPinnedTopBottomOverflowY: function (overflow) { return _this.eTop.style.overflowY = _this.eBottom.style.overflowY = overflow; },
22081 setCellSelectableCss: function (cssClass, selectable) {
22082 [_this.eTop, _this.eBodyViewport, _this.eBottom]
22083 .forEach(function (ct) { return ct.classList.toggle(_gridBodyCtrl__WEBPACK_IMPORTED_MODULE_5__["CSS_CLASS_CELL_SELECTABLE"], selectable); });
22084 },
22085 };
22086 this.ctrl = this.createManagedBean(new _gridBodyCtrl__WEBPACK_IMPORTED_MODULE_5__["GridBodyCtrl"]());
22087 this.ctrl.setComp(compProxy, this.getGui(), this.eBodyViewport, this.eTop, this.eBottom);
22088 if (this.rangeService || this.gridOptionsWrapper.isRowSelectionMulti()) {
22089 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaMultiSelectable"])(this.getGui(), true);
22090 }
22091 };
22092 GridBodyComp.prototype.setRowAnimationCssOnBodyViewport = function (cssClass, animateRows) {
22093 var bodyViewportClassList = this.eBodyViewport.classList;
22094 bodyViewportClassList.toggle(_gridBodyCtrl__WEBPACK_IMPORTED_MODULE_5__["RowAnimationCssClasses"].ANIMATION_ON, animateRows);
22095 bodyViewportClassList.toggle(_gridBodyCtrl__WEBPACK_IMPORTED_MODULE_5__["RowAnimationCssClasses"].ANIMATION_OFF, !animateRows);
22096 };
22097 GridBodyComp.prototype.getFloatingTopBottom = function () {
22098 return [this.eTop, this.eBottom];
22099 };
22100 __decorate([
22101 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('resizeObserverService')
22102 ], GridBodyComp.prototype, "resizeObserverService", void 0);
22103 __decorate([
22104 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Optional"])('rangeService')
22105 ], GridBodyComp.prototype, "rangeService", void 0);
22106 __decorate([
22107 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_4__["RefSelector"])('eBodyViewport')
22108 ], GridBodyComp.prototype, "eBodyViewport", void 0);
22109 __decorate([
22110 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_4__["RefSelector"])('eTop')
22111 ], GridBodyComp.prototype, "eTop", void 0);
22112 __decorate([
22113 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_4__["RefSelector"])('eBottom')
22114 ], GridBodyComp.prototype, "eBottom", void 0);
22115 __decorate([
22116 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_4__["RefSelector"])('gridHeader')
22117 ], GridBodyComp.prototype, "headerRootComp", void 0);
22118 __decorate([
22119 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
22120 ], GridBodyComp.prototype, "init", null);
22121 return GridBodyComp;
22122}(_widgets_component__WEBPACK_IMPORTED_MODULE_3__["Component"]));
22123
22124
22125
22126
22127
22128/***/ }),
22129/* 111 */
22130/***/ (function(module, __webpack_exports__, __webpack_require__) {
22131
22132"use strict";
22133__webpack_require__.r(__webpack_exports__);
22134/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LayoutCssClasses", function() { return LayoutCssClasses; });
22135/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LayoutFeature", function() { return LayoutFeature; });
22136/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
22137/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
22138/* harmony import */ var _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(112);
22139/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20);
22140/**
22141 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
22142 * @version v27.3.0
22143 * @link https://www.ag-grid.com/
22144 * @license MIT
22145 */
22146var __extends = (undefined && undefined.__extends) || (function () {
22147 var extendStatics = function (d, b) {
22148 extendStatics = Object.setPrototypeOf ||
22149 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
22150 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
22151 return extendStatics(d, b);
22152 };
22153 return function (d, b) {
22154 extendStatics(d, b);
22155 function __() { this.constructor = d; }
22156 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
22157 };
22158})();
22159var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
22160 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
22161 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
22162 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22163 return c > 3 && r && Object.defineProperty(target, key, r), r;
22164};
22165
22166
22167
22168
22169var LayoutCssClasses;
22170(function (LayoutCssClasses) {
22171 LayoutCssClasses["AUTO_HEIGHT"] = "ag-layout-auto-height";
22172 LayoutCssClasses["NORMAL"] = "ag-layout-normal";
22173 LayoutCssClasses["PRINT"] = "ag-layout-print";
22174})(LayoutCssClasses || (LayoutCssClasses = {}));
22175var LayoutFeature = /** @class */ (function (_super) {
22176 __extends(LayoutFeature, _super);
22177 function LayoutFeature(view) {
22178 var _this = _super.call(this) || this;
22179 _this.view = view;
22180 return _this;
22181 }
22182 LayoutFeature.prototype.postConstruct = function () {
22183 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_2__["GridOptionsWrapper"].PROP_DOM_LAYOUT, this.updateLayoutClasses.bind(this));
22184 this.updateLayoutClasses();
22185 };
22186 LayoutFeature.prototype.updateLayoutClasses = function () {
22187 var domLayout = this.gridOptionsWrapper.getDomLayout();
22188 var params = {
22189 autoHeight: domLayout === _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].DOM_LAYOUT_AUTO_HEIGHT,
22190 normal: domLayout === _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].DOM_LAYOUT_NORMAL,
22191 print: domLayout === _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].DOM_LAYOUT_PRINT
22192 };
22193 var cssClass = params.autoHeight ? LayoutCssClasses.AUTO_HEIGHT :
22194 params.print ? LayoutCssClasses.PRINT : LayoutCssClasses.NORMAL;
22195 this.view.updateLayoutClasses(cssClass, params);
22196 };
22197 __decorate([
22198 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridOptionsWrapper')
22199 ], LayoutFeature.prototype, "gridOptionsWrapper", void 0);
22200 __decorate([
22201 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
22202 ], LayoutFeature.prototype, "postConstruct", null);
22203 return LayoutFeature;
22204}(_context_beanStub__WEBPACK_IMPORTED_MODULE_3__["BeanStub"]));
22205
22206
22207
22208
22209
22210/***/ }),
22211/* 112 */
22212/***/ (function(module, __webpack_exports__, __webpack_require__) {
22213
22214"use strict";
22215__webpack_require__.r(__webpack_exports__);
22216/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GridOptionsWrapper", function() { return GridOptionsWrapper; });
22217/* harmony import */ var _components_colDefUtil__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(33);
22218/* harmony import */ var _components_componentUtil__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(30);
22219/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
22220/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12);
22221/* harmony import */ var _entities_sideBar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(113);
22222/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(24);
22223/* harmony import */ var _eventService__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(11);
22224/* harmony import */ var _modules_moduleNames__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(16);
22225/* harmony import */ var _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(17);
22226/* harmony import */ var _propertyKeys__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(31);
22227/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(43);
22228/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(14);
22229/* harmony import */ var _utils_fuzzyMatch__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(47);
22230/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(7);
22231/* harmony import */ var _utils_number__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(46);
22232/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(13);
22233/* harmony import */ var _utils_string__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(26);
22234/**
22235 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
22236 * @version v27.3.0
22237 * @link https://www.ag-grid.com/
22238 * @license MIT
22239 */
22240var __assign = (undefined && undefined.__assign) || function () {
22241 __assign = Object.assign || function(t) {
22242 for (var s, i = 1, n = arguments.length; i < n; i++) {
22243 s = arguments[i];
22244 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22245 t[p] = s[p];
22246 }
22247 return t;
22248 };
22249 return __assign.apply(this, arguments);
22250};
22251var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
22252 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
22253 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
22254 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22255 return c > 3 && r && Object.defineProperty(target, key, r), r;
22256};
22257var __param = (undefined && undefined.__param) || function (paramIndex, decorator) {
22258 return function (target, key) { decorator(target, key, paramIndex); }
22259};
22260var __read = (undefined && undefined.__read) || function (o, n) {
22261 var m = typeof Symbol === "function" && o[Symbol.iterator];
22262 if (!m) return o;
22263 var i = m.call(o), r, ar = [], e;
22264 try {
22265 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
22266 }
22267 catch (error) { e = { error: error }; }
22268 finally {
22269 try {
22270 if (r && !r.done && (m = i["return"])) m.call(i);
22271 }
22272 finally { if (e) throw e.error; }
22273 }
22274 return ar;
22275};
22276var __spread = (undefined && undefined.__spread) || function () {
22277 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
22278 return ar;
22279};
22280
22281
22282
22283
22284
22285
22286
22287
22288
22289
22290
22291
22292
22293
22294
22295
22296
22297var DEFAULT_ROW_HEIGHT = 25;
22298var DEFAULT_DETAIL_ROW_HEIGHT = 300;
22299var DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE = 5;
22300var DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE = 5;
22301var DEFAULT_KEEP_DETAIL_ROW_COUNT = 10;
22302function isTrue(value) {
22303 return value === true || value === 'true';
22304}
22305function toNumber(value) {
22306 if (typeof value == 'number') {
22307 return value;
22308 }
22309 if (typeof value == 'string') {
22310 return parseInt(value, 10);
22311 }
22312}
22313function zeroOrGreater(value, defaultValue) {
22314 if (value >= 0) {
22315 return value;
22316 }
22317 // zero gets returned if number is missing or the wrong type
22318 return defaultValue;
22319}
22320function oneOrGreater(value, defaultValue) {
22321 var valueNumber = parseInt(value, 10);
22322 if (Object(_utils_number__WEBPACK_IMPORTED_MODULE_14__["isNumeric"])(valueNumber) && valueNumber > 0) {
22323 return valueNumber;
22324 }
22325 return defaultValue;
22326}
22327var GridOptionsWrapper = /** @class */ (function () {
22328 function GridOptionsWrapper() {
22329 this.propertyEventService = new _eventService__WEBPACK_IMPORTED_MODULE_6__["EventService"]();
22330 this.domDataKey = '__AG_' + Math.random().toString();
22331 this.destroyed = false;
22332 }
22333 GridOptionsWrapper_1 = GridOptionsWrapper;
22334 GridOptionsWrapper.prototype.agWire = function (gridApi, columnApi) {
22335 this.gridOptions.api = gridApi;
22336 this.gridOptions.columnApi = columnApi;
22337 this.checkForDeprecated();
22338 this.checkForViolations();
22339 };
22340 GridOptionsWrapper.prototype.destroy = function () {
22341 // need to remove these, as we don't own the lifecycle of the gridOptions, we need to
22342 // remove the references in case the user keeps the grid options, we want the rest
22343 // of the grid to be picked up by the garbage collector
22344 this.gridOptions.api = null;
22345 this.gridOptions.columnApi = null;
22346 this.destroyed = true;
22347 };
22348 GridOptionsWrapper.prototype.init = function () {
22349 var _this = this;
22350 if (this.gridOptions.suppressPropertyNamesCheck !== true) {
22351 this.checkGridOptionsProperties();
22352 this.checkColumnDefProperties();
22353 }
22354 // parse side bar options into correct format
22355 if (this.gridOptions.sideBar != null) {
22356 this.gridOptions.sideBar = _entities_sideBar__WEBPACK_IMPORTED_MODULE_4__["SideBarDefParser"].parse(this.gridOptions.sideBar);
22357 }
22358 var async = this.useAsyncEvents();
22359 this.eventService.addGlobalListener(this.globalEventHandler.bind(this), async);
22360 if (this.isGroupSelectsChildren() && this.isSuppressParentsInRowNodes()) {
22361 console.warn("AG Grid: 'groupSelectsChildren' does not work with 'suppressParentsInRowNodes', this selection method needs the part in rowNode to work");
22362 }
22363 if (this.isGroupSelectsChildren()) {
22364 if (!this.isRowSelectionMulti()) {
22365 console.warn("AG Grid: rowSelection must be 'multiple' for groupSelectsChildren to make sense");
22366 }
22367 if (this.isRowModelServerSide()) {
22368 console.warn('AG Grid: group selects children is NOT support for Server Side Row Model. ' +
22369 'This is because the rows are lazy loaded, so selecting a group is not possible as' +
22370 'the grid has no way of knowing what the children are.');
22371 }
22372 }
22373 if (this.isGroupRemoveSingleChildren() && this.isGroupHideOpenParents()) {
22374 console.warn("AG Grid: groupRemoveSingleChildren and groupHideOpenParents do not work with each other, you need to pick one. And don't ask us how to us these together on our support forum either you will get the same answer!");
22375 }
22376 if (this.isRowModelServerSide()) {
22377 var msg = function (prop) { return "AG Grid: '" + prop + "' is not supported on the Server-Side Row Model"; };
22378 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["exists"])(this.gridOptions.groupDefaultExpanded)) {
22379 console.warn(msg('groupDefaultExpanded'));
22380 }
22381 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["exists"])(this.gridOptions.groupDefaultExpanded)) {
22382 console.warn(msg('groupIncludeFooter'));
22383 }
22384 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["exists"])(this.gridOptions.groupDefaultExpanded)) {
22385 console.warn(msg('groupIncludeTotalFooter'));
22386 }
22387 }
22388 if (this.isEnableRangeSelection()) {
22389 _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_8__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_7__["ModuleNames"].RangeSelectionModule, 'enableRangeSelection');
22390 }
22391 if (!this.isEnableRangeSelection() && (this.isEnableRangeHandle() || this.isEnableFillHandle())) {
22392 console.warn("AG Grid: 'enableRangeHandle' and 'enableFillHandle' will not work unless 'enableRangeSelection' is set to true");
22393 }
22394 var warnOfDeprecaredIcon = function (name) {
22395 if (_this.gridOptions.icons && _this.gridOptions.icons[name]) {
22396 console.warn("gridOptions.icons." + name + " is no longer supported. For information on how to style checkboxes and radio buttons, see https://www.ag-grid.com/javascript-grid-icons/");
22397 }
22398 };
22399 warnOfDeprecaredIcon('radioButtonOff');
22400 warnOfDeprecaredIcon('radioButtonOn');
22401 warnOfDeprecaredIcon('checkboxChecked');
22402 warnOfDeprecaredIcon('checkboxUnchecked');
22403 warnOfDeprecaredIcon('checkboxIndeterminate');
22404 // sets an initial calculation for the scrollbar width
22405 this.getScrollbarWidth();
22406 };
22407 GridOptionsWrapper.prototype.checkColumnDefProperties = function () {
22408 var _this = this;
22409 if (this.gridOptions.columnDefs == null) {
22410 return;
22411 }
22412 this.gridOptions.columnDefs.forEach(function (colDef) {
22413 var userProperties = Object.getOwnPropertyNames(colDef);
22414 var validProperties = __spread(_components_colDefUtil__WEBPACK_IMPORTED_MODULE_0__["ColDefUtil"].ALL_PROPERTIES, _components_colDefUtil__WEBPACK_IMPORTED_MODULE_0__["ColDefUtil"].FRAMEWORK_PROPERTIES);
22415 _this.checkProperties(userProperties, validProperties, validProperties, 'colDef', 'https://www.ag-grid.com/javascript-grid-column-properties/');
22416 });
22417 };
22418 GridOptionsWrapper.prototype.checkGridOptionsProperties = function () {
22419 var userProperties = Object.getOwnPropertyNames(this.gridOptions);
22420 var validProperties = __spread(_propertyKeys__WEBPACK_IMPORTED_MODULE_9__["PropertyKeys"].ALL_PROPERTIES, _propertyKeys__WEBPACK_IMPORTED_MODULE_9__["PropertyKeys"].FRAMEWORK_PROPERTIES, Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["values"])(_eventKeys__WEBPACK_IMPORTED_MODULE_5__["Events"]).map(function (event) { return _components_componentUtil__WEBPACK_IMPORTED_MODULE_1__["ComponentUtil"].getCallbackForEvent(event); }));
22421 var validPropertiesAndExceptions = __spread(validProperties, ['api', 'columnApi']);
22422 this.checkProperties(userProperties, validPropertiesAndExceptions, validProperties, 'gridOptions', 'https://www.ag-grid.com/javascript-data-grid/grid-options/');
22423 };
22424 GridOptionsWrapper.prototype.checkProperties = function (userProperties, validPropertiesAndExceptions, validProperties, containerName, docsUrl) {
22425 var invalidProperties = Object(_utils_fuzzyMatch__WEBPACK_IMPORTED_MODULE_12__["fuzzyCheckStrings"])(userProperties, validPropertiesAndExceptions, validProperties);
22426 Object(_utils_object__WEBPACK_IMPORTED_MODULE_15__["iterateObject"])(invalidProperties, function (key, value) {
22427 console.warn("ag-grid: invalid " + containerName + " property '" + key + "' did you mean any of these: " + value.slice(0, 8).join(", "));
22428 });
22429 if (Object.keys(invalidProperties).length > 0) {
22430 console.warn("ag-grid: to see all the valid " + containerName + " properties please check: " + docsUrl);
22431 }
22432 };
22433 /**
22434 * Wrap the user callback and attach the api, columnApi and context to the params object on the way through.
22435 * @param callback User provided callback
22436 * @returns Wrapped callback where the params object not require api, columnApi and context
22437 */
22438 GridOptionsWrapper.prototype.mergeGridCommonParams = function (callback) {
22439 var _this = this;
22440 if (callback) {
22441 var wrapped = function (callbackParams) {
22442 var mergedParams = __assign(__assign({}, callbackParams), { api: _this.getApi(), columnApi: _this.getColumnApi(), context: _this.getContext() });
22443 return callback(mergedParams);
22444 };
22445 return wrapped;
22446 }
22447 return callback;
22448 };
22449 GridOptionsWrapper.prototype.getDomDataKey = function () {
22450 return this.domDataKey;
22451 };
22452 // returns the dom data, or undefined if not found
22453 GridOptionsWrapper.prototype.getDomData = function (element, key) {
22454 var domData = element[this.getDomDataKey()];
22455 return domData ? domData[key] : undefined;
22456 };
22457 GridOptionsWrapper.prototype.setDomData = function (element, key, value) {
22458 var domDataKey = this.getDomDataKey();
22459 var domData = element[domDataKey];
22460 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["missing"])(domData)) {
22461 domData = {};
22462 element[domDataKey] = domData;
22463 }
22464 domData[key] = value;
22465 };
22466 GridOptionsWrapper.prototype.isRowSelection = function () {
22467 return this.gridOptions.rowSelection === 'single' || this.gridOptions.rowSelection === 'multiple';
22468 };
22469 GridOptionsWrapper.prototype.isSuppressRowDeselection = function () {
22470 return isTrue(this.gridOptions.suppressRowDeselection);
22471 };
22472 GridOptionsWrapper.prototype.isRowSelectionMulti = function () {
22473 return this.gridOptions.rowSelection === 'multiple';
22474 };
22475 GridOptionsWrapper.prototype.isRowMultiSelectWithClick = function () {
22476 return isTrue(this.gridOptions.rowMultiSelectWithClick);
22477 };
22478 GridOptionsWrapper.prototype.getContext = function () {
22479 return this.gridOptions.context;
22480 };
22481 GridOptionsWrapper.prototype.isPivotMode = function () {
22482 return isTrue(this.gridOptions.pivotMode);
22483 };
22484 GridOptionsWrapper.prototype.isSuppressExpandablePivotGroups = function () {
22485 return isTrue(this.gridOptions.suppressExpandablePivotGroups);
22486 };
22487 GridOptionsWrapper.prototype.getPivotColumnGroupTotals = function () {
22488 return this.gridOptions.pivotColumnGroupTotals;
22489 };
22490 GridOptionsWrapper.prototype.getPivotRowTotals = function () {
22491 return this.gridOptions.pivotRowTotals;
22492 };
22493 GridOptionsWrapper.prototype.isRowModelInfinite = function () {
22494 return this.gridOptions.rowModelType === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].ROW_MODEL_TYPE_INFINITE;
22495 };
22496 GridOptionsWrapper.prototype.isRowModelViewport = function () {
22497 return this.gridOptions.rowModelType === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].ROW_MODEL_TYPE_VIEWPORT;
22498 };
22499 GridOptionsWrapper.prototype.isRowModelServerSide = function () {
22500 return this.gridOptions.rowModelType === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].ROW_MODEL_TYPE_SERVER_SIDE;
22501 };
22502 GridOptionsWrapper.prototype.isRowModelDefault = function () {
22503 return (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["missing"])(this.gridOptions.rowModelType) ||
22504 this.gridOptions.rowModelType === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE);
22505 };
22506 GridOptionsWrapper.prototype.isFullRowEdit = function () {
22507 return this.gridOptions.editType === 'fullRow';
22508 };
22509 GridOptionsWrapper.prototype.isSuppressFocusAfterRefresh = function () {
22510 return isTrue(this.gridOptions.suppressFocusAfterRefresh);
22511 };
22512 GridOptionsWrapper.prototype.isSuppressBrowserResizeObserver = function () {
22513 return isTrue(this.gridOptions.suppressBrowserResizeObserver);
22514 };
22515 GridOptionsWrapper.prototype.isSuppressMaintainUnsortedOrder = function () {
22516 return isTrue(this.gridOptions.suppressMaintainUnsortedOrder);
22517 };
22518 GridOptionsWrapper.prototype.isSuppressClearOnFillReduction = function () {
22519 return isTrue(this.gridOptions.suppressClearOnFillReduction);
22520 };
22521 GridOptionsWrapper.prototype.isShowToolPanel = function () {
22522 return isTrue(this.gridOptions.sideBar && Array.isArray(this.getSideBar().toolPanels));
22523 };
22524 GridOptionsWrapper.prototype.getSideBar = function () {
22525 return this.gridOptions.sideBar;
22526 };
22527 GridOptionsWrapper.prototype.isSuppressTouch = function () {
22528 return isTrue(this.gridOptions.suppressTouch);
22529 };
22530 GridOptionsWrapper.prototype.isMaintainColumnOrder = function () {
22531 return isTrue(this.gridOptions.maintainColumnOrder);
22532 };
22533 GridOptionsWrapper.prototype.isSuppressRowTransform = function () {
22534 return isTrue(this.gridOptions.suppressRowTransform);
22535 };
22536 GridOptionsWrapper.prototype.isSuppressColumnStateEvents = function () {
22537 return isTrue(this.gridOptions.suppressColumnStateEvents);
22538 };
22539 GridOptionsWrapper.prototype.isAllowDragFromColumnsToolPanel = function () {
22540 return isTrue(this.gridOptions.allowDragFromColumnsToolPanel);
22541 };
22542 GridOptionsWrapper.prototype.useAsyncEvents = function () {
22543 return !isTrue(this.gridOptions.suppressAsyncEvents);
22544 };
22545 GridOptionsWrapper.prototype.isEnableCellChangeFlash = function () {
22546 return isTrue(this.gridOptions.enableCellChangeFlash);
22547 };
22548 GridOptionsWrapper.prototype.getCellFlashDelay = function () {
22549 return this.gridOptions.cellFlashDelay || 500;
22550 };
22551 GridOptionsWrapper.prototype.getCellFadeDelay = function () {
22552 return this.gridOptions.cellFadeDelay || 1000;
22553 };
22554 GridOptionsWrapper.prototype.isGroupSelectsChildren = function () {
22555 return isTrue(this.gridOptions.groupSelectsChildren);
22556 };
22557 GridOptionsWrapper.prototype.isSuppressRowHoverHighlight = function () {
22558 return isTrue(this.gridOptions.suppressRowHoverHighlight);
22559 };
22560 GridOptionsWrapper.prototype.isColumnHoverHighlight = function () {
22561 return isTrue(this.gridOptions.columnHoverHighlight);
22562 };
22563 GridOptionsWrapper.prototype.isGroupSelectsFiltered = function () {
22564 return isTrue(this.gridOptions.groupSelectsFiltered);
22565 };
22566 GridOptionsWrapper.prototype.isGroupHideOpenParents = function () {
22567 return isTrue(this.gridOptions.groupHideOpenParents);
22568 };
22569 GridOptionsWrapper.prototype.isGroupMaintainOrder = function () {
22570 return isTrue(this.gridOptions.groupMaintainOrder);
22571 };
22572 GridOptionsWrapper.prototype.getAutoGroupColumnDef = function () {
22573 return this.gridOptions.autoGroupColumnDef;
22574 };
22575 GridOptionsWrapper.prototype.isGroupMultiAutoColumn = function () {
22576 if (this.gridOptions.groupDisplayType) {
22577 return this.matchesGroupDisplayType('multipleColumns', this.gridOptions.groupDisplayType);
22578 }
22579 // if we are doing hideOpenParents we also show multiple columns, otherwise hideOpenParents would not work
22580 return isTrue(this.gridOptions.groupHideOpenParents);
22581 };
22582 GridOptionsWrapper.prototype.isGroupUseEntireRow = function (pivotMode) {
22583 // we never allow groupUseEntireRow if in pivot mode, otherwise we won't see the pivot values.
22584 if (pivotMode) {
22585 return false;
22586 }
22587 return this.gridOptions.groupDisplayType ?
22588 this.matchesGroupDisplayType('groupRows', this.gridOptions.groupDisplayType) : false;
22589 };
22590 GridOptionsWrapper.prototype.isGroupSuppressAutoColumn = function () {
22591 var isCustomRowGroups = this.gridOptions.groupDisplayType ?
22592 this.matchesGroupDisplayType('custom', this.gridOptions.groupDisplayType) : false;
22593 if (isCustomRowGroups) {
22594 return true;
22595 }
22596 return this.gridOptions.treeDataDisplayType ?
22597 this.matchesTreeDataDisplayType('custom', this.gridOptions.treeDataDisplayType) : false;
22598 };
22599 GridOptionsWrapper.prototype.isGroupRemoveSingleChildren = function () {
22600 return isTrue(this.gridOptions.groupRemoveSingleChildren);
22601 };
22602 GridOptionsWrapper.prototype.isGroupRemoveLowestSingleChildren = function () {
22603 return isTrue(this.gridOptions.groupRemoveLowestSingleChildren);
22604 };
22605 GridOptionsWrapper.prototype.isGroupIncludeFooter = function () {
22606 return isTrue(this.gridOptions.groupIncludeFooter);
22607 };
22608 GridOptionsWrapper.prototype.isGroupIncludeTotalFooter = function () {
22609 return isTrue(this.gridOptions.groupIncludeTotalFooter);
22610 };
22611 GridOptionsWrapper.prototype.isGroupSuppressBlankHeader = function () {
22612 return isTrue(this.gridOptions.groupSuppressBlankHeader);
22613 };
22614 GridOptionsWrapper.prototype.isSuppressRowClickSelection = function () {
22615 return isTrue(this.gridOptions.suppressRowClickSelection);
22616 };
22617 GridOptionsWrapper.prototype.isSuppressCellFocus = function () {
22618 return isTrue(this.gridOptions.suppressCellFocus);
22619 };
22620 GridOptionsWrapper.prototype.isSuppressMultiSort = function () {
22621 return isTrue(this.gridOptions.suppressMultiSort);
22622 };
22623 GridOptionsWrapper.prototype.isAlwaysMultiSort = function () {
22624 return isTrue(this.gridOptions.alwaysMultiSort);
22625 };
22626 GridOptionsWrapper.prototype.isMultiSortKeyCtrl = function () {
22627 return this.gridOptions.multiSortKey === 'ctrl';
22628 };
22629 GridOptionsWrapper.prototype.isPivotSuppressAutoColumn = function () {
22630 return isTrue(this.gridOptions.pivotSuppressAutoColumn);
22631 };
22632 GridOptionsWrapper.prototype.isSuppressDragLeaveHidesColumns = function () {
22633 return isTrue(this.gridOptions.suppressDragLeaveHidesColumns);
22634 };
22635 GridOptionsWrapper.prototype.isSuppressScrollOnNewData = function () {
22636 return isTrue(this.gridOptions.suppressScrollOnNewData);
22637 };
22638 GridOptionsWrapper.prototype.isSuppressScrollWhenPopupsAreOpen = function () {
22639 return isTrue(this.gridOptions.suppressScrollWhenPopupsAreOpen);
22640 };
22641 GridOptionsWrapper.prototype.isRowDragEntireRow = function () {
22642 return isTrue(this.gridOptions.rowDragEntireRow);
22643 };
22644 GridOptionsWrapper.prototype.isSuppressRowDrag = function () {
22645 return isTrue(this.gridOptions.suppressRowDrag);
22646 };
22647 GridOptionsWrapper.prototype.isRowDragManaged = function () {
22648 return isTrue(this.gridOptions.rowDragManaged);
22649 };
22650 GridOptionsWrapper.prototype.isSuppressMoveWhenRowDragging = function () {
22651 return isTrue(this.gridOptions.suppressMoveWhenRowDragging);
22652 };
22653 GridOptionsWrapper.prototype.isRowDragMultiRow = function () {
22654 return isTrue(this.gridOptions.rowDragMultiRow);
22655 };
22656 // returns either 'print', 'autoHeight' or 'normal' (normal is the default)
22657 GridOptionsWrapper.prototype.getDomLayout = function () {
22658 var domLayout = this.gridOptions.domLayout || _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].DOM_LAYOUT_NORMAL;
22659 var validLayouts = [
22660 _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].DOM_LAYOUT_PRINT,
22661 _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].DOM_LAYOUT_AUTO_HEIGHT,
22662 _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].DOM_LAYOUT_NORMAL
22663 ];
22664 if (validLayouts.indexOf(domLayout) === -1) {
22665 Object(_utils_function__WEBPACK_IMPORTED_MODULE_11__["doOnce"])(function () {
22666 return console.warn("AG Grid: " + domLayout + " is not valid for DOM Layout, valid values are " + _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].DOM_LAYOUT_NORMAL + ", " + _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].DOM_LAYOUT_AUTO_HEIGHT + " and " + _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].DOM_LAYOUT_PRINT);
22667 }, 'warn about dom layout values');
22668 return _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].DOM_LAYOUT_NORMAL;
22669 }
22670 return domLayout;
22671 };
22672 GridOptionsWrapper.prototype.isSuppressHorizontalScroll = function () {
22673 return isTrue(this.gridOptions.suppressHorizontalScroll);
22674 };
22675 GridOptionsWrapper.prototype.isSuppressMaxRenderedRowRestriction = function () {
22676 return isTrue(this.gridOptions.suppressMaxRenderedRowRestriction);
22677 };
22678 GridOptionsWrapper.prototype.isExcludeChildrenWhenTreeDataFiltering = function () {
22679 return isTrue(this.gridOptions.excludeChildrenWhenTreeDataFiltering);
22680 };
22681 GridOptionsWrapper.prototype.isAlwaysShowHorizontalScroll = function () {
22682 return isTrue(this.gridOptions.alwaysShowHorizontalScroll);
22683 };
22684 GridOptionsWrapper.prototype.isAlwaysShowVerticalScroll = function () {
22685 return isTrue(this.gridOptions.alwaysShowVerticalScroll);
22686 };
22687 GridOptionsWrapper.prototype.isDebounceVerticalScrollbar = function () {
22688 return isTrue(this.gridOptions.debounceVerticalScrollbar);
22689 };
22690 GridOptionsWrapper.prototype.isSuppressLoadingOverlay = function () {
22691 return isTrue(this.gridOptions.suppressLoadingOverlay);
22692 };
22693 GridOptionsWrapper.prototype.isSuppressNoRowsOverlay = function () {
22694 return isTrue(this.gridOptions.suppressNoRowsOverlay);
22695 };
22696 GridOptionsWrapper.prototype.isSuppressFieldDotNotation = function () {
22697 return isTrue(this.gridOptions.suppressFieldDotNotation);
22698 };
22699 GridOptionsWrapper.prototype.getPinnedTopRowData = function () {
22700 return this.gridOptions.pinnedTopRowData;
22701 };
22702 GridOptionsWrapper.prototype.getPinnedBottomRowData = function () {
22703 return this.gridOptions.pinnedBottomRowData;
22704 };
22705 GridOptionsWrapper.prototype.isFunctionsPassive = function () {
22706 return isTrue(this.gridOptions.functionsPassive);
22707 };
22708 GridOptionsWrapper.prototype.isSuppressChangeDetection = function () {
22709 return isTrue(this.gridOptions.suppressChangeDetection);
22710 };
22711 GridOptionsWrapper.prototype.isSuppressAnimationFrame = function () {
22712 return isTrue(this.gridOptions.suppressAnimationFrame);
22713 };
22714 GridOptionsWrapper.prototype.getQuickFilterText = function () {
22715 return this.gridOptions.quickFilterText;
22716 };
22717 GridOptionsWrapper.prototype.isCacheQuickFilter = function () {
22718 return isTrue(this.gridOptions.cacheQuickFilter);
22719 };
22720 GridOptionsWrapper.prototype.isUnSortIcon = function () {
22721 return isTrue(this.gridOptions.unSortIcon);
22722 };
22723 GridOptionsWrapper.prototype.isSuppressMenuHide = function () {
22724 return isTrue(this.gridOptions.suppressMenuHide);
22725 };
22726 GridOptionsWrapper.prototype.isEnterMovesDownAfterEdit = function () {
22727 return isTrue(this.gridOptions.enterMovesDownAfterEdit);
22728 };
22729 GridOptionsWrapper.prototype.isEnterMovesDown = function () {
22730 return isTrue(this.gridOptions.enterMovesDown);
22731 };
22732 GridOptionsWrapper.prototype.isUndoRedoCellEditing = function () {
22733 return isTrue(this.gridOptions.undoRedoCellEditing);
22734 };
22735 GridOptionsWrapper.prototype.getUndoRedoCellEditingLimit = function () {
22736 return toNumber(this.gridOptions.undoRedoCellEditingLimit);
22737 };
22738 GridOptionsWrapper.prototype.getRowStyle = function () {
22739 return this.gridOptions.rowStyle;
22740 };
22741 GridOptionsWrapper.prototype.getRowClass = function () {
22742 return this.gridOptions.rowClass;
22743 };
22744 GridOptionsWrapper.prototype.getRowStyleFunc = function () {
22745 return this.mergeGridCommonParams(this.gridOptions.getRowStyle);
22746 };
22747 GridOptionsWrapper.prototype.getRowClassFunc = function () {
22748 return this.mergeGridCommonParams(this.gridOptions.getRowClass);
22749 };
22750 GridOptionsWrapper.prototype.rowClassRules = function () {
22751 return this.gridOptions.rowClassRules;
22752 };
22753 GridOptionsWrapper.prototype.getServerSideStoreType = function () {
22754 return this.gridOptions.serverSideStoreType;
22755 };
22756 GridOptionsWrapper.prototype.getServerSideStoreParamsFunc = function () {
22757 return this.mergeGridCommonParams(this.gridOptions.getServerSideStoreParams);
22758 };
22759 GridOptionsWrapper.prototype.getCreateChartContainerFunc = function () {
22760 return this.mergeGridCommonParams(this.gridOptions.createChartContainer);
22761 };
22762 GridOptionsWrapper.prototype.getPopupParent = function () {
22763 return this.gridOptions.popupParent;
22764 };
22765 GridOptionsWrapper.prototype.getBlockLoadDebounceMillis = function () {
22766 return this.gridOptions.blockLoadDebounceMillis;
22767 };
22768 GridOptionsWrapper.prototype.getPostProcessPopupFunc = function () {
22769 return this.mergeGridCommonParams(this.gridOptions.postProcessPopup);
22770 };
22771 GridOptionsWrapper.prototype.getPaginationNumberFormatterFunc = function () {
22772 return this.mergeGridCommonParams(this.gridOptions.paginationNumberFormatter);
22773 };
22774 GridOptionsWrapper.prototype.getChildCountFunc = function () {
22775 return this.gridOptions.getChildCount;
22776 };
22777 GridOptionsWrapper.prototype.getIsApplyServerSideTransactionFunc = function () {
22778 return this.mergeGridCommonParams(this.gridOptions.isApplyServerSideTransaction);
22779 };
22780 GridOptionsWrapper.prototype.getInitialGroupOrderComparator = function () {
22781 var _a = this.gridOptions, initialGroupOrderComparator = _a.initialGroupOrderComparator, defaultGroupOrderComparator = _a.defaultGroupOrderComparator;
22782 if (initialGroupOrderComparator) {
22783 return this.mergeGridCommonParams(initialGroupOrderComparator);
22784 }
22785 // this is the deprecated way, so provide a proxy to make it compatible
22786 if (defaultGroupOrderComparator) {
22787 return function (params) { return defaultGroupOrderComparator(params.nodeA, params.nodeB); };
22788 }
22789 };
22790 GridOptionsWrapper.prototype.getIsFullWidthCellFunc = function () {
22791 var _a = this.gridOptions, isFullWidthRow = _a.isFullWidthRow, isFullWidthCell = _a.isFullWidthCell;
22792 if (isFullWidthRow) {
22793 return this.mergeGridCommonParams(isFullWidthRow);
22794 }
22795 // this is the deprecated way, so provide a proxy to make it compatible
22796 if (isFullWidthCell) {
22797 return function (params) { return isFullWidthCell(params.rowNode); };
22798 }
22799 };
22800 GridOptionsWrapper.prototype.getFullWidthCellRendererParams = function () {
22801 return this.gridOptions.fullWidthCellRendererParams;
22802 };
22803 GridOptionsWrapper.prototype.isEmbedFullWidthRows = function () {
22804 return isTrue(this.gridOptions.embedFullWidthRows) || isTrue(this.gridOptions.deprecatedEmbedFullWidthRows);
22805 };
22806 GridOptionsWrapper.prototype.isDetailRowAutoHeight = function () {
22807 return isTrue(this.gridOptions.detailRowAutoHeight);
22808 };
22809 GridOptionsWrapper.prototype.getSuppressKeyboardEventFunc = function () {
22810 return this.gridOptions.suppressKeyboardEvent;
22811 };
22812 GridOptionsWrapper.prototype.getBusinessKeyForNodeFunc = function () {
22813 return this.gridOptions.getBusinessKeyForNode;
22814 };
22815 GridOptionsWrapper.prototype.getApi = function () {
22816 return this.gridOptions.api;
22817 };
22818 GridOptionsWrapper.prototype.getColumnApi = function () {
22819 return this.gridOptions.columnApi;
22820 };
22821 GridOptionsWrapper.prototype.isReadOnlyEdit = function () {
22822 return isTrue(this.gridOptions.readOnlyEdit);
22823 ;
22824 };
22825 GridOptionsWrapper.prototype.isImmutableData = function () {
22826 // we used to have a property immutableData for this. however this was deprecated
22827 // in favour of having Immutable Data on by default when getRowId is provided
22828 var getRowIdProvided = this.gridOptions.getRowId != null;
22829 var immutableData = isTrue(this.gridOptions.immutableData);
22830 // this property is a backwards compatibility property, for those who want
22831 // the old behaviour of Row ID's but NOT Immutable Data.
22832 var resetRowDataOnUpdate = isTrue(this.gridOptions.resetRowDataOnUpdate);
22833 if (resetRowDataOnUpdate) {
22834 return false;
22835 }
22836 return getRowIdProvided || immutableData;
22837 };
22838 GridOptionsWrapper.prototype.isEnsureDomOrder = function () {
22839 return isTrue(this.gridOptions.ensureDomOrder);
22840 };
22841 GridOptionsWrapper.prototype.isEnableCharts = function () {
22842 if (isTrue(this.gridOptions.enableCharts)) {
22843 return _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_8__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_7__["ModuleNames"].GridChartsModule, 'enableCharts');
22844 }
22845 return false;
22846 };
22847 GridOptionsWrapper.prototype.getColResizeDefault = function () {
22848 return this.gridOptions.colResizeDefault;
22849 };
22850 GridOptionsWrapper.prototype.isSingleClickEdit = function () {
22851 return isTrue(this.gridOptions.singleClickEdit);
22852 };
22853 GridOptionsWrapper.prototype.isSuppressClickEdit = function () {
22854 return isTrue(this.gridOptions.suppressClickEdit);
22855 };
22856 GridOptionsWrapper.prototype.isStopEditingWhenCellsLoseFocus = function () {
22857 return isTrue(this.gridOptions.stopEditingWhenCellsLoseFocus);
22858 };
22859 GridOptionsWrapper.prototype.getGroupDefaultExpanded = function () {
22860 return this.gridOptions.groupDefaultExpanded;
22861 };
22862 GridOptionsWrapper.prototype.getMaxConcurrentDatasourceRequests = function () {
22863 var res = toNumber(this.gridOptions.maxConcurrentDatasourceRequests);
22864 if (res == null) {
22865 return 2;
22866 } // 2 is the default
22867 if (res <= 0) {
22868 return;
22869 } // negative number, eg -1, means no max restriction
22870 return res;
22871 };
22872 GridOptionsWrapper.prototype.getMaxBlocksInCache = function () {
22873 return this.gridOptions.maxBlocksInCache;
22874 };
22875 GridOptionsWrapper.prototype.getCacheOverflowSize = function () {
22876 return this.gridOptions.cacheOverflowSize;
22877 };
22878 GridOptionsWrapper.prototype.getPaginationPageSize = function () {
22879 return toNumber(this.gridOptions.paginationPageSize);
22880 };
22881 GridOptionsWrapper.prototype.isPaginateChildRows = function () {
22882 var shouldPaginate = this.isGroupRemoveSingleChildren() || this.isGroupRemoveLowestSingleChildren();
22883 if (shouldPaginate) {
22884 return true;
22885 }
22886 return isTrue(this.gridOptions.paginateChildRows);
22887 };
22888 GridOptionsWrapper.prototype.getCacheBlockSize = function () {
22889 return oneOrGreater(this.gridOptions.cacheBlockSize);
22890 };
22891 GridOptionsWrapper.prototype.getInfiniteInitialRowCount = function () {
22892 return this.gridOptions.infiniteInitialRowCount;
22893 };
22894 GridOptionsWrapper.prototype.isPurgeClosedRowNodes = function () {
22895 return isTrue(this.gridOptions.purgeClosedRowNodes);
22896 };
22897 GridOptionsWrapper.prototype.isSuppressPaginationPanel = function () {
22898 return isTrue(this.gridOptions.suppressPaginationPanel);
22899 };
22900 GridOptionsWrapper.prototype.getRowData = function () {
22901 return this.gridOptions.rowData;
22902 };
22903 GridOptionsWrapper.prototype.isEnableRtl = function () {
22904 return isTrue(this.gridOptions.enableRtl);
22905 };
22906 GridOptionsWrapper.prototype.getRowGroupPanelShow = function () {
22907 return this.gridOptions.rowGroupPanelShow;
22908 };
22909 GridOptionsWrapper.prototype.getPivotPanelShow = function () {
22910 return this.gridOptions.pivotPanelShow;
22911 };
22912 GridOptionsWrapper.prototype.isAngularCompileRows = function () {
22913 return isTrue(this.gridOptions.angularCompileRows);
22914 };
22915 GridOptionsWrapper.prototype.isAngularCompileFilters = function () {
22916 return isTrue(this.gridOptions.angularCompileFilters);
22917 };
22918 GridOptionsWrapper.prototype.isDebug = function () {
22919 return isTrue(this.gridOptions.debug);
22920 };
22921 GridOptionsWrapper.prototype.getColumnDefs = function () {
22922 return this.gridOptions.columnDefs;
22923 };
22924 GridOptionsWrapper.prototype.getColumnTypes = function () {
22925 return this.gridOptions.columnTypes;
22926 };
22927 GridOptionsWrapper.prototype.getDatasource = function () {
22928 return this.gridOptions.datasource;
22929 };
22930 GridOptionsWrapper.prototype.getViewportDatasource = function () {
22931 return this.gridOptions.viewportDatasource;
22932 };
22933 GridOptionsWrapper.prototype.getServerSideDatasource = function () {
22934 return this.gridOptions.serverSideDatasource;
22935 };
22936 GridOptionsWrapper.prototype.isAccentedSort = function () {
22937 return isTrue(this.gridOptions.accentedSort);
22938 };
22939 GridOptionsWrapper.prototype.isEnableBrowserTooltips = function () {
22940 return isTrue(this.gridOptions.enableBrowserTooltips);
22941 };
22942 GridOptionsWrapper.prototype.isEnableCellExpressions = function () {
22943 return isTrue(this.gridOptions.enableCellExpressions);
22944 };
22945 GridOptionsWrapper.prototype.isEnableGroupEdit = function () {
22946 return isTrue(this.gridOptions.enableGroupEdit);
22947 };
22948 GridOptionsWrapper.prototype.isSuppressMiddleClickScrolls = function () {
22949 return isTrue(this.gridOptions.suppressMiddleClickScrolls);
22950 };
22951 GridOptionsWrapper.prototype.isPreventDefaultOnContextMenu = function () {
22952 return isTrue(this.gridOptions.preventDefaultOnContextMenu);
22953 };
22954 GridOptionsWrapper.prototype.isSuppressPreventDefaultOnMouseWheel = function () {
22955 return isTrue(this.gridOptions.suppressPreventDefaultOnMouseWheel);
22956 };
22957 GridOptionsWrapper.prototype.isSuppressColumnVirtualisation = function () {
22958 return isTrue(this.gridOptions.suppressColumnVirtualisation);
22959 };
22960 GridOptionsWrapper.prototype.isSuppressRowVirtualisation = function () {
22961 return isTrue(this.gridOptions.suppressRowVirtualisation);
22962 };
22963 GridOptionsWrapper.prototype.isSuppressContextMenu = function () {
22964 return isTrue(this.gridOptions.suppressContextMenu);
22965 };
22966 GridOptionsWrapper.prototype.isAllowContextMenuWithControlKey = function () {
22967 return isTrue(this.gridOptions.allowContextMenuWithControlKey);
22968 };
22969 GridOptionsWrapper.prototype.isSuppressCopyRowsToClipboard = function () {
22970 return isTrue(this.gridOptions.suppressCopyRowsToClipboard);
22971 };
22972 GridOptionsWrapper.prototype.isSuppressCopySingleCellRanges = function () {
22973 return isTrue(this.gridOptions.suppressCopySingleCellRanges);
22974 };
22975 GridOptionsWrapper.prototype.isCopyHeadersToClipboard = function () {
22976 return isTrue(this.gridOptions.copyHeadersToClipboard);
22977 };
22978 GridOptionsWrapper.prototype.isCopyGroupHeadersToClipboard = function () {
22979 return isTrue(this.gridOptions.copyGroupHeadersToClipboard);
22980 };
22981 GridOptionsWrapper.prototype.isSuppressClipboardPaste = function () {
22982 return isTrue(this.gridOptions.suppressClipboardPaste);
22983 };
22984 GridOptionsWrapper.prototype.isSuppressLastEmptyLineOnPaste = function () {
22985 return isTrue(this.gridOptions.suppressLastEmptyLineOnPaste);
22986 };
22987 GridOptionsWrapper.prototype.isPagination = function () {
22988 return isTrue(this.gridOptions.pagination);
22989 };
22990 GridOptionsWrapper.prototype.isSuppressEnterpriseResetOnNewColumns = function () {
22991 return isTrue(this.gridOptions.suppressEnterpriseResetOnNewColumns);
22992 };
22993 GridOptionsWrapper.prototype.getProcessDataFromClipboardFunc = function () {
22994 return this.mergeGridCommonParams(this.gridOptions.processDataFromClipboard);
22995 };
22996 GridOptionsWrapper.prototype.getAsyncTransactionWaitMillis = function () {
22997 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["exists"])(this.gridOptions.asyncTransactionWaitMillis) ? this.gridOptions.asyncTransactionWaitMillis : _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].BATCH_WAIT_MILLIS;
22998 };
22999 GridOptionsWrapper.prototype.isSuppressMovableColumns = function () {
23000 return isTrue(this.gridOptions.suppressMovableColumns);
23001 };
23002 GridOptionsWrapper.prototype.isAnimateRows = function () {
23003 // never allow animating if enforcing the row order
23004 if (this.isEnsureDomOrder()) {
23005 return false;
23006 }
23007 return isTrue(this.gridOptions.animateRows);
23008 };
23009 GridOptionsWrapper.prototype.isSuppressColumnMoveAnimation = function () {
23010 return isTrue(this.gridOptions.suppressColumnMoveAnimation);
23011 };
23012 GridOptionsWrapper.prototype.isSuppressAggFuncInHeader = function () {
23013 return isTrue(this.gridOptions.suppressAggFuncInHeader);
23014 };
23015 GridOptionsWrapper.prototype.isSuppressAggAtRootLevel = function () {
23016 return isTrue(this.gridOptions.suppressAggAtRootLevel);
23017 };
23018 GridOptionsWrapper.prototype.isSuppressAggFilteredOnly = function () {
23019 var isGroupAggFiltering = this.getGroupAggFiltering() !== undefined;
23020 return isGroupAggFiltering || isTrue(this.gridOptions.suppressAggFilteredOnly);
23021 };
23022 GridOptionsWrapper.prototype.isRemovePivotHeaderRowWhenSingleValueColumn = function () {
23023 return isTrue(this.gridOptions.removePivotHeaderRowWhenSingleValueColumn);
23024 };
23025 GridOptionsWrapper.prototype.isShowOpenedGroup = function () {
23026 return isTrue(this.gridOptions.showOpenedGroup);
23027 };
23028 GridOptionsWrapper.prototype.isReactUi = function () {
23029 return isTrue(this.gridOptions.reactUi);
23030 };
23031 GridOptionsWrapper.prototype.isSuppressReactUi = function () {
23032 return isTrue(this.gridOptions.suppressReactUi);
23033 };
23034 GridOptionsWrapper.prototype.isEnableRangeSelection = function () {
23035 return _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_8__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_7__["ModuleNames"].RangeSelectionModule) && isTrue(this.gridOptions.enableRangeSelection);
23036 };
23037 GridOptionsWrapper.prototype.isEnableRangeHandle = function () {
23038 return isTrue(this.gridOptions.enableRangeHandle);
23039 };
23040 GridOptionsWrapper.prototype.isEnableFillHandle = function () {
23041 return isTrue(this.gridOptions.enableFillHandle);
23042 };
23043 GridOptionsWrapper.prototype.getFillHandleDirection = function () {
23044 var direction = this.gridOptions.fillHandleDirection;
23045 if (!direction) {
23046 return 'xy';
23047 }
23048 if (direction !== 'x' && direction !== 'y' && direction !== 'xy') {
23049 Object(_utils_function__WEBPACK_IMPORTED_MODULE_11__["doOnce"])(function () { return console.warn("AG Grid: valid values for fillHandleDirection are 'x', 'y' and 'xy'. Default to 'xy'."); }, 'warn invalid fill direction');
23050 return 'xy';
23051 }
23052 return direction;
23053 };
23054 GridOptionsWrapper.prototype.getFillOperation = function () {
23055 return this.mergeGridCommonParams(this.gridOptions.fillOperation);
23056 };
23057 GridOptionsWrapper.prototype.isSuppressMultiRangeSelection = function () {
23058 return isTrue(this.gridOptions.suppressMultiRangeSelection);
23059 };
23060 GridOptionsWrapper.prototype.isPaginationAutoPageSize = function () {
23061 return isTrue(this.gridOptions.paginationAutoPageSize);
23062 };
23063 GridOptionsWrapper.prototype.isRememberGroupStateWhenNewData = function () {
23064 return isTrue(this.gridOptions.rememberGroupStateWhenNewData);
23065 };
23066 GridOptionsWrapper.prototype.getIcons = function () {
23067 return this.gridOptions.icons;
23068 };
23069 GridOptionsWrapper.prototype.getGroupAggFiltering = function () {
23070 var userValue = this.gridOptions.groupAggFiltering;
23071 if (typeof userValue === 'function') {
23072 return this.mergeGridCommonParams(userValue);
23073 }
23074 if (isTrue(userValue)) {
23075 return function () { return true; };
23076 }
23077 return undefined;
23078 };
23079 GridOptionsWrapper.prototype.getAggFuncs = function () {
23080 return this.gridOptions.aggFuncs;
23081 };
23082 GridOptionsWrapper.prototype.getSortingOrder = function () {
23083 return this.gridOptions.sortingOrder;
23084 };
23085 GridOptionsWrapper.prototype.getAlignedGrids = function () {
23086 return this.gridOptions.alignedGrids;
23087 };
23088 GridOptionsWrapper.prototype.isMasterDetail = function () {
23089 var masterDetail = isTrue(this.gridOptions.masterDetail);
23090 if (masterDetail) {
23091 return _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_8__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_7__["ModuleNames"].MasterDetailModule, 'masterDetail');
23092 }
23093 else {
23094 return false;
23095 }
23096 };
23097 GridOptionsWrapper.prototype.isKeepDetailRows = function () {
23098 return isTrue(this.gridOptions.keepDetailRows);
23099 };
23100 GridOptionsWrapper.prototype.getKeepDetailRowsCount = function () {
23101 var keepDetailRowsCount = this.gridOptions.keepDetailRowsCount;
23102 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["exists"])(keepDetailRowsCount) && keepDetailRowsCount > 0) {
23103 return this.gridOptions.keepDetailRowsCount;
23104 }
23105 return DEFAULT_KEEP_DETAIL_ROW_COUNT;
23106 };
23107 GridOptionsWrapper.prototype.getIsRowMasterFunc = function () {
23108 return this.gridOptions.isRowMaster;
23109 };
23110 GridOptionsWrapper.prototype.getIsRowSelectableFunc = function () {
23111 return this.gridOptions.isRowSelectable;
23112 };
23113 GridOptionsWrapper.prototype.getGroupRowRendererParams = function () {
23114 return this.gridOptions.groupRowRendererParams;
23115 };
23116 GridOptionsWrapper.prototype.getOverlayLoadingTemplate = function () {
23117 return this.gridOptions.overlayLoadingTemplate;
23118 };
23119 GridOptionsWrapper.prototype.getOverlayNoRowsTemplate = function () {
23120 return this.gridOptions.overlayNoRowsTemplate;
23121 };
23122 GridOptionsWrapper.prototype.isSuppressAutoSize = function () {
23123 return isTrue(this.gridOptions.suppressAutoSize);
23124 };
23125 GridOptionsWrapper.prototype.isEnableCellTextSelection = function () {
23126 return isTrue(this.gridOptions.enableCellTextSelection);
23127 };
23128 GridOptionsWrapper.prototype.isSuppressParentsInRowNodes = function () {
23129 return isTrue(this.gridOptions.suppressParentsInRowNodes);
23130 };
23131 GridOptionsWrapper.prototype.isSuppressClipboardApi = function () {
23132 return isTrue(this.gridOptions.suppressClipboardApi);
23133 };
23134 GridOptionsWrapper.prototype.isFunctionsReadOnly = function () {
23135 return isTrue(this.gridOptions.functionsReadOnly);
23136 };
23137 GridOptionsWrapper.prototype.isEnableCellTextSelect = function () {
23138 return isTrue(this.gridOptions.enableCellTextSelection);
23139 };
23140 GridOptionsWrapper.prototype.getDefaultColDef = function () {
23141 return this.gridOptions.defaultColDef;
23142 };
23143 GridOptionsWrapper.prototype.getDefaultColGroupDef = function () {
23144 return this.gridOptions.defaultColGroupDef;
23145 };
23146 GridOptionsWrapper.prototype.getDefaultExportParams = function (type) {
23147 if (this.gridOptions.defaultExportParams) {
23148 console.warn("AG Grid: Since v25.2 `defaultExportParams` has been replaced by `default" + Object(_utils_string__WEBPACK_IMPORTED_MODULE_16__["capitalise"])(type) + "ExportParams`'");
23149 if (type === 'csv') {
23150 return this.gridOptions.defaultExportParams;
23151 }
23152 return this.gridOptions.defaultExportParams;
23153 }
23154 if (type === 'csv' && this.gridOptions.defaultCsvExportParams) {
23155 return this.gridOptions.defaultCsvExportParams;
23156 }
23157 if (type === 'excel' && this.gridOptions.defaultExcelExportParams) {
23158 return this.gridOptions.defaultExcelExportParams;
23159 }
23160 };
23161 GridOptionsWrapper.prototype.isSuppressCsvExport = function () {
23162 return isTrue(this.gridOptions.suppressCsvExport);
23163 };
23164 GridOptionsWrapper.prototype.isAllowShowChangeAfterFilter = function () {
23165 return isTrue(this.gridOptions.allowShowChangeAfterFilter);
23166 };
23167 GridOptionsWrapper.prototype.isSuppressExcelExport = function () {
23168 return isTrue(this.gridOptions.suppressExcelExport);
23169 };
23170 GridOptionsWrapper.prototype.isSuppressMakeColumnVisibleAfterUnGroup = function () {
23171 return isTrue(this.gridOptions.suppressMakeColumnVisibleAfterUnGroup);
23172 };
23173 GridOptionsWrapper.prototype.getDataPathFunc = function () {
23174 return this.gridOptions.getDataPath;
23175 };
23176 GridOptionsWrapper.prototype.getIsServerSideGroupFunc = function () {
23177 return this.gridOptions.isServerSideGroup;
23178 };
23179 GridOptionsWrapper.prototype.getIsServerSideGroupOpenByDefaultFunc = function () {
23180 return this.mergeGridCommonParams(this.gridOptions.isServerSideGroupOpenByDefault);
23181 };
23182 GridOptionsWrapper.prototype.getIsGroupOpenByDefaultFunc = function () {
23183 return this.mergeGridCommonParams(this.gridOptions.isGroupOpenByDefault);
23184 };
23185 GridOptionsWrapper.prototype.getServerSideGroupKeyFunc = function () {
23186 return this.gridOptions.getServerSideGroupKey;
23187 };
23188 GridOptionsWrapper.prototype.getGroupRowAggFunc = function () {
23189 var _a = this.gridOptions, getGroupRowAgg = _a.getGroupRowAgg, groupRowAggNodes = _a.groupRowAggNodes;
23190 if (getGroupRowAgg) {
23191 return this.mergeGridCommonParams(getGroupRowAgg);
23192 }
23193 // this is the deprecated way, so provide a proxy to make it compatible
23194 if (groupRowAggNodes) {
23195 return function (params) { return groupRowAggNodes(params.nodes); };
23196 }
23197 };
23198 GridOptionsWrapper.prototype.getContextMenuItemsFunc = function () {
23199 return this.mergeGridCommonParams(this.gridOptions.getContextMenuItems);
23200 };
23201 GridOptionsWrapper.prototype.getMainMenuItemsFunc = function () {
23202 return this.mergeGridCommonParams(this.gridOptions.getMainMenuItems);
23203 };
23204 GridOptionsWrapper.prototype.getRowIdFunc = function () {
23205 var _a = this.gridOptions, getRowId = _a.getRowId, getRowNodeId = _a.getRowNodeId;
23206 if (getRowId) {
23207 return this.mergeGridCommonParams(getRowId);
23208 }
23209 // this is the deprecated way, so provide a proxy to make it compatible
23210 if (getRowNodeId) {
23211 return function (params) { return getRowNodeId(params.data); };
23212 }
23213 };
23214 GridOptionsWrapper.prototype.getNavigateToNextHeaderFunc = function () {
23215 return this.mergeGridCommonParams(this.gridOptions.navigateToNextHeader);
23216 };
23217 GridOptionsWrapper.prototype.getTabToNextHeaderFunc = function () {
23218 return this.mergeGridCommonParams(this.gridOptions.tabToNextHeader);
23219 };
23220 GridOptionsWrapper.prototype.getNavigateToNextCellFunc = function () {
23221 return this.mergeGridCommonParams(this.gridOptions.navigateToNextCell);
23222 };
23223 GridOptionsWrapper.prototype.getTabToNextCellFunc = function () {
23224 return this.mergeGridCommonParams(this.gridOptions.tabToNextCell);
23225 };
23226 GridOptionsWrapper.prototype.getGridTabIndex = function () {
23227 return (this.gridOptions.tabIndex || 0).toString();
23228 };
23229 GridOptionsWrapper.prototype.isTreeData = function () {
23230 var usingTreeData = isTrue(this.gridOptions.treeData);
23231 if (usingTreeData) {
23232 return _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_8__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_7__["ModuleNames"].RowGroupingModule, 'Tree Data');
23233 }
23234 return false;
23235 };
23236 GridOptionsWrapper.prototype.isValueCache = function () {
23237 return isTrue(this.gridOptions.valueCache);
23238 };
23239 GridOptionsWrapper.prototype.isValueCacheNeverExpires = function () {
23240 return isTrue(this.gridOptions.valueCacheNeverExpires);
23241 };
23242 GridOptionsWrapper.prototype.isDeltaSort = function () {
23243 return isTrue(this.gridOptions.deltaSort);
23244 };
23245 GridOptionsWrapper.prototype.isAggregateOnlyChangedColumns = function () {
23246 return isTrue(this.gridOptions.aggregateOnlyChangedColumns);
23247 };
23248 GridOptionsWrapper.prototype.getProcessSecondaryColDefFunc = function () {
23249 return this.gridOptions.processSecondaryColDef;
23250 };
23251 GridOptionsWrapper.prototype.getProcessSecondaryColGroupDefFunc = function () {
23252 return this.gridOptions.processSecondaryColGroupDef;
23253 };
23254 GridOptionsWrapper.prototype.getSendToClipboardFunc = function () {
23255 return this.mergeGridCommonParams(this.gridOptions.sendToClipboard);
23256 };
23257 GridOptionsWrapper.prototype.getProcessRowPostCreateFunc = function () {
23258 return this.mergeGridCommonParams(this.gridOptions.processRowPostCreate);
23259 };
23260 GridOptionsWrapper.prototype.getProcessCellForClipboardFunc = function () {
23261 return this.mergeGridCommonParams(this.gridOptions.processCellForClipboard);
23262 };
23263 GridOptionsWrapper.prototype.getProcessHeaderForClipboardFunc = function () {
23264 return this.mergeGridCommonParams(this.gridOptions.processHeaderForClipboard);
23265 };
23266 GridOptionsWrapper.prototype.getProcessGroupHeaderForClipboardFunc = function () {
23267 return this.mergeGridCommonParams(this.gridOptions.processGroupHeaderForClipboard);
23268 };
23269 GridOptionsWrapper.prototype.getProcessCellFromClipboardFunc = function () {
23270 return this.mergeGridCommonParams(this.gridOptions.processCellFromClipboard);
23271 };
23272 GridOptionsWrapper.prototype.getViewportRowModelPageSize = function () {
23273 return oneOrGreater(this.gridOptions.viewportRowModelPageSize, DEFAULT_VIEWPORT_ROW_MODEL_PAGE_SIZE);
23274 };
23275 GridOptionsWrapper.prototype.getViewportRowModelBufferSize = function () {
23276 return zeroOrGreater(this.gridOptions.viewportRowModelBufferSize, DEFAULT_VIEWPORT_ROW_MODEL_BUFFER_SIZE);
23277 };
23278 GridOptionsWrapper.prototype.isServerSideSortingAlwaysResets = function () {
23279 return isTrue(this.gridOptions.serverSideSortingAlwaysResets);
23280 };
23281 GridOptionsWrapper.prototype.isServerSideFilteringAlwaysResets = function () {
23282 return isTrue(this.gridOptions.serverSideFilteringAlwaysResets);
23283 };
23284 GridOptionsWrapper.prototype.getPostSortFunc = function () {
23285 var _a = this.gridOptions, postSortRows = _a.postSortRows, postSort = _a.postSort;
23286 if (postSortRows) {
23287 return this.mergeGridCommonParams(postSortRows);
23288 }
23289 // this is the deprecated way, so provide a proxy to make it compatible
23290 if (postSort) {
23291 return function (params) { return postSort(params.nodes); };
23292 }
23293 };
23294 GridOptionsWrapper.prototype.getChartToolbarItemsFunc = function () {
23295 return this.mergeGridCommonParams(this.gridOptions.getChartToolbarItems);
23296 };
23297 GridOptionsWrapper.prototype.getChartThemeOverrides = function () {
23298 return this.gridOptions.chartThemeOverrides;
23299 };
23300 GridOptionsWrapper.prototype.getCustomChartThemes = function () {
23301 return this.gridOptions.customChartThemes;
23302 };
23303 GridOptionsWrapper.prototype.getChartThemes = function () {
23304 // return default themes if user hasn't supplied any
23305 return this.gridOptions.chartThemes || ['ag-default', 'ag-material', 'ag-pastel', 'ag-vivid', 'ag-solar'];
23306 };
23307 GridOptionsWrapper.prototype.getClipboardDelimiter = function () {
23308 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["exists"])(this.gridOptions.clipboardDelimiter) ? this.gridOptions.clipboardDelimiter : '\t';
23309 };
23310 GridOptionsWrapper.prototype.setProperty = function (key, value, force) {
23311 if (force === void 0) { force = false; }
23312 var gridOptionsNoType = this.gridOptions;
23313 var previousValue = gridOptionsNoType[key];
23314 if (force || previousValue !== value) {
23315 gridOptionsNoType[key] = value;
23316 var event_1 = {
23317 type: key,
23318 currentValue: value,
23319 previousValue: previousValue
23320 };
23321 this.propertyEventService.dispatchEvent(event_1);
23322 }
23323 };
23324 GridOptionsWrapper.prototype.addEventListener = function (key, listener) {
23325 this.propertyEventService.addEventListener(key, listener);
23326 };
23327 GridOptionsWrapper.prototype.removeEventListener = function (key, listener) {
23328 this.propertyEventService.removeEventListener(key, listener);
23329 };
23330 GridOptionsWrapper.prototype.isSkipHeaderOnAutoSize = function () {
23331 return !!this.gridOptions.skipHeaderOnAutoSize;
23332 };
23333 GridOptionsWrapper.prototype.getAutoSizePadding = function () {
23334 var value = this.gridOptions.autoSizePadding;
23335 return value != null && value >= 0 ? value : 20;
23336 };
23337 // properties
23338 GridOptionsWrapper.prototype.getHeaderHeight = function () {
23339 if (typeof this.gridOptions.headerHeight === 'number') {
23340 return this.gridOptions.headerHeight;
23341 }
23342 return this.getFromTheme(25, 'headerHeight');
23343 };
23344 GridOptionsWrapper.prototype.getFloatingFiltersHeight = function () {
23345 if (typeof this.gridOptions.floatingFiltersHeight === 'number') {
23346 return this.gridOptions.floatingFiltersHeight;
23347 }
23348 return this.getFromTheme(25, 'headerHeight');
23349 };
23350 GridOptionsWrapper.prototype.getGroupHeaderHeight = function () {
23351 if (typeof this.gridOptions.groupHeaderHeight === 'number') {
23352 return this.gridOptions.groupHeaderHeight;
23353 }
23354 return this.getHeaderHeight();
23355 };
23356 GridOptionsWrapper.prototype.getPivotHeaderHeight = function () {
23357 if (typeof this.gridOptions.pivotHeaderHeight === 'number') {
23358 return this.gridOptions.pivotHeaderHeight;
23359 }
23360 return this.getHeaderHeight();
23361 };
23362 GridOptionsWrapper.prototype.getPivotGroupHeaderHeight = function () {
23363 if (typeof this.gridOptions.pivotGroupHeaderHeight === 'number') {
23364 return this.gridOptions.pivotGroupHeaderHeight;
23365 }
23366 return this.getGroupHeaderHeight();
23367 };
23368 GridOptionsWrapper.prototype.isExternalFilterPresent = function () {
23369 if (typeof this.gridOptions.isExternalFilterPresent === 'function') {
23370 return this.gridOptions.isExternalFilterPresent({ api: this.getApi(), columnApi: this.getColumnApi(), context: this.getContext() });
23371 }
23372 return false;
23373 };
23374 GridOptionsWrapper.prototype.doesExternalFilterPass = function (node) {
23375 if (typeof this.gridOptions.doesExternalFilterPass === 'function') {
23376 return this.gridOptions.doesExternalFilterPass(node);
23377 }
23378 return false;
23379 };
23380 GridOptionsWrapper.prototype.getTooltipDelay = function (type) {
23381 var _a = this.gridOptions, tooltipShowDelay = _a.tooltipShowDelay, tooltipHideDelay = _a.tooltipHideDelay;
23382 var delay = type === 'show' ? tooltipShowDelay : tooltipHideDelay;
23383 var capitalisedType = Object(_utils_string__WEBPACK_IMPORTED_MODULE_16__["capitalise"])(type);
23384 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["exists"])(delay)) {
23385 if (delay < 0) {
23386 Object(_utils_function__WEBPACK_IMPORTED_MODULE_11__["doOnce"])(function () { return console.warn("ag-grid: tooltip" + capitalisedType + "Delay should not be lower than 0"); }, "tooltip" + capitalisedType + "DelayWarn");
23387 }
23388 return Math.max(200, delay);
23389 }
23390 return null;
23391 };
23392 GridOptionsWrapper.prototype.isTooltipMouseTrack = function () {
23393 return isTrue(this.gridOptions.tooltipMouseTrack);
23394 };
23395 GridOptionsWrapper.prototype.isSuppressModelUpdateAfterUpdateTransaction = function () {
23396 return isTrue(this.gridOptions.suppressModelUpdateAfterUpdateTransaction);
23397 };
23398 GridOptionsWrapper.prototype.getDocument = function () {
23399 // if user is providing document, we use the users one,
23400 // otherwise we use the document on the global namespace.
23401 var result = null;
23402 if (this.gridOptions.getDocument && Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["exists"])(this.gridOptions.getDocument)) {
23403 result = this.gridOptions.getDocument();
23404 }
23405 else if (this.eGridDiv) {
23406 result = this.eGridDiv.ownerDocument;
23407 }
23408 if (result && Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["exists"])(result)) {
23409 return result;
23410 }
23411 return document;
23412 };
23413 GridOptionsWrapper.prototype.getMinColWidth = function () {
23414 var minColWidth = this.gridOptions.minColWidth;
23415 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["exists"])(minColWidth) && minColWidth > GridOptionsWrapper_1.MIN_COL_WIDTH) {
23416 return this.gridOptions.minColWidth;
23417 }
23418 var measuredMin = this.getFromTheme(null, 'headerCellMinWidth');
23419 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["exists"])(measuredMin) ? Math.max(measuredMin, GridOptionsWrapper_1.MIN_COL_WIDTH) : GridOptionsWrapper_1.MIN_COL_WIDTH;
23420 };
23421 GridOptionsWrapper.prototype.getMaxColWidth = function () {
23422 if (this.gridOptions.maxColWidth && this.gridOptions.maxColWidth > GridOptionsWrapper_1.MIN_COL_WIDTH) {
23423 return this.gridOptions.maxColWidth;
23424 }
23425 return null;
23426 };
23427 GridOptionsWrapper.prototype.getColWidth = function () {
23428 if (typeof this.gridOptions.colWidth !== 'number' || this.gridOptions.colWidth < GridOptionsWrapper_1.MIN_COL_WIDTH) {
23429 return 200;
23430 }
23431 return this.gridOptions.colWidth;
23432 };
23433 GridOptionsWrapper.prototype.getRowBuffer = function () {
23434 var rowBuffer = this.gridOptions.rowBuffer;
23435 if (typeof rowBuffer === 'number') {
23436 if (rowBuffer < 0) {
23437 Object(_utils_function__WEBPACK_IMPORTED_MODULE_11__["doOnce"])(function () { return console.warn("AG Grid: rowBuffer should not be negative"); }, 'warn rowBuffer negative');
23438 this.gridOptions.rowBuffer = rowBuffer = 0;
23439 }
23440 }
23441 else {
23442 rowBuffer = _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].ROW_BUFFER_SIZE;
23443 }
23444 return rowBuffer;
23445 };
23446 GridOptionsWrapper.prototype.getRowBufferInPixels = function () {
23447 var rowsToBuffer = this.getRowBuffer();
23448 var defaultRowHeight = this.getRowHeightAsNumber();
23449 return rowsToBuffer * defaultRowHeight;
23450 };
23451 // the user might be using some non-standard scrollbar, eg a scrollbar that has zero
23452 // width and overlays (like the Safari scrollbar, but presented in Chrome). so we
23453 // allow the user to provide the scroll width before we work it out.
23454 GridOptionsWrapper.prototype.getScrollbarWidth = function () {
23455 if (this.scrollbarWidth == null) {
23456 var useGridOptions = typeof this.gridOptions.scrollbarWidth === 'number' && this.gridOptions.scrollbarWidth >= 0;
23457 var scrollbarWidth = useGridOptions ? this.gridOptions.scrollbarWidth : Object(_utils_browser__WEBPACK_IMPORTED_MODULE_10__["getScrollbarWidth"])();
23458 if (scrollbarWidth != null) {
23459 this.scrollbarWidth = scrollbarWidth;
23460 this.eventService.dispatchEvent({
23461 type: _eventKeys__WEBPACK_IMPORTED_MODULE_5__["Events"].EVENT_SCROLLBAR_WIDTH_CHANGED
23462 });
23463 }
23464 }
23465 return this.scrollbarWidth;
23466 };
23467 GridOptionsWrapper.prototype.checkForDeprecated = function () {
23468 // casting to generic object, so typescript compiles even though
23469 // we are looking for attributes that don't exist
23470 var options = this.gridOptions;
23471 if (options.deprecatedEmbedFullWidthRows) {
23472 console.warn("AG Grid: since v21.2, deprecatedEmbedFullWidthRows has been replaced with embedFullWidthRows.");
23473 }
23474 if (options.rowDeselection) {
23475 console.warn('AG Grid: since v24.x, rowDeselection is deprecated and the behaviour is true by default. Please use `suppressRowDeselection` to prevent rows from being deselected.');
23476 }
23477 if (options.enableMultiRowDragging) {
23478 options.rowDragMultiRow = true;
23479 delete options.enableMultiRowDragging;
23480 console.warn('AG Grid: since v26.1, `enableMultiRowDragging` is deprecated. Please use `rowDragMultiRow`.');
23481 }
23482 var checkRenamedProperty = function (oldProp, newProp, version) {
23483 if (options[oldProp] != null) {
23484 console.warn("AG Grid: since version " + version + ", '" + oldProp + "' is deprecated / renamed, please use the new property name '" + newProp + "' instead.");
23485 if (options[newProp] == null) {
23486 options[newProp] = options[oldProp];
23487 }
23488 }
23489 };
23490 checkRenamedProperty('batchUpdateWaitMillis', 'asyncTransactionWaitMillis', '23.1.x');
23491 checkRenamedProperty('deltaRowDataMode', 'immutableData', '23.1.x');
23492 if (options.immutableColumns || options.deltaColumnMode) {
23493 console.warn('AG Grid: since v24.0, immutableColumns and deltaColumnMode properties are gone. The grid now works like this as default. To keep column order maintained, set grid property applyColumnDefOrder=true');
23494 }
23495 checkRenamedProperty('suppressSetColumnStateEvents', 'suppressColumnStateEvents', '24.0.x');
23496 if (options.groupRowInnerRenderer || options.groupRowInnerRendererParams || options.groupRowInnerRendererFramework) {
23497 console.warn('AG Grid: since v24.0, grid properties groupRowInnerRenderer, groupRowInnerRendererFramework and groupRowInnerRendererParams are no longer used.');
23498 console.warn(' Instead use the grid properties groupRowRendererParams.innerRenderer, groupRowRendererParams.innerRendererFramework and groupRowRendererParams.innerRendererParams.');
23499 console.warn(' For example instead of this:');
23500 console.warn(' groupRowInnerRenderer: "myRenderer"');
23501 console.warn(' groupRowInnerRendererParams: {x: a}');
23502 console.warn(' Replace with this:');
23503 console.warn(' groupRowRendererParams: {');
23504 console.warn(' innerRenderer: "myRenderer",');
23505 console.warn(' innerRendererParams: {x: a}');
23506 console.warn(' }');
23507 console.warn(' We have copied the properties over for you. However to stop this error message, please change your application code.');
23508 if (!options.groupRowRendererParams) {
23509 options.groupRowRendererParams = {};
23510 }
23511 var params = options.groupRowRendererParams;
23512 if (options.groupRowInnerRenderer) {
23513 params.innerRenderer = options.groupRowInnerRenderer;
23514 }
23515 if (options.groupRowInnerRendererParams) {
23516 params.innerRendererParams = options.groupRowInnerRendererParams;
23517 }
23518 if (options.groupRowInnerRendererFramework) {
23519 params.innerRendererFramework = options.groupRowInnerRendererFramework;
23520 }
23521 }
23522 if (options.rememberGroupStateWhenNewData) {
23523 console.warn('AG Grid: since v24.0, grid property rememberGroupStateWhenNewData is deprecated. This feature was provided before Transaction Updates worked (which keep group state). Now that transaction updates are possible and they keep group state, this feature is no longer needed.');
23524 }
23525 if (options.detailCellRendererParams && options.detailCellRendererParams.autoHeight) {
23526 console.warn('AG Grid: since v24.1, grid property detailCellRendererParams.autoHeight is replaced with grid property detailRowAutoHeight. This allows this feature to work when you provide a custom DetailCellRenderer');
23527 options.detailRowAutoHeight = true;
23528 }
23529 if (options.suppressKeyboardEvent) {
23530 console.warn("AG Grid: since v24.1 suppressKeyboardEvent in the gridOptions has been deprecated and will be removed in\n future versions of AG Grid. If you need this to be set for every column use the defaultColDef property.");
23531 }
23532 if (options.suppressEnterpriseResetOnNewColumns) {
23533 console.warn('AG Grid: since v25, grid property suppressEnterpriseResetOnNewColumns is deprecated. This was a temporary property to allow changing columns in Server Side Row Model without triggering a reload. Now that it is possible to dynamically change columns in the grid, this is no longer needed.');
23534 }
23535 if (options.suppressColumnStateEvents) {
23536 console.warn('AG Grid: since v25, grid property suppressColumnStateEvents no longer works due to a refactor that we did. It should be possible to achieve similar using event.source, which would be "api" if the event was due to setting column state via the API');
23537 }
23538 if (options.defaultExportParams) {
23539 console.warn('AG Grid: since v25.2, the grid property `defaultExportParams` has been replaced by `defaultCsvExportParams` and `defaultExcelExportParams`.');
23540 }
23541 if (options.stopEditingWhenGridLosesFocus) {
23542 console.warn('AG Grid: since v25.2.2, the grid property `stopEditingWhenGridLosesFocus` has been replaced by `stopEditingWhenCellsLoseFocus`.');
23543 options.stopEditingWhenCellsLoseFocus = true;
23544 }
23545 if (options.applyColumnDefOrder) {
23546 console.warn('AG Grid: since v26.0, the grid property `applyColumnDefOrder` is no longer needed, as this is the default behaviour. To turn this behaviour off, set maintainColumnOrder=true');
23547 }
23548 if (options.groupMultiAutoColumn) {
23549 console.warn("AG Grid: since v26.0, the grid property `groupMultiAutoColumn` has been replaced by `groupDisplayType = 'multipleColumns'`");
23550 options.groupDisplayType = 'multipleColumns';
23551 }
23552 if (options.groupUseEntireRow) {
23553 console.warn("AG Grid: since v26.0, the grid property `groupUseEntireRow` has been replaced by `groupDisplayType = 'groupRows'`");
23554 options.groupDisplayType = 'groupRows';
23555 }
23556 if (options.groupSuppressAutoColumn) {
23557 var propName = options.treeData ? 'treeDataDisplayType' : 'groupDisplayType';
23558 console.warn("AG Grid: since v26.0, the grid property `groupSuppressAutoColumn` has been replaced by `" + propName + " = 'custom'`");
23559 options.groupDisplayType = 'custom';
23560 }
23561 if (options.defaultGroupOrderComparator) {
23562 console.warn("AG Grid: since v27.2, the grid property `defaultGroupOrderComparator` is deprecated and has been replaced by `initialGroupOrderComparator` and now receives a single params object.");
23563 }
23564 if (options.defaultGroupSortComparator) {
23565 console.warn("AG Grid: since v26.0, the grid property `defaultGroupSortComparator` has been replaced by `initialGroupOrderComparator`");
23566 options.defaultGroupOrderComparator = options.defaultGroupSortComparator;
23567 }
23568 if (options.groupRowAggNodes) {
23569 console.warn("AG Grid: since v27.2, the grid property `groupRowAggNodes` is deprecated and has been replaced by `getGroupRowAgg` and now receives a single params object.");
23570 }
23571 if (options.postSort) {
23572 console.warn("AG Grid: since v27.2, the grid property `postSort` is deprecated and has been replaced by `postSortRows` and now receives a single params object.");
23573 }
23574 if (options.isFullWidthCell) {
23575 console.warn("AG Grid: since v27.2, the grid property `isFullWidthCell` is deprecated and has been replaced by `isFullWidthRow` and now receives a single params object.");
23576 }
23577 if (options.localeTextFunc) {
23578 console.warn("AG Grid: since v27.2, the grid property `localeTextFunc` is deprecated and has been replaced by `getLocaleText` and now receives a single params object.");
23579 }
23580 if (options.colWidth) {
23581 console.warn('AG Grid: since v26.1, the grid property `colWidth` is deprecated and should be set via `defaultColDef.width`.');
23582 }
23583 if (options.minColWidth) {
23584 console.warn('AG Grid: since v26.1, the grid property `minColWidth` is deprecated and should be set via `defaultColDef.minWidth`.');
23585 }
23586 if (options.maxColWidth) {
23587 console.warn('AG Grid: since v26.1, the grid property `maxColWidth` is deprecated and should be set via `defaultColDef.maxWidth`.');
23588 }
23589 if (options.reactUi) {
23590 console.warn('AG Grid: since v27.0, React UI is on by default, so no need for reactUi=true. To turn it off, set suppressReactUi=true.');
23591 }
23592 if (options.suppressReactUi) {
23593 console.warn('AG Grid: The legacy React rendering engine is deprecated and will be removed in the next major version of the grid.');
23594 }
23595 if (options.suppressCellSelection) {
23596 console.warn('AG Grid: since v27.0, `suppressCellSelection` has been replaced by `suppressCellFocus`.');
23597 options.suppressCellFocus = options.suppressCellSelection;
23598 }
23599 if (options.getRowNodeId) {
23600 console.warn('AG Grid: since v27.1, `getRowNodeId` is deprecated and has been replaced by `getRowId`. The difference: if getRowId() is implemented then immutable data is enabled by default.');
23601 }
23602 if (options.immutableData) {
23603 if (options.getRowId) {
23604 console.warn('AG Grid: since v27.1, `immutableData` is deprecated. With the `getRowId` callback implemented, immutable data is enabled by default so you can remove `immutableData=true`.');
23605 }
23606 else {
23607 console.warn('AG Grid: since v27.1, `immutableData` is deprecated. To enable immutable data you must implement the `getRowId()` callback.');
23608 }
23609 }
23610 if (options.clipboardDeliminator) {
23611 console.warn('AG Grid: since v27.1, `clipboardDeliminator` has been replaced by `clipboardDelimiter`.');
23612 options.clipboardDelimiter = options.clipboardDeliminator;
23613 }
23614 };
23615 GridOptionsWrapper.prototype.checkForViolations = function () {
23616 if (this.isTreeData()) {
23617 this.treeDataViolations();
23618 }
23619 };
23620 GridOptionsWrapper.prototype.treeDataViolations = function () {
23621 if (this.isRowModelDefault()) {
23622 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["missing"])(this.getDataPathFunc())) {
23623 console.warn('AG Grid: property usingTreeData=true with rowModel=clientSide, but you did not ' +
23624 'provide getDataPath function, please provide getDataPath function if using tree data.');
23625 }
23626 }
23627 if (this.isRowModelServerSide()) {
23628 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["missing"])(this.getIsServerSideGroupFunc())) {
23629 console.warn('AG Grid: property usingTreeData=true with rowModel=serverSide, but you did not ' +
23630 'provide isServerSideGroup function, please provide isServerSideGroup function if using tree data.');
23631 }
23632 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["missing"])(this.getServerSideGroupKeyFunc())) {
23633 console.warn('AG Grid: property usingTreeData=true with rowModel=serverSide, but you did not ' +
23634 'provide getServerSideGroupKey function, please provide getServerSideGroupKey function if using tree data.');
23635 }
23636 }
23637 };
23638 GridOptionsWrapper.prototype.getLocaleTextFunc = function () {
23639 var _this = this;
23640 var _a = this.gridOptions, localeText = _a.localeText, getLocaleText = _a.getLocaleText, localeTextFunc = _a.localeTextFunc;
23641 if (getLocaleText) {
23642 //key: string, defaultValue: string, variableValues?: string[]
23643 return function (key, defaultValue, variableValues) {
23644 var params = {
23645 key: key,
23646 defaultValue: defaultValue,
23647 variableValues: variableValues,
23648 api: _this.getApi(),
23649 columnApi: _this.getColumnApi(),
23650 context: _this.getContext()
23651 };
23652 return getLocaleText(params);
23653 };
23654 }
23655 if (localeTextFunc) {
23656 return localeTextFunc;
23657 }
23658 return function (key, defaultValue, variableValues) {
23659 var localisedText = localeText && localeText[key];
23660 if (localisedText && variableValues && variableValues.length) {
23661 var found = 0;
23662 while (true) {
23663 if (found >= variableValues.length) {
23664 break;
23665 }
23666 var idx = localisedText.indexOf('${variable}');
23667 if (idx === -1) {
23668 break;
23669 }
23670 localisedText = localisedText.replace('${variable}', variableValues[found++]);
23671 }
23672 }
23673 return (localisedText !== null && localisedText !== void 0 ? localisedText : defaultValue);
23674 };
23675 };
23676 // responsible for calling the onXXX functions on gridOptions
23677 GridOptionsWrapper.prototype.globalEventHandler = function (eventName, event) {
23678 // prevent events from being fired _after_ the grid has been destroyed
23679 if (this.destroyed) {
23680 return;
23681 }
23682 var callbackMethodName = _components_componentUtil__WEBPACK_IMPORTED_MODULE_1__["ComponentUtil"].getCallbackForEvent(eventName);
23683 if (typeof this.gridOptions[callbackMethodName] === 'function') {
23684 this.gridOptions[callbackMethodName](event);
23685 }
23686 };
23687 GridOptionsWrapper.prototype.setRowHeightVariable = function (height) {
23688 var oldRowHeight = this.eGridDiv.style.getPropertyValue('--ag-line-height').trim();
23689 var newRowHeight = height + "px";
23690 if (oldRowHeight != newRowHeight) {
23691 this.eGridDiv.style.setProperty('--ag-line-height', newRowHeight);
23692 }
23693 };
23694 // we don't allow dynamic row height for virtual paging
23695 GridOptionsWrapper.prototype.getRowHeightAsNumber = function () {
23696 if (!this.gridOptions.rowHeight || Object(_utils_generic__WEBPACK_IMPORTED_MODULE_13__["missing"])(this.gridOptions.rowHeight)) {
23697 return this.getDefaultRowHeight();
23698 }
23699 var rowHeight = this.gridOptions.rowHeight;
23700 if (rowHeight && this.isNumeric(rowHeight)) {
23701 this.setRowHeightVariable(rowHeight);
23702 return rowHeight;
23703 }
23704 console.warn('AG Grid row height must be a number if not using standard row model');
23705 return this.getDefaultRowHeight();
23706 };
23707 GridOptionsWrapper.prototype.isGetRowHeightFunction = function () {
23708 return typeof this.gridOptions.getRowHeight === 'function';
23709 };
23710 GridOptionsWrapper.prototype.getRowHeightForNode = function (rowNode, allowEstimate, defaultRowHeight) {
23711 if (allowEstimate === void 0) { allowEstimate = false; }
23712 if (defaultRowHeight == null) {
23713 defaultRowHeight = this.getDefaultRowHeight();
23714 }
23715 // check the function first, in case use set both function and
23716 // number, when using virtual pagination then function can be
23717 // used for pinned rows and the number for the body rows.
23718 if (this.isGetRowHeightFunction()) {
23719 if (allowEstimate) {
23720 return { height: defaultRowHeight, estimated: true };
23721 }
23722 var params = {
23723 node: rowNode,
23724 data: rowNode.data
23725 };
23726 var height = this.mergeGridCommonParams(this.gridOptions.getRowHeight)(params);
23727 if (this.isNumeric(height)) {
23728 if (height === 0) {
23729 Object(_utils_function__WEBPACK_IMPORTED_MODULE_11__["doOnce"])(function () { return console.warn('AG Grid: The return of `getRowHeight` cannot be zero. If the intention is to hide rows, use a filter instead.'); }, 'invalidRowHeight');
23730 }
23731 return { height: Math.max(1, height), estimated: false };
23732 }
23733 }
23734 if (rowNode.detail && this.isMasterDetail()) {
23735 // if autoHeight, we want the height to grow to the new height starting at 1, as otherwise a flicker would happen,
23736 // as the detail goes to the default (eg 200px) and then immediately shrink up/down to the new measured height
23737 // (due to auto height) which looks bad, especially if doing row animation.
23738 if (this.isDetailRowAutoHeight()) {
23739 return { height: 1, estimated: false };
23740 }
23741 if (this.isNumeric(this.gridOptions.detailRowHeight)) {
23742 return { height: this.gridOptions.detailRowHeight, estimated: false };
23743 }
23744 return { height: DEFAULT_DETAIL_ROW_HEIGHT, estimated: false };
23745 }
23746 var rowHeight = this.gridOptions.rowHeight && this.isNumeric(this.gridOptions.rowHeight) ? this.gridOptions.rowHeight : defaultRowHeight;
23747 return { height: rowHeight, estimated: false };
23748 };
23749 GridOptionsWrapper.prototype.isDynamicRowHeight = function () {
23750 return typeof this.gridOptions.getRowHeight === 'function';
23751 };
23752 GridOptionsWrapper.prototype.getListItemHeight = function () {
23753 return this.getFromTheme(20, 'listItemHeight');
23754 };
23755 GridOptionsWrapper.prototype.chartMenuPanelWidth = function () {
23756 return this.environment.chartMenuPanelWidth();
23757 };
23758 GridOptionsWrapper.prototype.isNumeric = function (value) {
23759 return !isNaN(value) && typeof value === 'number' && isFinite(value);
23760 };
23761 GridOptionsWrapper.prototype.getFromTheme = function (defaultValue, sassVariableName) {
23762 var theme = this.environment.getTheme().theme;
23763 if (theme && theme.indexOf('ag-theme') === 0) {
23764 return this.environment.getSassVariable(theme, sassVariableName);
23765 }
23766 return defaultValue;
23767 };
23768 GridOptionsWrapper.prototype.getDefaultRowHeight = function () {
23769 return this.getFromTheme(DEFAULT_ROW_HEIGHT, 'rowHeight');
23770 };
23771 GridOptionsWrapper.prototype.matchesGroupDisplayType = function (toMatch, supplied) {
23772 var groupDisplayTypeValues = ['groupRows', 'multipleColumns', 'custom', 'singleColumn'];
23773 if (groupDisplayTypeValues.indexOf(supplied) < 0) {
23774 console.warn("AG Grid: '" + supplied + "' is not a valid groupDisplayType value - possible values are: '" + groupDisplayTypeValues.join("', '") + "'");
23775 return false;
23776 }
23777 return supplied === toMatch;
23778 };
23779 GridOptionsWrapper.prototype.matchesTreeDataDisplayType = function (toMatch, supplied) {
23780 var treeDataDisplayTypeValues = ['auto', 'custom'];
23781 if (treeDataDisplayTypeValues.indexOf(supplied) < 0) {
23782 console.warn("AG Grid: '" + supplied + "' is not a valid treeDataDisplayType value - possible values are: '" + treeDataDisplayTypeValues.join("', '") + "'");
23783 return false;
23784 }
23785 return supplied === toMatch;
23786 };
23787 var GridOptionsWrapper_1;
23788 GridOptionsWrapper.MIN_COL_WIDTH = 10;
23789 GridOptionsWrapper.PROP_HEADER_HEIGHT = 'headerHeight';
23790 GridOptionsWrapper.PROP_GROUP_REMOVE_SINGLE_CHILDREN = 'groupRemoveSingleChildren';
23791 GridOptionsWrapper.PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN = 'groupRemoveLowestSingleChildren';
23792 GridOptionsWrapper.PROP_PIVOT_HEADER_HEIGHT = 'pivotHeaderHeight';
23793 GridOptionsWrapper.PROP_SUPPRESS_CLIPBOARD_PASTE = 'suppressClipboardPaste';
23794 GridOptionsWrapper.PROP_GROUP_HEADER_HEIGHT = 'groupHeaderHeight';
23795 GridOptionsWrapper.PROP_PIVOT_GROUP_HEADER_HEIGHT = 'pivotGroupHeaderHeight';
23796 GridOptionsWrapper.PROP_NAVIGATE_TO_NEXT_CELL = 'navigateToNextCell';
23797 GridOptionsWrapper.PROP_TAB_TO_NEXT_CELL = 'tabToNextCell';
23798 GridOptionsWrapper.PROP_NAVIGATE_TO_NEXT_HEADER = 'navigateToNextHeader';
23799 GridOptionsWrapper.PROP_TAB_TO_NEXT_HEADER = 'tabToNextHeader';
23800 GridOptionsWrapper.PROP_IS_EXTERNAL_FILTER_PRESENT = 'isExternalFilterPresent';
23801 GridOptionsWrapper.PROP_DOES_EXTERNAL_FILTER_PASS = 'doesExternalFilterPass';
23802 GridOptionsWrapper.PROP_FLOATING_FILTERS_HEIGHT = 'floatingFiltersHeight';
23803 GridOptionsWrapper.PROP_SUPPRESS_ROW_CLICK_SELECTION = 'suppressRowClickSelection';
23804 GridOptionsWrapper.PROP_SUPPRESS_ROW_DRAG = 'suppressRowDrag';
23805 GridOptionsWrapper.PROP_SUPPRESS_MOVE_WHEN_ROW_DRAG = 'suppressMoveWhenRowDragging';
23806 GridOptionsWrapper.PROP_GET_ROW_CLASS = 'getRowClass';
23807 GridOptionsWrapper.PROP_GET_ROW_STYLE = 'getRowStyle';
23808 GridOptionsWrapper.PROP_GET_ROW_HEIGHT = 'getRowHeight';
23809 GridOptionsWrapper.PROP_POPUP_PARENT = 'popupParent';
23810 GridOptionsWrapper.PROP_DOM_LAYOUT = 'domLayout';
23811 GridOptionsWrapper.PROP_ROW_CLASS = 'rowClass';
23812 GridOptionsWrapper.PROP_FILL_HANDLE_DIRECTION = 'fillHandleDirection';
23813 GridOptionsWrapper.PROP_GROUP_ROW_AGG_NODES = 'groupRowAggNodes';
23814 GridOptionsWrapper.PROP_GET_GROUP_ROW_AGG = 'getGroupRowAgg';
23815 GridOptionsWrapper.PROP_GET_BUSINESS_KEY_FOR_NODE = 'getBusinessKeyForNode';
23816 GridOptionsWrapper.PROP_GET_CHILD_COUNT = 'getChildCount';
23817 GridOptionsWrapper.PROP_PROCESS_ROW_POST_CREATE = 'processRowPostCreate';
23818 GridOptionsWrapper.PROP_GET_ROW_NODE_ID = 'getRowNodeId';
23819 GridOptionsWrapper.PROP_GET_ROW_ID = 'getRowId';
23820 GridOptionsWrapper.PROP_IS_FULL_WIDTH_CELL = 'isFullWidthCell';
23821 GridOptionsWrapper.PROP_IS_FULL_WIDTH_ROW = 'isFullWidthRow';
23822 GridOptionsWrapper.PROP_IS_ROW_SELECTABLE = 'isRowSelectable';
23823 GridOptionsWrapper.PROP_IS_ROW_MASTER = 'isRowMaster';
23824 GridOptionsWrapper.PROP_POST_SORT = 'postSort';
23825 GridOptionsWrapper.PROP_POST_SORT_ROWS = 'postSortRows';
23826 GridOptionsWrapper.PROP_GET_DOCUMENT = 'getDocument';
23827 GridOptionsWrapper.PROP_POST_PROCESS_POPUP = 'postProcessPopup';
23828 GridOptionsWrapper.PROP_DEFAULT_GROUP_ORDER_COMPARATOR = 'defaultGroupOrderComparator';
23829 GridOptionsWrapper.PROP_INITIAL_GROUP_ORDER_COMPARATOR = 'initialGroupOrderComparator';
23830 GridOptionsWrapper.PROP_PAGINATION_NUMBER_FORMATTER = 'paginationNumberFormatter';
23831 GridOptionsWrapper.PROP_GET_CONTEXT_MENU_ITEMS = 'getContextMenuItems';
23832 GridOptionsWrapper.PROP_GET_MAIN_MENU_ITEMS = 'getMainMenuItems';
23833 GridOptionsWrapper.PROP_PROCESS_CELL_FOR_CLIPBOARD = 'processCellForClipboard';
23834 GridOptionsWrapper.PROP_PROCESS_CELL_FROM_CLIPBOARD = 'processCellFromClipboard';
23835 GridOptionsWrapper.PROP_SEND_TO_CLIPBOARD = 'sendToClipboard';
23836 GridOptionsWrapper.PROP_PROCESS_TO_SECONDARY_COLDEF = 'processSecondaryColDef';
23837 GridOptionsWrapper.PROP_PROCESS_SECONDARY_COL_GROUP_DEF = 'processSecondaryColGroupDef';
23838 GridOptionsWrapper.PROP_GET_CHART_TOOLBAR_ITEMS = 'getChartToolbarItems';
23839 GridOptionsWrapper.PROP_GET_SERVER_SIDE_STORE_PARAMS = 'getServerSideStoreParams';
23840 GridOptionsWrapper.PROP_IS_SERVER_SIDE_GROUPS_OPEN_BY_DEFAULT = 'isServerSideGroupOpenByDefault';
23841 GridOptionsWrapper.PROP_IS_APPLY_SERVER_SIDE_TRANSACTION = 'isApplyServerSideTransaction';
23842 GridOptionsWrapper.PROP_IS_SERVER_SIDE_GROUP = 'isServerSideGroup';
23843 GridOptionsWrapper.PROP_GET_SERVER_SIDE_GROUP_KEY = 'getServerSideGroupKey';
23844 __decorate([
23845 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Autowired"])('gridOptions')
23846 ], GridOptionsWrapper.prototype, "gridOptions", void 0);
23847 __decorate([
23848 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Autowired"])('eventService')
23849 ], GridOptionsWrapper.prototype, "eventService", void 0);
23850 __decorate([
23851 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Autowired"])('environment')
23852 ], GridOptionsWrapper.prototype, "environment", void 0);
23853 __decorate([
23854 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Autowired"])('eGridDiv')
23855 ], GridOptionsWrapper.prototype, "eGridDiv", void 0);
23856 __decorate([
23857 __param(0, Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Qualifier"])('gridApi')), __param(1, Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Qualifier"])('columnApi'))
23858 ], GridOptionsWrapper.prototype, "agWire", null);
23859 __decorate([
23860 _context_context__WEBPACK_IMPORTED_MODULE_3__["PreDestroy"]
23861 ], GridOptionsWrapper.prototype, "destroy", null);
23862 __decorate([
23863 _context_context__WEBPACK_IMPORTED_MODULE_3__["PostConstruct"]
23864 ], GridOptionsWrapper.prototype, "init", null);
23865 GridOptionsWrapper = GridOptionsWrapper_1 = __decorate([
23866 Object(_context_context__WEBPACK_IMPORTED_MODULE_3__["Bean"])('gridOptionsWrapper')
23867 ], GridOptionsWrapper);
23868 return GridOptionsWrapper;
23869}());
23870
23871
23872
23873
23874
23875/***/ }),
23876/* 113 */
23877/***/ (function(module, __webpack_exports__, __webpack_require__) {
23878
23879"use strict";
23880__webpack_require__.r(__webpack_exports__);
23881/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SideBarDefParser", function() { return SideBarDefParser; });
23882/**
23883 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
23884 * @version v27.3.0
23885 * @link https://www.ag-grid.com/
23886 * @license MIT
23887 */
23888var SideBarDefParser = /** @class */ (function () {
23889 function SideBarDefParser() {
23890 }
23891 SideBarDefParser.parse = function (toParse) {
23892 if (!toParse) {
23893 return null;
23894 }
23895 if (toParse === true) {
23896 return {
23897 toolPanels: [
23898 SideBarDefParser.DEFAULT_COLUMN_COMP,
23899 SideBarDefParser.DEFAULT_FILTER_COMP,
23900 ],
23901 defaultToolPanel: 'columns'
23902 };
23903 }
23904 if (typeof toParse === 'string') {
23905 return SideBarDefParser.parse([toParse]);
23906 }
23907 if (Array.isArray(toParse)) {
23908 var comps_1 = [];
23909 toParse.forEach(function (key) {
23910 var lookupResult = SideBarDefParser.DEFAULT_BY_KEY[key];
23911 if (!lookupResult) {
23912 console.warn("AG Grid: the key " + key + " is not a valid key for specifying a tool panel, valid keys are: " + Object.keys(SideBarDefParser.DEFAULT_BY_KEY).join(','));
23913 return;
23914 }
23915 comps_1.push(lookupResult);
23916 });
23917 if (comps_1.length === 0) {
23918 return null;
23919 }
23920 return {
23921 toolPanels: comps_1,
23922 defaultToolPanel: comps_1[0].id
23923 };
23924 }
23925 var result = {
23926 toolPanels: SideBarDefParser.parseComponents(toParse.toolPanels),
23927 defaultToolPanel: toParse.defaultToolPanel,
23928 hiddenByDefault: toParse.hiddenByDefault,
23929 position: toParse.position
23930 };
23931 return result;
23932 };
23933 SideBarDefParser.parseComponents = function (from) {
23934 var result = [];
23935 if (!from) {
23936 return result;
23937 }
23938 from.forEach(function (it) {
23939 var toAdd = null;
23940 if (typeof it === 'string') {
23941 var lookupResult = SideBarDefParser.DEFAULT_BY_KEY[it];
23942 if (!lookupResult) {
23943 console.warn("AG Grid: the key " + it + " is not a valid key for specifying a tool panel, valid keys are: " + Object.keys(SideBarDefParser.DEFAULT_BY_KEY).join(','));
23944 return;
23945 }
23946 toAdd = lookupResult;
23947 }
23948 else {
23949 toAdd = it;
23950 }
23951 result.push(toAdd);
23952 });
23953 return result;
23954 };
23955 SideBarDefParser.DEFAULT_COLUMN_COMP = {
23956 id: 'columns',
23957 labelDefault: 'Columns',
23958 labelKey: 'columns',
23959 iconKey: 'columns',
23960 toolPanel: 'agColumnsToolPanel',
23961 };
23962 SideBarDefParser.DEFAULT_FILTER_COMP = {
23963 id: 'filters',
23964 labelDefault: 'Filters',
23965 labelKey: 'filters',
23966 iconKey: 'filter',
23967 toolPanel: 'agFiltersToolPanel',
23968 };
23969 SideBarDefParser.DEFAULT_BY_KEY = {
23970 columns: SideBarDefParser.DEFAULT_COLUMN_COMP,
23971 filters: SideBarDefParser.DEFAULT_FILTER_COMP
23972 };
23973 return SideBarDefParser;
23974}());
23975
23976
23977
23978
23979
23980/***/ }),
23981/* 114 */
23982/***/ (function(module, __webpack_exports__, __webpack_require__) {
23983
23984"use strict";
23985__webpack_require__.r(__webpack_exports__);
23986/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowAnimationCssClasses", function() { return RowAnimationCssClasses; });
23987/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CSS_CLASS_CELL_SELECTABLE", function() { return CSS_CLASS_CELL_SELECTABLE; });
23988/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CSS_CLASS_FORCE_VERTICAL_SCROLL", function() { return CSS_CLASS_FORCE_VERTICAL_SCROLL; });
23989/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CSS_CLASS_COLUMN_MOVING", function() { return CSS_CLASS_COLUMN_MOVING; });
23990/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GridBodyCtrl", function() { return GridBodyCtrl; });
23991/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
23992/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
23993/* harmony import */ var _styling_layoutFeature__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(111);
23994/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15);
23995/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(24);
23996/* harmony import */ var _gridBodyScrollFeature__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(115);
23997/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(42);
23998/* harmony import */ var _rowDragFeature__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(116);
23999/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(43);
24000/**
24001 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
24002 * @version v27.3.0
24003 * @link https://www.ag-grid.com/
24004 * @license MIT
24005 */
24006var __extends = (undefined && undefined.__extends) || (function () {
24007 var extendStatics = function (d, b) {
24008 extendStatics = Object.setPrototypeOf ||
24009 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
24010 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
24011 return extendStatics(d, b);
24012 };
24013 return function (d, b) {
24014 extendStatics(d, b);
24015 function __() { this.constructor = d; }
24016 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
24017 };
24018})();
24019var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
24020 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
24021 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
24022 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
24023 return c > 3 && r && Object.defineProperty(target, key, r), r;
24024};
24025
24026
24027
24028
24029
24030
24031
24032
24033
24034var RowAnimationCssClasses;
24035(function (RowAnimationCssClasses) {
24036 RowAnimationCssClasses["ANIMATION_ON"] = "ag-row-animation";
24037 RowAnimationCssClasses["ANIMATION_OFF"] = "ag-row-no-animation";
24038})(RowAnimationCssClasses || (RowAnimationCssClasses = {}));
24039var CSS_CLASS_CELL_SELECTABLE = 'ag-selectable';
24040var CSS_CLASS_FORCE_VERTICAL_SCROLL = 'ag-force-vertical-scroll';
24041var CSS_CLASS_COLUMN_MOVING = 'ag-column-moving';
24042var GridBodyCtrl = /** @class */ (function (_super) {
24043 __extends(GridBodyCtrl, _super);
24044 function GridBodyCtrl() {
24045 return _super !== null && _super.apply(this, arguments) || this;
24046 }
24047 GridBodyCtrl.prototype.getScrollFeature = function () {
24048 return this.bodyScrollFeature;
24049 };
24050 GridBodyCtrl.prototype.getBodyViewportElement = function () {
24051 return this.eBodyViewport;
24052 };
24053 GridBodyCtrl.prototype.setComp = function (comp, eGridBody, eBodyViewport, eTop, eBottom) {
24054 this.comp = comp;
24055 this.eGridBody = eGridBody;
24056 this.eBodyViewport = eBodyViewport;
24057 this.eTop = eTop;
24058 this.eBottom = eBottom;
24059 this.setCellTextSelection(this.gridOptionsWrapper.isEnableCellTextSelect());
24060 this.createManagedBean(new _styling_layoutFeature__WEBPACK_IMPORTED_MODULE_2__["LayoutFeature"](this.comp));
24061 this.bodyScrollFeature = this.createManagedBean(new _gridBodyScrollFeature__WEBPACK_IMPORTED_MODULE_5__["GridBodyScrollFeature"](this.eBodyViewport));
24062 this.addRowDragListener();
24063 this.setupRowAnimationCssClass();
24064 this.addEventListeners();
24065 this.addFocusListeners([eTop, eBodyViewport, eBottom]);
24066 this.onGridColumnsChanged();
24067 this.addBodyViewportListener();
24068 this.setFloatingHeights();
24069 this.disableBrowserDragging();
24070 this.addStopEditingWhenGridLosesFocus();
24071 this.ctrlsService.registerGridBodyCtrl(this);
24072 };
24073 GridBodyCtrl.prototype.getComp = function () {
24074 return this.comp;
24075 };
24076 GridBodyCtrl.prototype.addEventListeners = function () {
24077 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));
24078 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));
24079 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_PINNED_ROW_DATA_CHANGED, this.setFloatingHeights.bind(this));
24080 };
24081 GridBodyCtrl.prototype.addFocusListeners = function (elements) {
24082 var _this = this;
24083 elements.forEach(function (element) {
24084 _this.addManagedListener(element, 'focusin', function () {
24085 element.classList.add('ag-has-focus');
24086 });
24087 _this.addManagedListener(element, 'focusout', function (e) {
24088 if (!element.contains(e.relatedTarget)) {
24089 element.classList.remove('ag-has-focus');
24090 }
24091 });
24092 });
24093 };
24094 // used by ColumnAnimationService
24095 GridBodyCtrl.prototype.setColumnMovingCss = function (moving) {
24096 this.comp.setColumnMovingCss(moving ? CSS_CLASS_COLUMN_MOVING : null, moving);
24097 };
24098 GridBodyCtrl.prototype.setCellTextSelection = function (selectable) {
24099 if (selectable === void 0) { selectable = false; }
24100 var cssClass = selectable ? CSS_CLASS_CELL_SELECTABLE : null;
24101 this.comp.setCellSelectableCss(cssClass, selectable);
24102 };
24103 GridBodyCtrl.prototype.onScrollVisibilityChanged = function () {
24104 var visible = this.scrollVisibleService.isVerticalScrollShowing();
24105 this.setVerticalScrollPaddingVisible(visible);
24106 };
24107 GridBodyCtrl.prototype.onGridColumnsChanged = function () {
24108 var columns = this.columnModel.getAllGridColumns();
24109 this.comp.setColumnCount(columns ? columns.length : 0);
24110 };
24111 // if we do not do this, then the user can select a pic in the grid (eg an image in a custom cell renderer)
24112 // and then that will start the browser native drag n' drop, which messes up with our own drag and drop.
24113 GridBodyCtrl.prototype.disableBrowserDragging = function () {
24114 this.addManagedListener(this.eGridBody, 'dragstart', function (event) {
24115 if (event.target instanceof HTMLImageElement) {
24116 event.preventDefault();
24117 return false;
24118 }
24119 });
24120 };
24121 GridBodyCtrl.prototype.addStopEditingWhenGridLosesFocus = function () {
24122 var _this = this;
24123 if (!this.gridOptionsWrapper.isStopEditingWhenCellsLoseFocus()) {
24124 return;
24125 }
24126 var focusOutListener = function (event) {
24127 // this is the element the focus is moving to
24128 var elementWithFocus = event.relatedTarget;
24129 if (Object(_utils_browser__WEBPACK_IMPORTED_MODULE_8__["getTabIndex"])(elementWithFocus) === null) {
24130 _this.rowRenderer.stopEditing();
24131 return;
24132 }
24133 var clickInsideGrid =
24134 // see if click came from inside the viewports
24135 viewports.some(function (viewport) { return viewport.contains(elementWithFocus); })
24136 // and also that it's not from a detail grid
24137 && _this.mouseEventService.isElementInThisGrid(elementWithFocus);
24138 if (!clickInsideGrid) {
24139 var popupService = _this.popupService;
24140 clickInsideGrid =
24141 popupService.getActivePopups().some(function (popup) { return popup.contains(elementWithFocus); }) ||
24142 popupService.isElementWithinCustomPopup(elementWithFocus);
24143 }
24144 if (!clickInsideGrid) {
24145 _this.rowRenderer.stopEditing();
24146 }
24147 };
24148 var viewports = [this.eBodyViewport, this.eBottom, this.eTop];
24149 viewports.forEach(function (viewport) { return _this.addManagedListener(viewport, 'focusout', focusOutListener); });
24150 };
24151 GridBodyCtrl.prototype.updateRowCount = function () {
24152 var headerCount = this.headerNavigationService.getHeaderRowCount();
24153 var modelType = this.paginationProxy.getType();
24154 var rowCount = -1;
24155 if (modelType === _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE) {
24156 rowCount = 0;
24157 this.paginationProxy.forEachNode(function (node) {
24158 if (!node.group) {
24159 rowCount++;
24160 }
24161 });
24162 }
24163 var total = rowCount === -1 ? -1 : (headerCount + rowCount);
24164 this.comp.setRowCount(total);
24165 };
24166 GridBodyCtrl.prototype.registerBodyViewportResizeListener = function (listener) {
24167 this.comp.registerBodyViewportResizeListener(listener);
24168 };
24169 GridBodyCtrl.prototype.setVerticalScrollPaddingVisible = function (visible) {
24170 var overflowY = visible ? 'scroll' : 'hidden';
24171 this.comp.setPinnedTopBottomOverflowY(overflowY);
24172 };
24173 GridBodyCtrl.prototype.isVerticalScrollShowing = function () {
24174 var show = this.gridOptionsWrapper.isAlwaysShowVerticalScroll();
24175 var cssClass = show ? CSS_CLASS_FORCE_VERTICAL_SCROLL : null;
24176 this.comp.setAlwaysVerticalScrollClass(cssClass, show);
24177 return show || Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["isVerticalScrollShowing"])(this.eBodyViewport);
24178 };
24179 GridBodyCtrl.prototype.setupRowAnimationCssClass = function () {
24180 var _this = this;
24181 var listener = function () {
24182 // we don't want to use row animation if scaling, as rows jump strangely as you scroll,
24183 // when scaling and doing row animation.
24184 var animateRows = _this.gridOptionsWrapper.isAnimateRows() && !_this.rowContainerHeightService.isStretching();
24185 var animateRowsCssClass = animateRows ? RowAnimationCssClasses.ANIMATION_ON : RowAnimationCssClasses.ANIMATION_OFF;
24186 _this.comp.setRowAnimationCssOnBodyViewport(animateRowsCssClass, animateRows);
24187 };
24188 listener();
24189 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_HEIGHT_SCALE_CHANGED, listener);
24190 };
24191 GridBodyCtrl.prototype.getGridBodyElement = function () {
24192 return this.eGridBody;
24193 };
24194 GridBodyCtrl.prototype.addBodyViewportListener = function () {
24195 var _this = this;
24196 // we want to listen for clicks directly on the eBodyViewport, so the user has a way of showing
24197 // the context menu if no rows or columns are displayed, or user simply clicks outside of a cell
24198 var listener = function (mouseEvent) {
24199 if (_this.gridOptionsWrapper.isPreventDefaultOnContextMenu()) {
24200 mouseEvent.preventDefault();
24201 }
24202 var target = mouseEvent.target;
24203 if (target === _this.eBodyViewport || target === _this.ctrlsService.getCenterRowContainerCtrl().getViewportElement()) {
24204 // show it
24205 if (_this.contextMenuFactory) {
24206 _this.contextMenuFactory.onContextMenu(mouseEvent, null, null, null, null, _this.eGridBody);
24207 }
24208 }
24209 };
24210 this.addManagedListener(this.eBodyViewport, 'contextmenu', listener);
24211 this.addManagedListener(this.eBodyViewport, 'wheel', this.onWheel.bind(this));
24212 };
24213 GridBodyCtrl.prototype.onWheel = function (e) {
24214 if (!this.gridOptionsWrapper.isSuppressScrollWhenPopupsAreOpen()) {
24215 return;
24216 }
24217 if (this.popupService.hasAnchoredPopup()) {
24218 e.preventDefault();
24219 }
24220 };
24221 GridBodyCtrl.prototype.getGui = function () {
24222 return this.eGridBody;
24223 };
24224 // called by rowDragFeature
24225 GridBodyCtrl.prototype.scrollVertically = function (pixels) {
24226 var oldScrollPosition = this.eBodyViewport.scrollTop;
24227 this.bodyScrollFeature.setVerticalScrollPosition(oldScrollPosition + pixels);
24228 return this.eBodyViewport.scrollTop - oldScrollPosition;
24229 };
24230 GridBodyCtrl.prototype.addRowDragListener = function () {
24231 this.rowDragFeature = this.createManagedBean(new _rowDragFeature__WEBPACK_IMPORTED_MODULE_7__["RowDragFeature"](this.eBodyViewport));
24232 this.dragAndDropService.addDropTarget(this.rowDragFeature);
24233 };
24234 GridBodyCtrl.prototype.getRowDragFeature = function () {
24235 return this.rowDragFeature;
24236 };
24237 GridBodyCtrl.prototype.setFloatingHeights = function () {
24238 var pinnedRowModel = this.pinnedRowModel;
24239 var floatingTopHeight = pinnedRowModel.getPinnedTopTotalHeight();
24240 if (floatingTopHeight) {
24241 // adding 1px for cell bottom border
24242 floatingTopHeight += 1;
24243 }
24244 var floatingBottomHeight = pinnedRowModel.getPinnedBottomTotalHeight();
24245 if (floatingBottomHeight) {
24246 // adding 1px for cell bottom border
24247 floatingBottomHeight += 1;
24248 }
24249 this.comp.setTopHeight(floatingTopHeight);
24250 this.comp.setBottomHeight(floatingBottomHeight);
24251 this.comp.setTopDisplay(floatingTopHeight ? 'inherit' : 'none');
24252 this.comp.setBottomDisplay(floatingBottomHeight ? 'inherit' : 'none');
24253 };
24254 // method will call itself if no available width. this covers if the grid
24255 // isn't visible, but is just about to be visible.
24256 GridBodyCtrl.prototype.sizeColumnsToFit = function (nextTimeout) {
24257 var _this = this;
24258 var removeScrollWidth = this.isVerticalScrollShowing();
24259 var scrollWidthToRemove = removeScrollWidth ? this.gridOptionsWrapper.getScrollbarWidth() : 0;
24260 var bodyViewportWidth = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["getInnerWidth"])(this.eBodyViewport);
24261 var availableWidth = bodyViewportWidth - scrollWidthToRemove;
24262 if (availableWidth > 0) {
24263 this.columnModel.sizeColumnsToFit(availableWidth, "sizeColumnsToFit");
24264 return;
24265 }
24266 if (nextTimeout === undefined) {
24267 window.setTimeout(function () {
24268 _this.sizeColumnsToFit(100);
24269 }, 0);
24270 }
24271 else if (nextTimeout === 100) {
24272 window.setTimeout(function () {
24273 _this.sizeColumnsToFit(500);
24274 }, 100);
24275 }
24276 else if (nextTimeout === 500) {
24277 window.setTimeout(function () {
24278 _this.sizeColumnsToFit(-1);
24279 }, 500);
24280 }
24281 else {
24282 console.warn('AG Grid: tried to call sizeColumnsToFit() but the grid is coming back with ' +
24283 'zero width, maybe the grid is not visible yet on the screen?');
24284 }
24285 };
24286 // + rangeService
24287 GridBodyCtrl.prototype.addScrollEventListener = function (listener) {
24288 this.eBodyViewport.addEventListener('scroll', listener);
24289 };
24290 // + focusService
24291 GridBodyCtrl.prototype.removeScrollEventListener = function (listener) {
24292 this.eBodyViewport.removeEventListener('scroll', listener);
24293 };
24294 __decorate([
24295 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('rowContainerHeightService')
24296 ], GridBodyCtrl.prototype, "rowContainerHeightService", void 0);
24297 __decorate([
24298 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('ctrlsService')
24299 ], GridBodyCtrl.prototype, "ctrlsService", void 0);
24300 __decorate([
24301 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
24302 ], GridBodyCtrl.prototype, "columnModel", void 0);
24303 __decorate([
24304 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('scrollVisibleService')
24305 ], GridBodyCtrl.prototype, "scrollVisibleService", void 0);
24306 __decorate([
24307 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('contextMenuFactory')
24308 ], GridBodyCtrl.prototype, "contextMenuFactory", void 0);
24309 __decorate([
24310 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('headerNavigationService')
24311 ], GridBodyCtrl.prototype, "headerNavigationService", void 0);
24312 __decorate([
24313 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('paginationProxy')
24314 ], GridBodyCtrl.prototype, "paginationProxy", void 0);
24315 __decorate([
24316 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('dragAndDropService')
24317 ], GridBodyCtrl.prototype, "dragAndDropService", void 0);
24318 __decorate([
24319 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('pinnedRowModel')
24320 ], GridBodyCtrl.prototype, "pinnedRowModel", void 0);
24321 __decorate([
24322 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('rowRenderer')
24323 ], GridBodyCtrl.prototype, "rowRenderer", void 0);
24324 __decorate([
24325 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('popupService')
24326 ], GridBodyCtrl.prototype, "popupService", void 0);
24327 __decorate([
24328 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('mouseEventService')
24329 ], GridBodyCtrl.prototype, "mouseEventService", void 0);
24330 return GridBodyCtrl;
24331}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
24332
24333
24334
24335
24336
24337/***/ }),
24338/* 115 */
24339/***/ (function(module, __webpack_exports__, __webpack_require__) {
24340
24341"use strict";
24342__webpack_require__.r(__webpack_exports__);
24343/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GridBodyScrollFeature", function() { return GridBodyScrollFeature; });
24344/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
24345/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
24346/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
24347/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(24);
24348/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(14);
24349/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(43);
24350/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(15);
24351/**
24352 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
24353 * @version v27.3.0
24354 * @link https://www.ag-grid.com/
24355 * @license MIT
24356 */
24357var __extends = (undefined && undefined.__extends) || (function () {
24358 var extendStatics = function (d, b) {
24359 extendStatics = Object.setPrototypeOf ||
24360 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
24361 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
24362 return extendStatics(d, b);
24363 };
24364 return function (d, b) {
24365 extendStatics(d, b);
24366 function __() { this.constructor = d; }
24367 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
24368 };
24369})();
24370var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
24371 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
24372 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
24373 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
24374 return c > 3 && r && Object.defineProperty(target, key, r), r;
24375};
24376
24377
24378
24379
24380
24381
24382
24383var GridBodyScrollFeature = /** @class */ (function (_super) {
24384 __extends(GridBodyScrollFeature, _super);
24385 function GridBodyScrollFeature(eBodyViewport) {
24386 var _this = _super.call(this) || this;
24387 _this.scrollLeft = -1;
24388 _this.nextScrollTop = -1;
24389 _this.scrollTop = -1;
24390 _this.eBodyViewport = eBodyViewport;
24391 _this.resetLastHorizontalScrollElementDebounced = Object(_utils_function__WEBPACK_IMPORTED_MODULE_4__["debounce"])(_this.resetLastHorizontalScrollElement.bind(_this), 500);
24392 return _this;
24393 }
24394 GridBodyScrollFeature.prototype.postConstruct = function () {
24395 var _this = this;
24396 this.enableRtl = this.gridOptionsWrapper.isEnableRtl();
24397 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onDisplayedColumnsWidthChanged.bind(this));
24398 this.ctrlsService.whenReady(function (p) {
24399 _this.centerRowContainerCtrl = p.centerRowContainerCtrl;
24400 _this.onDisplayedColumnsWidthChanged();
24401 _this.addScrollListener();
24402 });
24403 };
24404 GridBodyScrollFeature.prototype.addScrollListener = function () {
24405 var fakeHScroll = this.ctrlsService.getFakeHScrollCtrl();
24406 this.addManagedListener(this.centerRowContainerCtrl.getViewportElement(), 'scroll', this.onCenterViewportScroll.bind(this));
24407 this.addManagedListener(fakeHScroll.getViewport(), 'scroll', this.onFakeHorizontalScroll.bind(this));
24408 var onVerticalScroll = this.gridOptionsWrapper.isDebounceVerticalScrollbar() ?
24409 Object(_utils_function__WEBPACK_IMPORTED_MODULE_4__["debounce"])(this.onVerticalScroll.bind(this), 100)
24410 : this.onVerticalScroll.bind(this);
24411 this.addManagedListener(this.eBodyViewport, 'scroll', onVerticalScroll);
24412 };
24413 GridBodyScrollFeature.prototype.onDisplayedColumnsWidthChanged = function () {
24414 if (this.enableRtl) {
24415 // because RTL is all backwards, a change in the width of the row
24416 // can cause a change in the scroll position, without a scroll event,
24417 // because the scroll position in RTL is a function that depends on
24418 // the width. to be convinced of this, take out this line, enable RTL,
24419 // scroll all the way to the left and then resize a column
24420 this.horizontallyScrollHeaderCenterAndFloatingCenter();
24421 }
24422 };
24423 GridBodyScrollFeature.prototype.horizontallyScrollHeaderCenterAndFloatingCenter = function (scrollLeft) {
24424 // when doing RTL, this method gets called once prematurely
24425 var notYetInitialised = this.centerRowContainerCtrl == null;
24426 if (notYetInitialised) {
24427 return;
24428 }
24429 if (scrollLeft === undefined) {
24430 scrollLeft = this.centerRowContainerCtrl.getCenterViewportScrollLeft();
24431 }
24432 var offset = this.enableRtl ? scrollLeft : -scrollLeft;
24433 var topCenterContainer = this.ctrlsService.getTopCenterRowContainerCtrl();
24434 var bottomCenterContainer = this.ctrlsService.getBottomCenterRowContainerCtrl();
24435 var fakeHScroll = this.ctrlsService.getFakeHScrollCtrl();
24436 var centerHeaderContainer = this.ctrlsService.getHeaderRowContainerCtrl();
24437 centerHeaderContainer.setHorizontalScroll(offset);
24438 bottomCenterContainer.setContainerTranslateX(offset);
24439 topCenterContainer.setContainerTranslateX(offset);
24440 var partner = this.lastHorizontalScrollElement === this.centerRowContainerCtrl.getViewportElement() ?
24441 fakeHScroll.getViewport() : this.centerRowContainerCtrl.getViewportElement();
24442 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setScrollLeft"])(partner, Math.abs(scrollLeft), this.enableRtl);
24443 };
24444 GridBodyScrollFeature.prototype.isControllingScroll = function (eDiv) {
24445 if (!this.lastHorizontalScrollElement) {
24446 this.lastHorizontalScrollElement = eDiv;
24447 return true;
24448 }
24449 return eDiv === this.lastHorizontalScrollElement;
24450 };
24451 GridBodyScrollFeature.prototype.onFakeHorizontalScroll = function () {
24452 var fakeHScrollViewport = this.ctrlsService.getFakeHScrollCtrl().getViewport();
24453 if (!this.isControllingScroll(fakeHScrollViewport)) {
24454 return;
24455 }
24456 this.onBodyHorizontalScroll(fakeHScrollViewport);
24457 };
24458 GridBodyScrollFeature.prototype.onCenterViewportScroll = function () {
24459 var centerContainerViewport = this.centerRowContainerCtrl.getViewportElement();
24460 if (!this.isControllingScroll(centerContainerViewport)) {
24461 return;
24462 }
24463 this.onBodyHorizontalScroll(centerContainerViewport);
24464 };
24465 GridBodyScrollFeature.prototype.onBodyHorizontalScroll = function (eSource) {
24466 var centerContainerViewport = this.centerRowContainerCtrl.getViewportElement();
24467 var scrollLeft = centerContainerViewport.scrollLeft;
24468 if (this.shouldBlockScrollUpdate('horizontal', scrollLeft, true)) {
24469 return;
24470 }
24471 // we do Math.round() rather than Math.floor(), to mirror how scroll values are applied.
24472 // eg if a scale is applied (ie user has zoomed the browser), then applying scroll=200
24473 // could result in 199.88, which then floor(199.88) = 199, however round(199.88) = 200.
24474 // initially Math.floor() was used, however this caused (almost) infinite loop with aligned grids,
24475 // as the scroll would move 1px at at time bouncing from one grid to the next (eg one grid would cause
24476 // scroll to 200px, the next to 199px, then the first back to 198px and so on).
24477 this.doHorizontalScroll(Math.round(Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["getScrollLeft"])(eSource, this.enableRtl)));
24478 this.resetLastHorizontalScrollElementDebounced();
24479 };
24480 GridBodyScrollFeature.prototype.onVerticalScroll = function () {
24481 var scrollTop = this.eBodyViewport.scrollTop;
24482 if (this.shouldBlockScrollUpdate('vertical', scrollTop, true)) {
24483 return;
24484 }
24485 this.animationFrameService.setScrollTop(scrollTop);
24486 this.nextScrollTop = scrollTop;
24487 if (this.gridOptionsWrapper.isSuppressAnimationFrame()) {
24488 this.scrollTop = this.nextScrollTop;
24489 this.redrawRowsAfterScroll();
24490 }
24491 else {
24492 this.animationFrameService.schedule();
24493 }
24494 };
24495 GridBodyScrollFeature.prototype.resetLastHorizontalScrollElement = function () {
24496 this.lastHorizontalScrollElement = null;
24497 };
24498 GridBodyScrollFeature.prototype.doHorizontalScroll = function (scrollLeft) {
24499 var fakeHScrollViewport = this.ctrlsService.getFakeHScrollCtrl().getViewport();
24500 var fakeScrollLeft = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["getScrollLeft"])(fakeHScrollViewport, this.enableRtl);
24501 if (this.scrollLeft === scrollLeft && scrollLeft === fakeScrollLeft) {
24502 return;
24503 }
24504 this.scrollLeft = scrollLeft;
24505 this.fireScrollEvent('horizontal');
24506 this.horizontallyScrollHeaderCenterAndFloatingCenter(scrollLeft);
24507 this.onHorizontalViewportChanged();
24508 };
24509 GridBodyScrollFeature.prototype.fireScrollEvent = function (direction) {
24510 var _this = this;
24511 var bodyScrollEvent = {
24512 type: _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_BODY_SCROLL,
24513 api: this.gridApi,
24514 columnApi: this.columnApi,
24515 direction: direction,
24516 left: this.scrollLeft,
24517 top: this.scrollTop
24518 };
24519 this.eventService.dispatchEvent(bodyScrollEvent);
24520 window.clearTimeout(this.scrollTimer);
24521 this.scrollTimer = undefined;
24522 this.scrollTimer = window.setTimeout(function () {
24523 var bodyScrollEndEvent = Object.assign({}, bodyScrollEvent, {
24524 type: _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_BODY_SCROLL_END
24525 });
24526 _this.eventService.dispatchEvent(bodyScrollEndEvent);
24527 }, 100);
24528 };
24529 GridBodyScrollFeature.prototype.shouldBlockScrollUpdate = function (direction, scrollTo, touchOnly) {
24530 // touch devices allow elastic scroll - which temporally scrolls the panel outside of the viewport
24531 // (eg user uses touch to go to the left of the grid, but drags past the left, the rows will actually
24532 // scroll past the left until the user releases the mouse). when this happens, we want ignore the scroll,
24533 // as otherwise it was causing the rows and header to flicker.
24534 if (touchOnly === void 0) { touchOnly = false; }
24535 // sometimes when scrolling, we got values that extended the maximum scroll allowed. we used to
24536 // ignore these scrolls. problem is the max scroll position could be skipped (eg the previous scroll event
24537 // could be 10px before the max position, and then current scroll event could be 20px after the max position).
24538 // if we just ignored the last event, we would be setting the scroll to 10px before the max position, when in
24539 // actual fact the user has exceeded the max scroll and thus scroll should be set to the max.
24540 if (touchOnly && !Object(_utils_browser__WEBPACK_IMPORTED_MODULE_5__["isIOSUserAgent"])()) {
24541 return false;
24542 }
24543 if (direction === 'vertical') {
24544 var clientHeight = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["getInnerHeight"])(this.eBodyViewport);
24545 var scrollHeight = this.eBodyViewport.scrollHeight;
24546 if (scrollTo < 0 || (scrollTo + clientHeight > scrollHeight)) {
24547 return true;
24548 }
24549 }
24550 if (direction === 'horizontal') {
24551 var clientWidth = this.centerRowContainerCtrl.getCenterWidth();
24552 var scrollWidth = this.centerRowContainerCtrl.getViewportElement().scrollWidth;
24553 if (this.enableRtl && Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["isRtlNegativeScroll"])()) {
24554 if (scrollTo > 0) {
24555 return true;
24556 }
24557 }
24558 else if (scrollTo < 0) {
24559 return true;
24560 }
24561 if (Math.abs(scrollTo) + clientWidth > scrollWidth) {
24562 return true;
24563 }
24564 }
24565 return false;
24566 };
24567 GridBodyScrollFeature.prototype.redrawRowsAfterScroll = function () {
24568 this.fireScrollEvent('vertical');
24569 };
24570 GridBodyScrollFeature.prototype.onHorizontalViewportChanged = function () {
24571 this.centerRowContainerCtrl.onHorizontalViewportChanged();
24572 };
24573 // this is to cater for AG-3274, where grid is removed from the dom and then inserted back in again.
24574 // (which happens with some implementations of tabbing). this can result in horizontal scroll getting
24575 // reset back to the left, however no scroll event is fired. so we need to get header to also scroll
24576 // back to the left to be kept in sync.
24577 // adding and removing the grid from the DOM both resets the scroll position and
24578 // triggers a resize event, so notify listeners if the scroll position has changed
24579 GridBodyScrollFeature.prototype.checkScrollLeft = function () {
24580 if (this.scrollLeft !== this.centerRowContainerCtrl.getCenterViewportScrollLeft()) {
24581 this.onBodyHorizontalScroll(this.centerRowContainerCtrl.getViewportElement());
24582 }
24583 };
24584 GridBodyScrollFeature.prototype.executeAnimationFrameScroll = function () {
24585 var frameNeeded = this.scrollTop != this.nextScrollTop;
24586 if (frameNeeded) {
24587 this.scrollTop = this.nextScrollTop;
24588 this.redrawRowsAfterScroll();
24589 }
24590 return frameNeeded;
24591 };
24592 // called by scrollHorizontally method and alignedGridsService
24593 GridBodyScrollFeature.prototype.setHorizontalScrollPosition = function (hScrollPosition) {
24594 var minScrollLeft = 0;
24595 var maxScrollLeft = this.centerRowContainerCtrl.getViewportElement().scrollWidth - this.centerRowContainerCtrl.getCenterWidth();
24596 if (this.shouldBlockScrollUpdate('horizontal', hScrollPosition)) {
24597 if (this.enableRtl && Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["isRtlNegativeScroll"])()) {
24598 hScrollPosition = hScrollPosition > 0 ? 0 : maxScrollLeft;
24599 }
24600 else {
24601 hScrollPosition = Math.min(Math.max(hScrollPosition, minScrollLeft), maxScrollLeft);
24602 }
24603 }
24604 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setScrollLeft"])(this.centerRowContainerCtrl.getViewportElement(), Math.abs(hScrollPosition), this.enableRtl);
24605 // we need to manually do the event handling (rather than wait for the event)
24606 // for the alignedGridsService, as if we don't, the aligned grid service gets
24607 // notified async, and then it's 'consuming' flag doesn't get used right, and
24608 // we can end up with an infinite loop
24609 this.doHorizontalScroll(hScrollPosition);
24610 };
24611 GridBodyScrollFeature.prototype.setVerticalScrollPosition = function (vScrollPosition) {
24612 this.eBodyViewport.scrollTop = vScrollPosition;
24613 };
24614 GridBodyScrollFeature.prototype.getVScrollPosition = function () {
24615 var result = {
24616 top: this.eBodyViewport.scrollTop,
24617 bottom: this.eBodyViewport.scrollTop + this.eBodyViewport.offsetHeight
24618 };
24619 return result;
24620 };
24621 GridBodyScrollFeature.prototype.getHScrollPosition = function () {
24622 return this.centerRowContainerCtrl.getHScrollPosition();
24623 };
24624 GridBodyScrollFeature.prototype.isHorizontalScrollShowing = function () {
24625 return this.centerRowContainerCtrl.isHorizontalScrollShowing();
24626 };
24627 // called by the headerRootComp and moveColumnController
24628 GridBodyScrollFeature.prototype.scrollHorizontally = function (pixels) {
24629 var oldScrollPosition = this.centerRowContainerCtrl.getViewportElement().scrollLeft;
24630 this.setHorizontalScrollPosition(oldScrollPosition + pixels);
24631 return this.centerRowContainerCtrl.getViewportElement().scrollLeft - oldScrollPosition;
24632 };
24633 // gets called by rowRenderer when new data loaded, as it will want to scroll to the top
24634 GridBodyScrollFeature.prototype.scrollToTop = function () {
24635 this.eBodyViewport.scrollTop = 0;
24636 };
24637 // Valid values for position are bottom, middle and top
24638 GridBodyScrollFeature.prototype.ensureNodeVisible = function (comparator, position) {
24639 if (position === void 0) { position = null; }
24640 // look for the node index we want to display
24641 var rowCount = this.rowModel.getRowCount();
24642 var comparatorIsAFunction = typeof comparator === 'function';
24643 var indexToSelect = -1;
24644 // go through all the nodes, find the one we want to show
24645 for (var i = 0; i < rowCount; i++) {
24646 var node = this.rowModel.getRow(i);
24647 if (comparatorIsAFunction) {
24648 if (comparator(node)) {
24649 indexToSelect = i;
24650 break;
24651 }
24652 }
24653 else {
24654 // check object equality against node and data
24655 if (comparator === node || comparator === node.data) {
24656 indexToSelect = i;
24657 break;
24658 }
24659 }
24660 }
24661 if (indexToSelect >= 0) {
24662 this.ensureIndexVisible(indexToSelect, position);
24663 }
24664 };
24665 // Valid values for position are bottom, middle and top
24666 // position should be {'top','middle','bottom', or undefined/null}.
24667 // if undefined/null, then the grid will to the minimal amount of scrolling,
24668 // eg if grid needs to scroll up, it scrolls until row is on top,
24669 // if grid needs to scroll down, it scrolls until row is on bottom,
24670 // if row is already in view, grid does not scroll
24671 GridBodyScrollFeature.prototype.ensureIndexVisible = function (index, position) {
24672 // if for print or auto height, everything is always visible
24673 if (this.gridOptionsWrapper.getDomLayout() === _constants_constants__WEBPACK_IMPORTED_MODULE_6__["Constants"].DOM_LAYOUT_PRINT) {
24674 return;
24675 }
24676 var rowCount = this.paginationProxy.getRowCount();
24677 if (typeof index !== 'number' || index < 0 || index >= rowCount) {
24678 console.warn('invalid row index for ensureIndexVisible: ' + index);
24679 return;
24680 }
24681 var isPaging = this.gridOptionsWrapper.isPagination();
24682 var paginationPanelEnabled = isPaging && !this.gridOptionsWrapper.isSuppressPaginationPanel();
24683 if (!paginationPanelEnabled) {
24684 this.paginationProxy.goToPageWithIndex(index);
24685 }
24686 var rowNode = this.paginationProxy.getRow(index);
24687 var rowGotShiftedDuringOperation;
24688 do {
24689 var startingRowTop = rowNode.rowTop;
24690 var startingRowHeight = rowNode.rowHeight;
24691 var paginationOffset = this.paginationProxy.getPixelOffset();
24692 var rowTopPixel = rowNode.rowTop - paginationOffset;
24693 var rowBottomPixel = rowTopPixel + rowNode.rowHeight;
24694 var scrollPosition = this.getVScrollPosition();
24695 var heightOffset = this.heightScaler.getDivStretchOffset();
24696 var vScrollTop = scrollPosition.top + heightOffset;
24697 var vScrollBottom = scrollPosition.bottom + heightOffset;
24698 var viewportHeight = vScrollBottom - vScrollTop;
24699 // work out the pixels for top, middle and bottom up front,
24700 // make the if/else below easier to read
24701 var pxTop = this.heightScaler.getScrollPositionForPixel(rowTopPixel);
24702 var pxBottom = this.heightScaler.getScrollPositionForPixel(rowBottomPixel - viewportHeight);
24703 // make sure if middle, the row is not outside the top of the grid
24704 var pxMiddle = Math.min((pxTop + pxBottom) / 2, rowTopPixel);
24705 var rowBelowViewport = vScrollTop > rowTopPixel;
24706 var rowAboveViewport = vScrollBottom < rowBottomPixel;
24707 var newScrollPosition = null;
24708 if (position === 'top') {
24709 newScrollPosition = pxTop;
24710 }
24711 else if (position === 'bottom') {
24712 newScrollPosition = pxBottom;
24713 }
24714 else if (position === 'middle') {
24715 newScrollPosition = pxMiddle;
24716 }
24717 else if (rowBelowViewport) {
24718 // if row is before, scroll up with row at top
24719 newScrollPosition = pxTop;
24720 }
24721 else if (rowAboveViewport) {
24722 // if row is below, scroll down with row at bottom
24723 newScrollPosition = pxBottom;
24724 }
24725 if (newScrollPosition !== null) {
24726 this.eBodyViewport.scrollTop = newScrollPosition;
24727 this.rowRenderer.redrawAfterScroll();
24728 }
24729 // the row can get shifted if during the rendering (during rowRenderer.redrawAfterScroll()),
24730 // the height of a row changes due to lazy calculation of row heights when using
24731 // colDef.autoHeight or gridOptions.getRowHeight.
24732 // if row was shifted, then the position we scrolled to is incorrect.
24733 rowGotShiftedDuringOperation = (startingRowTop !== rowNode.rowTop)
24734 || (startingRowHeight !== rowNode.rowHeight);
24735 } while (rowGotShiftedDuringOperation);
24736 // so when we return back to user, the cells have rendered
24737 this.animationFrameService.flushAllFrames();
24738 };
24739 GridBodyScrollFeature.prototype.ensureColumnVisible = function (key, position) {
24740 if (position === void 0) { position = 'auto'; }
24741 var column = this.columnModel.getGridColumn(key);
24742 if (!column) {
24743 return;
24744 }
24745 // calling ensureColumnVisible on a pinned column doesn't make sense
24746 if (column.isPinned()) {
24747 return;
24748 }
24749 // defensive
24750 if (!this.columnModel.isColumnDisplayed(column)) {
24751 return;
24752 }
24753 var newHorizontalScroll = this.getPositionedHorizontalScroll(column, position);
24754 if (newHorizontalScroll !== null) {
24755 this.centerRowContainerCtrl.setCenterViewportScrollLeft(newHorizontalScroll);
24756 }
24757 // this will happen anyway, as the move will cause a 'scroll' event on the body, however
24758 // it is possible that the ensureColumnVisible method is called from within AG Grid and
24759 // the caller will need to have the columns rendered to continue, which will be before
24760 // the event has been worked on (which is the case for cell navigation).
24761 this.centerRowContainerCtrl.onHorizontalViewportChanged();
24762 // so when we return back to user, the cells have rendered
24763 this.animationFrameService.flushAllFrames();
24764 };
24765 GridBodyScrollFeature.prototype.getPositionedHorizontalScroll = function (column, position) {
24766 var _a = this.isColumnOutsideViewport(column), columnBeforeStart = _a.columnBeforeStart, columnAfterEnd = _a.columnAfterEnd;
24767 var viewportTooSmallForColumn = this.centerRowContainerCtrl.getCenterWidth() < column.getActualWidth();
24768 var viewportWidth = this.centerRowContainerCtrl.getCenterWidth();
24769 var isRtl = this.enableRtl;
24770 var alignColToStart = (isRtl ? columnBeforeStart : columnAfterEnd) || viewportTooSmallForColumn;
24771 var alignColToEnd = isRtl ? columnAfterEnd : columnBeforeStart;
24772 if (position !== 'auto') {
24773 alignColToStart = position === 'start';
24774 alignColToEnd = position === 'end';
24775 }
24776 var isMiddle = position === 'middle';
24777 if (alignColToStart || alignColToEnd || isMiddle) {
24778 var _b = this.getColumnBounds(column), colLeft = _b.colLeft, colMiddle = _b.colMiddle, colRight = _b.colRight;
24779 if (isMiddle) {
24780 return colMiddle - viewportWidth / 2;
24781 }
24782 if (alignColToStart) {
24783 return isRtl ? colRight : colLeft;
24784 }
24785 return isRtl ? (colLeft - viewportWidth) : (colRight - viewportWidth);
24786 }
24787 return null;
24788 };
24789 GridBodyScrollFeature.prototype.isColumnOutsideViewport = function (column) {
24790 var _a = this.getViewportBounds(), viewportStart = _a.start, viewportEnd = _a.end;
24791 var _b = this.getColumnBounds(column), colLeft = _b.colLeft, colRight = _b.colRight;
24792 var isRtl = this.enableRtl;
24793 var columnBeforeStart = isRtl ? (viewportStart > colRight) : (viewportEnd < colRight);
24794 var columnAfterEnd = isRtl ? (viewportEnd < colLeft) : (viewportStart > colLeft);
24795 return { columnBeforeStart: columnBeforeStart, columnAfterEnd: columnAfterEnd };
24796 };
24797 GridBodyScrollFeature.prototype.getColumnBounds = function (column) {
24798 var isRtl = this.enableRtl;
24799 var bodyWidth = this.columnModel.getBodyContainerWidth();
24800 var colWidth = column.getActualWidth();
24801 var colLeft = column.getLeft();
24802 var multiplier = isRtl ? -1 : 1;
24803 var colLeftPixel = isRtl ? (bodyWidth - colLeft) : colLeft;
24804 var colRightPixel = colLeftPixel + colWidth * multiplier;
24805 var colMidPixel = colLeftPixel + colWidth / 2 * multiplier;
24806 return { colLeft: colLeftPixel, colMiddle: colMidPixel, colRight: colRightPixel };
24807 };
24808 GridBodyScrollFeature.prototype.getViewportBounds = function () {
24809 var viewportWidth = this.centerRowContainerCtrl.getCenterWidth();
24810 var scrollPosition = this.centerRowContainerCtrl.getCenterViewportScrollLeft();
24811 var viewportStartPixel = scrollPosition;
24812 var viewportEndPixel = viewportWidth + scrollPosition;
24813 return { start: viewportStartPixel, end: viewportEndPixel, width: viewportWidth };
24814 };
24815 __decorate([
24816 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
24817 ], GridBodyScrollFeature.prototype, "ctrlsService", void 0);
24818 __decorate([
24819 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('animationFrameService')
24820 ], GridBodyScrollFeature.prototype, "animationFrameService", void 0);
24821 __decorate([
24822 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
24823 ], GridBodyScrollFeature.prototype, "columnApi", void 0);
24824 __decorate([
24825 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
24826 ], GridBodyScrollFeature.prototype, "gridApi", void 0);
24827 __decorate([
24828 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('paginationProxy')
24829 ], GridBodyScrollFeature.prototype, "paginationProxy", void 0);
24830 __decorate([
24831 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowModel')
24832 ], GridBodyScrollFeature.prototype, "rowModel", void 0);
24833 __decorate([
24834 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowContainerHeightService')
24835 ], GridBodyScrollFeature.prototype, "heightScaler", void 0);
24836 __decorate([
24837 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowRenderer')
24838 ], GridBodyScrollFeature.prototype, "rowRenderer", void 0);
24839 __decorate([
24840 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
24841 ], GridBodyScrollFeature.prototype, "columnModel", void 0);
24842 __decorate([
24843 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
24844 ], GridBodyScrollFeature.prototype, "postConstruct", null);
24845 return GridBodyScrollFeature;
24846}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
24847
24848
24849
24850
24851
24852/***/ }),
24853/* 116 */
24854/***/ (function(module, __webpack_exports__, __webpack_require__) {
24855
24856"use strict";
24857__webpack_require__.r(__webpack_exports__);
24858/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowDragFeature", function() { return RowDragFeature; });
24859/* harmony import */ var _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(97);
24860/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
24861/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(24);
24862/* harmony import */ var _entities_rowNode__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(94);
24863/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(18);
24864/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(20);
24865/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7);
24866/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(14);
24867/* harmony import */ var _autoScrollService__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(117);
24868/**
24869 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
24870 * @version v27.3.0
24871 * @link https://www.ag-grid.com/
24872 * @license MIT
24873 */
24874var __extends = (undefined && undefined.__extends) || (function () {
24875 var extendStatics = function (d, b) {
24876 extendStatics = Object.setPrototypeOf ||
24877 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
24878 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
24879 return extendStatics(d, b);
24880 };
24881 return function (d, b) {
24882 extendStatics(d, b);
24883 function __() { this.constructor = d; }
24884 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
24885 };
24886})();
24887var __assign = (undefined && undefined.__assign) || function () {
24888 __assign = Object.assign || function(t) {
24889 for (var s, i = 1, n = arguments.length; i < n; i++) {
24890 s = arguments[i];
24891 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
24892 t[p] = s[p];
24893 }
24894 return t;
24895 };
24896 return __assign.apply(this, arguments);
24897};
24898var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
24899 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
24900 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
24901 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
24902 return c > 3 && r && Object.defineProperty(target, key, r), r;
24903};
24904var __read = (undefined && undefined.__read) || function (o, n) {
24905 var m = typeof Symbol === "function" && o[Symbol.iterator];
24906 if (!m) return o;
24907 var i = m.call(o), r, ar = [], e;
24908 try {
24909 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
24910 }
24911 catch (error) { e = { error: error }; }
24912 finally {
24913 try {
24914 if (r && !r.done && (m = i["return"])) m.call(i);
24915 }
24916 finally { if (e) throw e.error; }
24917 }
24918 return ar;
24919};
24920var __spread = (undefined && undefined.__spread) || function () {
24921 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
24922 return ar;
24923};
24924
24925
24926
24927
24928
24929
24930
24931
24932
24933var RowDragFeature = /** @class */ (function (_super) {
24934 __extends(RowDragFeature, _super);
24935 function RowDragFeature(eContainer) {
24936 var _this = _super.call(this) || this;
24937 _this.isMultiRowDrag = false;
24938 _this.isGridSorted = false;
24939 _this.isGridFiltered = false;
24940 _this.isRowGroupActive = false;
24941 _this.eContainer = eContainer;
24942 return _this;
24943 }
24944 RowDragFeature.prototype.postConstruct = function () {
24945 var _this = this;
24946 if (this.gridOptionsWrapper.isRowModelDefault()) {
24947 this.clientSideRowModel = this.rowModel;
24948 }
24949 var refreshStatus = function () {
24950 _this.onSortChanged();
24951 _this.onFilterChanged();
24952 _this.onRowGroupChanged();
24953 };
24954 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_SORT_CHANGED, this.onSortChanged.bind(this));
24955 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));
24956 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_ROW_GROUP_CHANGED, this.onRowGroupChanged.bind(this));
24957 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_MODEL_UPDATED, function () {
24958 refreshStatus();
24959 });
24960 refreshStatus();
24961 this.ctrlsService.whenReady(function () {
24962 var gridBodyCon = _this.ctrlsService.getGridBodyCtrl();
24963 _this.autoScrollService = new _autoScrollService__WEBPACK_IMPORTED_MODULE_8__["AutoScrollService"]({
24964 scrollContainer: gridBodyCon.getBodyViewportElement(),
24965 scrollAxis: 'y',
24966 getVerticalPosition: function () { return gridBodyCon.getScrollFeature().getVScrollPosition().top; },
24967 setVerticalPosition: function (position) { return gridBodyCon.getScrollFeature().setVerticalScrollPosition(position); },
24968 onScrollCallback: function () { _this.onDragging(_this.lastDraggingEvent); }
24969 });
24970 });
24971 };
24972 RowDragFeature.prototype.onSortChanged = function () {
24973 this.isGridSorted = this.sortController.isSortActive();
24974 };
24975 RowDragFeature.prototype.onFilterChanged = function () {
24976 this.isGridFiltered = this.filterManager.isAnyFilterPresent();
24977 };
24978 RowDragFeature.prototype.onRowGroupChanged = function () {
24979 var rowGroups = this.columnModel.getRowGroupColumns();
24980 this.isRowGroupActive = !Object(_utils_generic__WEBPACK_IMPORTED_MODULE_6__["missingOrEmpty"])(rowGroups);
24981 };
24982 RowDragFeature.prototype.getContainer = function () {
24983 return this.eContainer;
24984 };
24985 RowDragFeature.prototype.isInterestedIn = function (type) {
24986 return type === _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__["DragSourceType"].RowDrag;
24987 };
24988 RowDragFeature.prototype.getIconName = function () {
24989 var managedDrag = this.gridOptionsWrapper.isRowDragManaged();
24990 if (managedDrag && this.shouldPreventRowMove()) {
24991 return _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__["DragAndDropService"].ICON_NOT_ALLOWED;
24992 }
24993 return _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__["DragAndDropService"].ICON_MOVE;
24994 };
24995 RowDragFeature.prototype.shouldPreventRowMove = function () {
24996 return this.isGridSorted || this.isGridFiltered || this.isRowGroupActive;
24997 };
24998 RowDragFeature.prototype.getRowNodes = function (draggingEvent) {
24999 var _this = this;
25000 if (!this.isFromThisGrid(draggingEvent)) {
25001 return draggingEvent.dragItem.rowNodes || [];
25002 }
25003 var isRowDragMultiRow = this.gridOptionsWrapper.isRowDragMultiRow();
25004 var selectedNodes = __spread(this.selectionService.getSelectedNodes()).sort(function (a, b) { return _this.getRowIndexNumber(a) - _this.getRowIndexNumber(b); });
25005 var currentNode = draggingEvent.dragItem.rowNode;
25006 if (isRowDragMultiRow && selectedNodes.indexOf(currentNode) !== -1) {
25007 this.isMultiRowDrag = true;
25008 return selectedNodes;
25009 }
25010 this.isMultiRowDrag = false;
25011 return [currentNode];
25012 };
25013 RowDragFeature.prototype.onDragEnter = function (draggingEvent) {
25014 // builds a lits of all rows being dragged before firing events
25015 draggingEvent.dragItem.rowNodes = this.getRowNodes(draggingEvent);
25016 // when entering, we fire the enter event, then in onEnterOrDragging,
25017 // we also fire the move event. so we get both events when entering.
25018 this.dispatchGridEvent(_eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_DRAG_ENTER, draggingEvent);
25019 this.getRowNodes(draggingEvent).forEach(function (rowNode) {
25020 rowNode.setDragging(true);
25021 });
25022 this.onEnterOrDragging(draggingEvent);
25023 };
25024 RowDragFeature.prototype.onDragging = function (draggingEvent) {
25025 this.onEnterOrDragging(draggingEvent);
25026 };
25027 RowDragFeature.prototype.isFromThisGrid = function (draggingEvent) {
25028 var dragSourceDomDataKey = draggingEvent.dragSource.dragSourceDomDataKey;
25029 return dragSourceDomDataKey === this.gridOptionsWrapper.getDomDataKey();
25030 };
25031 RowDragFeature.prototype.isDropZoneWithinThisGrid = function (draggingEvent) {
25032 var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
25033 var gridGui = gridBodyCon.getGui();
25034 var dropZoneTarget = draggingEvent.dropZoneTarget;
25035 return !gridGui.contains(dropZoneTarget);
25036 };
25037 RowDragFeature.prototype.onEnterOrDragging = function (draggingEvent) {
25038 // this event is fired for enter and move
25039 this.dispatchGridEvent(_eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_DRAG_MOVE, draggingEvent);
25040 this.lastDraggingEvent = draggingEvent;
25041 var pixel = this.mouseEventService.getNormalisedPosition(draggingEvent).y;
25042 var managedDrag = this.gridOptionsWrapper.isRowDragManaged();
25043 if (managedDrag) {
25044 this.doManagedDrag(draggingEvent, pixel);
25045 }
25046 this.autoScrollService.check(draggingEvent.event);
25047 };
25048 RowDragFeature.prototype.doManagedDrag = function (draggingEvent, pixel) {
25049 var isFromThisGrid = this.isFromThisGrid(draggingEvent);
25050 var managedDrag = this.gridOptionsWrapper.isRowDragManaged();
25051 var rowNodes = draggingEvent.dragItem.rowNodes;
25052 if (managedDrag && this.shouldPreventRowMove()) {
25053 return;
25054 }
25055 if (this.gridOptionsWrapper.isSuppressMoveWhenRowDragging() || !isFromThisGrid) {
25056 if (!this.isDropZoneWithinThisGrid(draggingEvent)) {
25057 this.clientSideRowModel.highlightRowAtPixel(rowNodes[0], pixel);
25058 }
25059 }
25060 else {
25061 this.moveRows(rowNodes, pixel);
25062 }
25063 };
25064 RowDragFeature.prototype.getRowIndexNumber = function (rowNode) {
25065 return parseInt(Object(_utils_array__WEBPACK_IMPORTED_MODULE_4__["last"])(rowNode.getRowIndexString().split('-')), 10);
25066 };
25067 RowDragFeature.prototype.moveRowAndClearHighlight = function (draggingEvent) {
25068 var _this = this;
25069 var lastHighlightedRowNode = this.clientSideRowModel.getLastHighlightedRowNode();
25070 var isBelow = lastHighlightedRowNode && lastHighlightedRowNode.highlighted === _entities_rowNode__WEBPACK_IMPORTED_MODULE_3__["RowHighlightPosition"].Below;
25071 var pixel = this.mouseEventService.getNormalisedPosition(draggingEvent).y;
25072 var rowNodes = draggingEvent.dragItem.rowNodes;
25073 var increment = isBelow ? 1 : 0;
25074 if (this.isFromThisGrid(draggingEvent)) {
25075 rowNodes.forEach(function (rowNode) {
25076 if (rowNode.rowTop < pixel) {
25077 increment -= 1;
25078 }
25079 });
25080 this.moveRows(rowNodes, pixel, increment);
25081 }
25082 else {
25083 var getRowIdFunc_1 = this.gridOptionsWrapper.getRowIdFunc();
25084 var addIndex = this.clientSideRowModel.getRowIndexAtPixel(pixel) + 1;
25085 if (this.clientSideRowModel.getHighlightPosition(pixel) === _entities_rowNode__WEBPACK_IMPORTED_MODULE_3__["RowHighlightPosition"].Above) {
25086 addIndex--;
25087 }
25088 this.clientSideRowModel.updateRowData({
25089 add: rowNodes
25090 .map(function (node) { return node.data; })
25091 .filter(function (data) { return !_this.clientSideRowModel.getRowNode(getRowIdFunc_1 ? getRowIdFunc_1({ data: data, level: 0 }) : data.id); }),
25092 addIndex: addIndex
25093 });
25094 }
25095 this.clearRowHighlight();
25096 };
25097 RowDragFeature.prototype.clearRowHighlight = function () {
25098 this.clientSideRowModel.highlightRowAtPixel(null);
25099 };
25100 RowDragFeature.prototype.moveRows = function (rowNodes, pixel, increment) {
25101 if (increment === void 0) { increment = 0; }
25102 var rowWasMoved = this.clientSideRowModel.ensureRowsAtPixel(rowNodes, pixel, increment);
25103 if (rowWasMoved) {
25104 this.focusService.clearFocusedCell();
25105 if (this.rangeService) {
25106 this.rangeService.removeAllCellRanges();
25107 }
25108 }
25109 };
25110 RowDragFeature.prototype.addRowDropZone = function (params) {
25111 var _this = this;
25112 if (!params.getContainer()) {
25113 Object(_utils_function__WEBPACK_IMPORTED_MODULE_7__["doOnce"])(function () { return console.warn('AG Grid: addRowDropZone - A container target needs to be provided'); }, 'add-drop-zone-empty-target');
25114 return;
25115 }
25116 if (this.dragAndDropService.findExternalZone(params)) {
25117 console.warn('AG Grid: addRowDropZone - target already exists in the list of DropZones. Use `removeRowDropZone` before adding it again.');
25118 return;
25119 }
25120 var processedParams = {
25121 getContainer: params.getContainer
25122 };
25123 if (params.fromGrid) {
25124 params.fromGrid = undefined;
25125 processedParams = params;
25126 }
25127 else {
25128 if (params.onDragEnter) {
25129 processedParams.onDragEnter = function (e) {
25130 params.onDragEnter(_this.draggingToRowDragEvent(_eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_DRAG_ENTER, e));
25131 };
25132 }
25133 if (params.onDragLeave) {
25134 processedParams.onDragLeave = function (e) {
25135 params.onDragLeave(_this.draggingToRowDragEvent(_eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_DRAG_LEAVE, e));
25136 };
25137 }
25138 if (params.onDragging) {
25139 processedParams.onDragging = function (e) {
25140 params.onDragging(_this.draggingToRowDragEvent(_eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_DRAG_MOVE, e));
25141 };
25142 }
25143 if (params.onDragStop) {
25144 processedParams.onDragStop = function (e) {
25145 params.onDragStop(_this.draggingToRowDragEvent(_eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_DRAG_END, e));
25146 };
25147 }
25148 }
25149 this.dragAndDropService.addDropTarget(__assign({ isInterestedIn: function (type) { return type === _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__["DragSourceType"].RowDrag; }, getIconName: function () { return _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__["DragAndDropService"].ICON_MOVE; }, external: true }, processedParams));
25150 };
25151 RowDragFeature.prototype.getRowDropZone = function (events) {
25152 var _this = this;
25153 var getContainer = this.getContainer.bind(this);
25154 var onDragEnter = this.onDragEnter.bind(this);
25155 var onDragLeave = this.onDragLeave.bind(this);
25156 var onDragging = this.onDragging.bind(this);
25157 var onDragStop = this.onDragStop.bind(this);
25158 if (!events) {
25159 return { getContainer: getContainer, onDragEnter: onDragEnter, onDragLeave: onDragLeave, onDragging: onDragging, onDragStop: onDragStop, /* @private */ fromGrid: true };
25160 }
25161 return {
25162 getContainer: getContainer,
25163 onDragEnter: events.onDragEnter
25164 ? (function (e) {
25165 onDragEnter(e);
25166 events.onDragEnter(_this.draggingToRowDragEvent(_eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_DRAG_ENTER, e));
25167 })
25168 : onDragEnter,
25169 onDragLeave: events.onDragLeave
25170 ? (function (e) {
25171 onDragLeave(e);
25172 events.onDragLeave(_this.draggingToRowDragEvent(_eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_DRAG_LEAVE, e));
25173 })
25174 : onDragLeave,
25175 onDragging: events.onDragging
25176 ? (function (e) {
25177 onDragging(e);
25178 events.onDragging(_this.draggingToRowDragEvent(_eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_DRAG_MOVE, e));
25179 })
25180 : onDragging,
25181 onDragStop: events.onDragStop
25182 ? (function (e) {
25183 onDragStop(e);
25184 events.onDragStop(_this.draggingToRowDragEvent(_eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_DRAG_END, e));
25185 })
25186 : onDragStop,
25187 fromGrid: true /* @private */
25188 };
25189 };
25190 RowDragFeature.prototype.draggingToRowDragEvent = function (type, draggingEvent) {
25191 var yNormalised = this.mouseEventService.getNormalisedPosition(draggingEvent).y;
25192 var mouseIsPastLastRow = yNormalised > this.paginationProxy.getCurrentPageHeight();
25193 var overIndex = -1;
25194 var overNode;
25195 if (!mouseIsPastLastRow) {
25196 overIndex = this.rowModel.getRowIndexAtPixel(yNormalised);
25197 overNode = this.rowModel.getRow(overIndex);
25198 }
25199 var vDirectionString;
25200 switch (draggingEvent.vDirection) {
25201 case _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__["VerticalDirection"].Down:
25202 vDirectionString = 'down';
25203 break;
25204 case _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__["VerticalDirection"].Up:
25205 vDirectionString = 'up';
25206 break;
25207 default:
25208 vDirectionString = null;
25209 break;
25210 }
25211 var event = {
25212 type: type,
25213 api: this.gridOptionsWrapper.getApi(),
25214 columnApi: this.gridOptionsWrapper.getColumnApi(),
25215 event: draggingEvent.event,
25216 node: draggingEvent.dragItem.rowNode,
25217 nodes: draggingEvent.dragItem.rowNodes,
25218 overIndex: overIndex,
25219 overNode: overNode,
25220 y: yNormalised,
25221 vDirection: vDirectionString
25222 };
25223 return event;
25224 };
25225 RowDragFeature.prototype.dispatchGridEvent = function (type, draggingEvent) {
25226 var event = this.draggingToRowDragEvent(type, draggingEvent);
25227 this.eventService.dispatchEvent(event);
25228 };
25229 RowDragFeature.prototype.onDragLeave = function (draggingEvent) {
25230 this.dispatchGridEvent(_eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_DRAG_LEAVE, draggingEvent);
25231 this.stopDragging(draggingEvent);
25232 if (this.gridOptionsWrapper.isRowDragManaged()) {
25233 this.clearRowHighlight();
25234 }
25235 if (this.isFromThisGrid(draggingEvent)) {
25236 this.isMultiRowDrag = false;
25237 }
25238 };
25239 RowDragFeature.prototype.onDragStop = function (draggingEvent) {
25240 this.dispatchGridEvent(_eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_DRAG_END, draggingEvent);
25241 this.stopDragging(draggingEvent);
25242 if (this.gridOptionsWrapper.isRowDragManaged() &&
25243 (this.gridOptionsWrapper.isSuppressMoveWhenRowDragging() || !this.isFromThisGrid(draggingEvent)) &&
25244 !this.isDropZoneWithinThisGrid(draggingEvent)) {
25245 this.moveRowAndClearHighlight(draggingEvent);
25246 }
25247 };
25248 RowDragFeature.prototype.stopDragging = function (draggingEvent) {
25249 this.autoScrollService.ensureCleared();
25250 this.getRowNodes(draggingEvent).forEach(function (rowNode) {
25251 rowNode.setDragging(false);
25252 });
25253 };
25254 __decorate([
25255 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('dragAndDropService')
25256 ], RowDragFeature.prototype, "dragAndDropService", void 0);
25257 __decorate([
25258 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('rowModel')
25259 ], RowDragFeature.prototype, "rowModel", void 0);
25260 __decorate([
25261 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('paginationProxy')
25262 ], RowDragFeature.prototype, "paginationProxy", void 0);
25263 __decorate([
25264 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
25265 ], RowDragFeature.prototype, "columnModel", void 0);
25266 __decorate([
25267 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('focusService')
25268 ], RowDragFeature.prototype, "focusService", void 0);
25269 __decorate([
25270 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('sortController')
25271 ], RowDragFeature.prototype, "sortController", void 0);
25272 __decorate([
25273 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('filterManager')
25274 ], RowDragFeature.prototype, "filterManager", void 0);
25275 __decorate([
25276 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('selectionService')
25277 ], RowDragFeature.prototype, "selectionService", void 0);
25278 __decorate([
25279 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('mouseEventService')
25280 ], RowDragFeature.prototype, "mouseEventService", void 0);
25281 __decorate([
25282 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('ctrlsService')
25283 ], RowDragFeature.prototype, "ctrlsService", void 0);
25284 __decorate([
25285 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('rangeService')
25286 ], RowDragFeature.prototype, "rangeService", void 0);
25287 __decorate([
25288 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnApi')
25289 ], RowDragFeature.prototype, "columnApi", void 0);
25290 __decorate([
25291 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridApi')
25292 ], RowDragFeature.prototype, "gridApi", void 0);
25293 __decorate([
25294 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
25295 ], RowDragFeature.prototype, "postConstruct", null);
25296 return RowDragFeature;
25297}(_context_beanStub__WEBPACK_IMPORTED_MODULE_5__["BeanStub"]));
25298
25299
25300
25301
25302
25303/***/ }),
25304/* 117 */
25305/***/ (function(module, __webpack_exports__, __webpack_require__) {
25306
25307"use strict";
25308__webpack_require__.r(__webpack_exports__);
25309/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AutoScrollService", function() { return AutoScrollService; });
25310/**
25311 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
25312 * @version v27.3.0
25313 * @link https://www.ag-grid.com/
25314 * @license MIT
25315 */
25316var AutoScrollService = /** @class */ (function () {
25317 function AutoScrollService(params) {
25318 this.tickingInterval = null;
25319 this.onScrollCallback = null;
25320 this.scrollContainer = params.scrollContainer;
25321 this.scrollHorizontally = params.scrollAxis.indexOf('x') !== -1;
25322 this.scrollVertically = params.scrollAxis.indexOf('y') !== -1;
25323 this.scrollByTick = params.scrollByTick != null ? params.scrollByTick : 20;
25324 if (params.onScrollCallback) {
25325 this.onScrollCallback = params.onScrollCallback;
25326 }
25327 if (this.scrollVertically) {
25328 this.getVerticalPosition = params.getVerticalPosition;
25329 this.setVerticalPosition = params.setVerticalPosition;
25330 }
25331 if (this.scrollHorizontally) {
25332 this.getHorizontalPosition = params.getHorizontalPosition;
25333 this.setHorizontalPosition = params.setHorizontalPosition;
25334 }
25335 this.shouldSkipVerticalScroll = params.shouldSkipVerticalScroll || (function () { return false; });
25336 this.shouldSkipHorizontalScroll = params.shouldSkipHorizontalScroll || (function () { return false; });
25337 }
25338 AutoScrollService.prototype.check = function (mouseEvent, forceSkipVerticalScroll) {
25339 if (forceSkipVerticalScroll === void 0) { forceSkipVerticalScroll = false; }
25340 var skipVerticalScroll = forceSkipVerticalScroll || this.shouldSkipVerticalScroll();
25341 if (skipVerticalScroll && this.shouldSkipHorizontalScroll()) {
25342 return;
25343 }
25344 var rect = this.scrollContainer.getBoundingClientRect();
25345 var scrollTick = this.scrollByTick;
25346 this.tickLeft = mouseEvent.clientX < (rect.left + scrollTick);
25347 this.tickRight = mouseEvent.clientX > (rect.right - scrollTick);
25348 this.tickUp = mouseEvent.clientY < (rect.top + scrollTick) && !skipVerticalScroll;
25349 this.tickDown = mouseEvent.clientY > (rect.bottom - scrollTick) && !skipVerticalScroll;
25350 if (this.tickLeft || this.tickRight || this.tickUp || this.tickDown) {
25351 this.ensureTickingStarted();
25352 }
25353 else {
25354 this.ensureCleared();
25355 }
25356 };
25357 AutoScrollService.prototype.ensureTickingStarted = function () {
25358 if (this.tickingInterval === null) {
25359 this.tickingInterval = window.setInterval(this.doTick.bind(this), 100);
25360 this.tickCount = 0;
25361 }
25362 };
25363 AutoScrollService.prototype.doTick = function () {
25364 this.tickCount++;
25365 var tickAmount;
25366 tickAmount = this.tickCount > 20 ? 200 : (this.tickCount > 10 ? 80 : 40);
25367 if (this.scrollVertically) {
25368 var vScrollPosition = this.getVerticalPosition();
25369 if (this.tickUp) {
25370 this.setVerticalPosition(vScrollPosition - tickAmount);
25371 }
25372 if (this.tickDown) {
25373 this.setVerticalPosition(vScrollPosition + tickAmount);
25374 }
25375 }
25376 if (this.scrollHorizontally) {
25377 var hScrollPosition = this.getHorizontalPosition();
25378 if (this.tickLeft) {
25379 this.setHorizontalPosition(hScrollPosition - tickAmount);
25380 }
25381 if (this.tickRight) {
25382 this.setHorizontalPosition(hScrollPosition + tickAmount);
25383 }
25384 }
25385 if (this.onScrollCallback) {
25386 this.onScrollCallback();
25387 }
25388 };
25389 AutoScrollService.prototype.ensureCleared = function () {
25390 if (this.tickingInterval) {
25391 window.clearInterval(this.tickingInterval);
25392 this.tickingInterval = null;
25393 }
25394 };
25395 return AutoScrollService;
25396}());
25397
25398
25399
25400
25401
25402/***/ }),
25403/* 118 */
25404/***/ (function(module, __webpack_exports__, __webpack_require__) {
25405
25406"use strict";
25407__webpack_require__.r(__webpack_exports__);
25408/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowContainerName", function() { return RowContainerName; });
25409/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowContainerType", function() { return RowContainerType; });
25410/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getRowContainerTypeForName", function() { return getRowContainerTypeForName; });
25411/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowContainerCtrl", function() { return RowContainerCtrl; });
25412/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
25413/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
25414/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(24);
25415/* harmony import */ var _rowContainerEventsFeature__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(119);
25416/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(42);
25417/* harmony import */ var _viewportSizeFeature__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(131);
25418/* harmony import */ var _utils_map__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(27);
25419/* harmony import */ var _setPinnedLeftWidthFeature__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(132);
25420/* harmony import */ var _setPinnedRightWidthFeature__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(133);
25421/* harmony import */ var _setHeightFeature__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(134);
25422/* harmony import */ var _dragListenerFeature__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(135);
25423/* harmony import */ var _centerWidthFeature__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(136);
25424/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(15);
25425/* harmony import */ var _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(112);
25426/**
25427 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
25428 * @version v27.3.0
25429 * @link https://www.ag-grid.com/
25430 * @license MIT
25431 */
25432var __extends = (undefined && undefined.__extends) || (function () {
25433 var extendStatics = function (d, b) {
25434 extendStatics = Object.setPrototypeOf ||
25435 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
25436 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
25437 return extendStatics(d, b);
25438 };
25439 return function (d, b) {
25440 extendStatics(d, b);
25441 function __() { this.constructor = d; }
25442 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
25443 };
25444})();
25445var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
25446 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
25447 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
25448 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
25449 return c > 3 && r && Object.defineProperty(target, key, r), r;
25450};
25451var __read = (undefined && undefined.__read) || function (o, n) {
25452 var m = typeof Symbol === "function" && o[Symbol.iterator];
25453 if (!m) return o;
25454 var i = m.call(o), r, ar = [], e;
25455 try {
25456 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
25457 }
25458 catch (error) { e = { error: error }; }
25459 finally {
25460 try {
25461 if (r && !r.done && (m = i["return"])) m.call(i);
25462 }
25463 finally { if (e) throw e.error; }
25464 }
25465 return ar;
25466};
25467var __spread = (undefined && undefined.__spread) || function () {
25468 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
25469 return ar;
25470};
25471
25472
25473
25474
25475
25476
25477
25478
25479
25480
25481
25482
25483
25484
25485var RowContainerName;
25486(function (RowContainerName) {
25487 RowContainerName["LEFT"] = "left";
25488 RowContainerName["RIGHT"] = "right";
25489 RowContainerName["CENTER"] = "center";
25490 RowContainerName["FULL_WIDTH"] = "fullWidth";
25491 RowContainerName["TOP_LEFT"] = "topLeft";
25492 RowContainerName["TOP_RIGHT"] = "topRight";
25493 RowContainerName["TOP_CENTER"] = "topCenter";
25494 RowContainerName["TOP_FULL_WIDTH"] = "topFullWidth";
25495 RowContainerName["BOTTOM_LEFT"] = "bottomLeft";
25496 RowContainerName["BOTTOM_RIGHT"] = "bottomRight";
25497 RowContainerName["BOTTOM_CENTER"] = "bottomCenter";
25498 RowContainerName["BOTTOM_FULL_WIDTH"] = "bottomFullWidth";
25499})(RowContainerName || (RowContainerName = {}));
25500var RowContainerType;
25501(function (RowContainerType) {
25502 RowContainerType["LEFT"] = "left";
25503 RowContainerType["RIGHT"] = "right";
25504 RowContainerType["CENTER"] = "center";
25505 RowContainerType["FULL_WIDTH"] = "fullWidth";
25506})(RowContainerType || (RowContainerType = {}));
25507function getRowContainerTypeForName(name) {
25508 switch (name) {
25509 case RowContainerName.CENTER:
25510 case RowContainerName.TOP_CENTER:
25511 case RowContainerName.BOTTOM_CENTER:
25512 return RowContainerType.CENTER;
25513 case RowContainerName.LEFT:
25514 case RowContainerName.TOP_LEFT:
25515 case RowContainerName.BOTTOM_LEFT:
25516 return RowContainerType.LEFT;
25517 case RowContainerName.RIGHT:
25518 case RowContainerName.TOP_RIGHT:
25519 case RowContainerName.BOTTOM_RIGHT:
25520 return RowContainerType.RIGHT;
25521 case RowContainerName.FULL_WIDTH:
25522 case RowContainerName.TOP_FULL_WIDTH:
25523 case RowContainerName.BOTTOM_FULL_WIDTH:
25524 return RowContainerType.FULL_WIDTH;
25525 default:
25526 throw Error('Invalid Row Container Type');
25527 }
25528}
25529var ContainerCssClasses = Object(_utils_map__WEBPACK_IMPORTED_MODULE_6__["convertToMap"])([
25530 [RowContainerName.CENTER, 'ag-center-cols-container'],
25531 [RowContainerName.LEFT, 'ag-pinned-left-cols-container'],
25532 [RowContainerName.RIGHT, 'ag-pinned-right-cols-container'],
25533 [RowContainerName.FULL_WIDTH, 'ag-full-width-container'],
25534 [RowContainerName.TOP_CENTER, 'ag-floating-top-container'],
25535 [RowContainerName.TOP_LEFT, 'ag-pinned-left-floating-top'],
25536 [RowContainerName.TOP_RIGHT, 'ag-pinned-right-floating-top'],
25537 [RowContainerName.TOP_FULL_WIDTH, 'ag-floating-top-full-width-container'],
25538 [RowContainerName.BOTTOM_CENTER, 'ag-floating-bottom-container'],
25539 [RowContainerName.BOTTOM_LEFT, 'ag-pinned-left-floating-bottom'],
25540 [RowContainerName.BOTTOM_RIGHT, 'ag-pinned-right-floating-bottom'],
25541 [RowContainerName.BOTTOM_FULL_WIDTH, 'ag-floating-bottom-full-width-container'],
25542]);
25543var ViewportCssClasses = Object(_utils_map__WEBPACK_IMPORTED_MODULE_6__["convertToMap"])([
25544 [RowContainerName.CENTER, 'ag-center-cols-viewport'],
25545 [RowContainerName.TOP_CENTER, 'ag-floating-top-viewport'],
25546 [RowContainerName.BOTTOM_CENTER, 'ag-floating-bottom-viewport'],
25547]);
25548var WrapperCssClasses = Object(_utils_map__WEBPACK_IMPORTED_MODULE_6__["convertToMap"])([
25549 [RowContainerName.CENTER, 'ag-center-cols-clipper'],
25550]);
25551var RowContainerCtrl = /** @class */ (function (_super) {
25552 __extends(RowContainerCtrl, _super);
25553 function RowContainerCtrl(name) {
25554 var _this = _super.call(this) || this;
25555 _this.name = name;
25556 return _this;
25557 }
25558 RowContainerCtrl.getRowContainerCssClasses = function (name) {
25559 var containerClass = ContainerCssClasses.get(name);
25560 var viewportClass = ViewportCssClasses.get(name);
25561 var wrapperClass = WrapperCssClasses.get(name);
25562 return { container: containerClass, viewport: viewportClass, wrapper: wrapperClass };
25563 };
25564 RowContainerCtrl.getPinned = function (name) {
25565 switch (name) {
25566 case RowContainerName.BOTTOM_LEFT:
25567 case RowContainerName.TOP_LEFT:
25568 case RowContainerName.LEFT:
25569 return _constants_constants__WEBPACK_IMPORTED_MODULE_12__["Constants"].PINNED_LEFT;
25570 case RowContainerName.BOTTOM_RIGHT:
25571 case RowContainerName.TOP_RIGHT:
25572 case RowContainerName.RIGHT:
25573 return _constants_constants__WEBPACK_IMPORTED_MODULE_12__["Constants"].PINNED_RIGHT;
25574 default:
25575 return null;
25576 }
25577 };
25578 RowContainerCtrl.prototype.postConstruct = function () {
25579 var _this = this;
25580 this.enableRtl = this.gridOptionsWrapper.isEnableRtl();
25581 this.embedFullWidthRows = this.gridOptionsWrapper.isEmbedFullWidthRows();
25582 this.forContainers([RowContainerName.CENTER], function () { return _this.viewportSizeFeature = _this.createManagedBean(new _viewportSizeFeature__WEBPACK_IMPORTED_MODULE_5__["ViewportSizeFeature"](_this)); });
25583 };
25584 RowContainerCtrl.prototype.registerWithCtrlsService = function () {
25585 switch (this.name) {
25586 case RowContainerName.CENTER:
25587 this.ctrlsService.registerCenterRowContainerCtrl(this);
25588 break;
25589 case RowContainerName.LEFT:
25590 this.ctrlsService.registerLeftRowContainerCtrl(this);
25591 break;
25592 case RowContainerName.RIGHT:
25593 this.ctrlsService.registerRightRowContainerCtrl(this);
25594 break;
25595 case RowContainerName.TOP_CENTER:
25596 this.ctrlsService.registerTopCenterRowContainerCtrl(this);
25597 break;
25598 case RowContainerName.TOP_LEFT:
25599 this.ctrlsService.registerTopLeftRowContainerCon(this);
25600 break;
25601 case RowContainerName.TOP_RIGHT:
25602 this.ctrlsService.registerTopRightRowContainerCtrl(this);
25603 break;
25604 case RowContainerName.BOTTOM_CENTER:
25605 this.ctrlsService.registerBottomCenterRowContainerCtrl(this);
25606 break;
25607 case RowContainerName.BOTTOM_LEFT:
25608 this.ctrlsService.registerBottomLeftRowContainerCtrl(this);
25609 break;
25610 case RowContainerName.BOTTOM_RIGHT:
25611 this.ctrlsService.registerBottomRightRowContainerCtrl(this);
25612 break;
25613 }
25614 };
25615 RowContainerCtrl.prototype.forContainers = function (names, callback) {
25616 if (names.indexOf(this.name) >= 0) {
25617 callback();
25618 }
25619 };
25620 RowContainerCtrl.prototype.getContainerElement = function () {
25621 return this.eContainer;
25622 };
25623 RowContainerCtrl.prototype.getViewportSizeFeature = function () {
25624 return this.viewportSizeFeature;
25625 };
25626 RowContainerCtrl.prototype.setComp = function (view, eContainer, eViewport, eWrapper) {
25627 var _this = this;
25628 this.comp = view;
25629 this.eContainer = eContainer;
25630 this.eViewport = eViewport;
25631 this.eWrapper = eWrapper;
25632 this.createManagedBean(new _rowContainerEventsFeature__WEBPACK_IMPORTED_MODULE_3__["RowContainerEventsFeature"](this.eContainer));
25633 this.addPreventScrollWhileDragging();
25634 this.listenOnDomOrder();
25635 this.stopHScrollOnPinnedRows();
25636 var allTopNoFW = [RowContainerName.TOP_CENTER, RowContainerName.TOP_LEFT, RowContainerName.TOP_RIGHT];
25637 var allBottomNoFW = [RowContainerName.BOTTOM_CENTER, RowContainerName.BOTTOM_LEFT, RowContainerName.BOTTOM_RIGHT];
25638 var allMiddleNoFW = [RowContainerName.CENTER, RowContainerName.LEFT, RowContainerName.RIGHT];
25639 var allNoFW = __spread(allTopNoFW, allBottomNoFW, allMiddleNoFW);
25640 var allMiddle = [RowContainerName.CENTER, RowContainerName.LEFT, RowContainerName.RIGHT, RowContainerName.FULL_WIDTH];
25641 var allCenter = [RowContainerName.CENTER, RowContainerName.TOP_CENTER, RowContainerName.BOTTOM_CENTER];
25642 var allLeft = [RowContainerName.LEFT, RowContainerName.BOTTOM_LEFT, RowContainerName.TOP_LEFT];
25643 var allRight = [RowContainerName.RIGHT, RowContainerName.BOTTOM_RIGHT, RowContainerName.TOP_RIGHT];
25644 this.forContainers(allLeft, function () { return _this.createManagedBean(new _setPinnedLeftWidthFeature__WEBPACK_IMPORTED_MODULE_7__["SetPinnedLeftWidthFeature"](_this.eContainer)); });
25645 this.forContainers(allRight, function () { return _this.createManagedBean(new _setPinnedRightWidthFeature__WEBPACK_IMPORTED_MODULE_8__["SetPinnedRightWidthFeature"](_this.eContainer)); });
25646 this.forContainers(allMiddle, function () { return _this.createManagedBean(new _setHeightFeature__WEBPACK_IMPORTED_MODULE_9__["SetHeightFeature"](_this.eContainer, _this.eWrapper)); });
25647 this.forContainers(allNoFW, function () { return _this.createManagedBean(new _dragListenerFeature__WEBPACK_IMPORTED_MODULE_10__["DragListenerFeature"](_this.eContainer)); });
25648 this.forContainers(allCenter, function () { return _this.createManagedBean(new _centerWidthFeature__WEBPACK_IMPORTED_MODULE_11__["CenterWidthFeature"](function (width) { return _this.comp.setContainerWidth(width + "px"); })); });
25649 this.addListeners();
25650 this.registerWithCtrlsService();
25651 };
25652 RowContainerCtrl.prototype.addListeners = function () {
25653 var _this = this;
25654 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_SCROLL_VISIBILITY_CHANGED, function () { return _this.onScrollVisibilityChanged(); });
25655 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED, function () { return _this.onDisplayedColumnsChanged(); });
25656 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, function () { return _this.onDisplayedColumnsWidthChanged(); });
25657 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_DISPLAYED_ROWS_CHANGED, function () { return _this.onDisplayedRowsChanged(); });
25658 this.onScrollVisibilityChanged();
25659 this.onDisplayedColumnsChanged();
25660 this.onDisplayedColumnsWidthChanged();
25661 this.onDisplayedRowsChanged();
25662 };
25663 RowContainerCtrl.prototype.listenOnDomOrder = function () {
25664 var _this = this;
25665 var listener = function () { return _this.comp.setDomOrder(_this.gridOptionsWrapper.isEnsureDomOrder()); };
25666 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_13__["GridOptionsWrapper"].PROP_DOM_LAYOUT, listener);
25667 listener();
25668 };
25669 // when editing a pinned row, if the cell is half outside the scrollable area, the browser can
25670 // scroll the column into view. we do not want this, the pinned sections should never scroll.
25671 // so we listen to scrolls on these containers and reset the scroll if we find one.
25672 RowContainerCtrl.prototype.stopHScrollOnPinnedRows = function () {
25673 var _this = this;
25674 this.forContainers([RowContainerName.TOP_CENTER, RowContainerName.BOTTOM_CENTER], function () {
25675 var resetScrollLeft = function () { return _this.eViewport.scrollLeft = 0; };
25676 _this.addManagedListener(_this.eViewport, 'scroll', resetScrollLeft);
25677 });
25678 };
25679 RowContainerCtrl.prototype.onDisplayedColumnsChanged = function () {
25680 var _this = this;
25681 this.forContainers([RowContainerName.CENTER], function () { return _this.onHorizontalViewportChanged(); });
25682 };
25683 RowContainerCtrl.prototype.onDisplayedColumnsWidthChanged = function () {
25684 var _this = this;
25685 this.forContainers([RowContainerName.CENTER], function () { return _this.onHorizontalViewportChanged(); });
25686 };
25687 RowContainerCtrl.prototype.onScrollVisibilityChanged = function () {
25688 if (this.name !== RowContainerName.CENTER) {
25689 return;
25690 }
25691 var visible = this.scrollVisibleService.isHorizontalScrollShowing();
25692 var scrollbarWidth = visible ? (this.gridOptionsWrapper.getScrollbarWidth() || 0) : 0;
25693 var height = scrollbarWidth == 0 ? '100%' : "calc(100% + " + scrollbarWidth + "px)";
25694 this.comp.setViewportHeight(height);
25695 };
25696 // this methods prevents the grid views from being scrolled while the dragService is being used
25697 // eg. the view should not scroll up and down while dragging rows using the rowDragComp.
25698 RowContainerCtrl.prototype.addPreventScrollWhileDragging = function () {
25699 var _this = this;
25700 var preventScroll = function (e) {
25701 if (_this.dragService.isDragging()) {
25702 if (e.cancelable) {
25703 e.preventDefault();
25704 }
25705 }
25706 };
25707 this.eContainer.addEventListener('touchmove', preventScroll, { passive: false });
25708 this.addDestroyFunc(function () { return _this.eContainer.removeEventListener('touchmove', preventScroll); });
25709 };
25710 // this gets called whenever a change in the viewport, so we can inform column controller it has to work
25711 // out the virtual columns again. gets called from following locations:
25712 // + ensureColVisible, scroll, init, layoutChanged, displayedColumnsChanged, API (doLayout)
25713 RowContainerCtrl.prototype.onHorizontalViewportChanged = function () {
25714 var scrollWidth = this.getCenterWidth();
25715 var scrollPosition = this.getCenterViewportScrollLeft();
25716 this.columnModel.setViewportPosition(scrollWidth, scrollPosition);
25717 };
25718 RowContainerCtrl.prototype.getCenterWidth = function () {
25719 return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["getInnerWidth"])(this.eViewport);
25720 };
25721 RowContainerCtrl.prototype.getCenterViewportScrollLeft = function () {
25722 // we defer to a util, as how you calculated scrollLeft when doing RTL depends on the browser
25723 return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["getScrollLeft"])(this.eViewport, this.enableRtl);
25724 };
25725 RowContainerCtrl.prototype.registerViewportResizeListener = function (listener) {
25726 var unsubscribeFromResize = this.resizeObserverService.observeResize(this.eViewport, listener);
25727 this.addDestroyFunc(function () { return unsubscribeFromResize(); });
25728 };
25729 RowContainerCtrl.prototype.isViewportVisible = function () {
25730 return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["isVisible"])(this.eViewport);
25731 };
25732 RowContainerCtrl.prototype.isViewportHScrollShowing = function () {
25733 return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["isHorizontalScrollShowing"])(this.eViewport);
25734 };
25735 RowContainerCtrl.prototype.getViewportScrollLeft = function () {
25736 return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["getScrollLeft"])(this.eViewport, this.enableRtl);
25737 };
25738 RowContainerCtrl.prototype.isHorizontalScrollShowing = function () {
25739 var isAlwaysShowHorizontalScroll = this.gridOptionsWrapper.isAlwaysShowHorizontalScroll();
25740 return isAlwaysShowHorizontalScroll || Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["isHorizontalScrollShowing"])(this.eViewport);
25741 };
25742 RowContainerCtrl.prototype.getViewportElement = function () {
25743 return this.eViewport;
25744 };
25745 RowContainerCtrl.prototype.setContainerTranslateX = function (amount) {
25746 this.eContainer.style.transform = "translateX(" + amount + "px)";
25747 };
25748 RowContainerCtrl.prototype.getHScrollPosition = function () {
25749 var res = {
25750 left: this.eViewport.scrollLeft,
25751 right: this.eViewport.scrollLeft + this.eViewport.offsetWidth
25752 };
25753 return res;
25754 };
25755 RowContainerCtrl.prototype.setCenterViewportScrollLeft = function (value) {
25756 // we defer to a util, as how you calculated scrollLeft when doing RTL depends on the browser
25757 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["setScrollLeft"])(this.eViewport, value, this.enableRtl);
25758 };
25759 RowContainerCtrl.prototype.onDisplayedRowsChanged = function () {
25760 var _this = this;
25761 var fullWithContainer = this.name === RowContainerName.TOP_FULL_WIDTH
25762 || this.name === RowContainerName.BOTTOM_FULL_WIDTH
25763 || this.name === RowContainerName.FULL_WIDTH;
25764 var doesRowMatch = function (rowCtrl) {
25765 var fullWidthRow = rowCtrl.isFullWidth();
25766 var printLayout = _this.gridOptionsWrapper.getDomLayout() === _constants_constants__WEBPACK_IMPORTED_MODULE_12__["Constants"].DOM_LAYOUT_PRINT;
25767 var embedFW = _this.embedFullWidthRows || printLayout;
25768 var match = fullWithContainer ?
25769 !embedFW && fullWidthRow
25770 : embedFW || !fullWidthRow;
25771 return match;
25772 };
25773 // this list contains either all pinned top, center or pinned bottom rows
25774 var allRowsRegardlessOfFullWidth = this.getRowCtrls();
25775 // this filters out rows not for this container, eg if it's a full with row, but we are not full with container
25776 var rowsThisContainer = allRowsRegardlessOfFullWidth.filter(doesRowMatch);
25777 this.comp.setRowCtrls(rowsThisContainer);
25778 };
25779 RowContainerCtrl.prototype.getRowCtrls = function () {
25780 switch (this.name) {
25781 case RowContainerName.TOP_CENTER:
25782 case RowContainerName.TOP_LEFT:
25783 case RowContainerName.TOP_RIGHT:
25784 case RowContainerName.TOP_FULL_WIDTH:
25785 return this.rowRenderer.getTopRowCtrls();
25786 case RowContainerName.BOTTOM_CENTER:
25787 case RowContainerName.BOTTOM_LEFT:
25788 case RowContainerName.BOTTOM_RIGHT:
25789 case RowContainerName.BOTTOM_FULL_WIDTH:
25790 return this.rowRenderer.getBottomRowCtrls();
25791 default:
25792 return this.rowRenderer.getRowCtrls();
25793 }
25794 };
25795 __decorate([
25796 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('scrollVisibleService')
25797 ], RowContainerCtrl.prototype, "scrollVisibleService", void 0);
25798 __decorate([
25799 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('dragService')
25800 ], RowContainerCtrl.prototype, "dragService", void 0);
25801 __decorate([
25802 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('ctrlsService')
25803 ], RowContainerCtrl.prototype, "ctrlsService", void 0);
25804 __decorate([
25805 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
25806 ], RowContainerCtrl.prototype, "columnModel", void 0);
25807 __decorate([
25808 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('resizeObserverService')
25809 ], RowContainerCtrl.prototype, "resizeObserverService", void 0);
25810 __decorate([
25811 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('rowRenderer')
25812 ], RowContainerCtrl.prototype, "rowRenderer", void 0);
25813 __decorate([
25814 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
25815 ], RowContainerCtrl.prototype, "postConstruct", null);
25816 return RowContainerCtrl;
25817}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
25818
25819
25820
25821
25822
25823/***/ }),
25824/* 119 */
25825/***/ (function(module, __webpack_exports__, __webpack_require__) {
25826
25827"use strict";
25828__webpack_require__.r(__webpack_exports__);
25829/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowContainerEventsFeature", function() { return RowContainerEventsFeature; });
25830/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
25831/* harmony import */ var _utils_event__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(21);
25832/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
25833/* harmony import */ var _rendering_row_rowCtrl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(120);
25834/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(43);
25835/* harmony import */ var _widgets_touchListener__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(82);
25836/* harmony import */ var _utils_keyboard__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(49);
25837/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(23);
25838/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(65);
25839/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(15);
25840/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(7);
25841/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(18);
25842/* harmony import */ var _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(17);
25843/* harmony import */ var _modules_moduleNames__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(16);
25844/* harmony import */ var _rendering_cell_cellCtrl__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(121);
25845/**
25846 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
25847 * @version v27.3.0
25848 * @link https://www.ag-grid.com/
25849 * @license MIT
25850 */
25851var __extends = (undefined && undefined.__extends) || (function () {
25852 var extendStatics = function (d, b) {
25853 extendStatics = Object.setPrototypeOf ||
25854 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
25855 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
25856 return extendStatics(d, b);
25857 };
25858 return function (d, b) {
25859 extendStatics(d, b);
25860 function __() { this.constructor = d; }
25861 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
25862 };
25863})();
25864var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
25865 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
25866 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
25867 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
25868 return c > 3 && r && Object.defineProperty(target, key, r), r;
25869};
25870var __read = (undefined && undefined.__read) || function (o, n) {
25871 var m = typeof Symbol === "function" && o[Symbol.iterator];
25872 if (!m) return o;
25873 var i = m.call(o), r, ar = [], e;
25874 try {
25875 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
25876 }
25877 catch (error) { e = { error: error }; }
25878 finally {
25879 try {
25880 if (r && !r.done && (m = i["return"])) m.call(i);
25881 }
25882 finally { if (e) throw e.error; }
25883 }
25884 return ar;
25885};
25886
25887
25888
25889
25890
25891
25892
25893
25894
25895
25896
25897
25898
25899
25900
25901var RowContainerEventsFeature = /** @class */ (function (_super) {
25902 __extends(RowContainerEventsFeature, _super);
25903 function RowContainerEventsFeature(element) {
25904 var _this = _super.call(this) || this;
25905 _this.element = element;
25906 return _this;
25907 }
25908 RowContainerEventsFeature.prototype.postConstruct = function () {
25909 this.addMouseListeners();
25910 this.mockContextMenuForIPad();
25911 this.addKeyboardEvents();
25912 };
25913 RowContainerEventsFeature.prototype.addKeyboardEvents = function () {
25914 var _this = this;
25915 var eventNames = ['keydown', 'keypress'];
25916 eventNames.forEach(function (eventName) {
25917 var listener = _this.processKeyboardEvent.bind(_this, eventName);
25918 _this.addManagedListener(_this.element, eventName, listener);
25919 });
25920 };
25921 RowContainerEventsFeature.prototype.addMouseListeners = function () {
25922 var _this = this;
25923 var mouseDownEvent = Object(_utils_event__WEBPACK_IMPORTED_MODULE_1__["isEventSupported"])('touchstart') ? 'touchstart' : 'mousedown';
25924 var eventNames = ['dblclick', 'contextmenu', 'mouseover', 'mouseout', 'click', mouseDownEvent];
25925 eventNames.forEach(function (eventName) {
25926 var listener = _this.processMouseEvent.bind(_this, eventName);
25927 _this.addManagedListener(_this.element, eventName, listener);
25928 });
25929 };
25930 RowContainerEventsFeature.prototype.processMouseEvent = function (eventName, mouseEvent) {
25931 if (!this.mouseEventService.isEventFromThisGrid(mouseEvent) ||
25932 Object(_utils_event__WEBPACK_IMPORTED_MODULE_1__["isStopPropagationForAgGrid"])(mouseEvent)) {
25933 return;
25934 }
25935 var rowComp = this.getRowForEvent(mouseEvent);
25936 var cellCtrl = this.mouseEventService.getRenderedCellForEvent(mouseEvent);
25937 if (eventName === "contextmenu") {
25938 this.handleContextMenuMouseEvent(mouseEvent, null, rowComp, cellCtrl);
25939 }
25940 else {
25941 if (cellCtrl) {
25942 cellCtrl.onMouseEvent(eventName, mouseEvent);
25943 }
25944 if (rowComp) {
25945 rowComp.onMouseEvent(eventName, mouseEvent);
25946 }
25947 }
25948 };
25949 RowContainerEventsFeature.prototype.mockContextMenuForIPad = function () {
25950 var _this = this;
25951 // we do NOT want this when not in iPad, otherwise we will be doing
25952 if (!Object(_utils_browser__WEBPACK_IMPORTED_MODULE_4__["isIOSUserAgent"])()) {
25953 return;
25954 }
25955 var touchListener = new _widgets_touchListener__WEBPACK_IMPORTED_MODULE_5__["TouchListener"](this.element);
25956 var longTapListener = function (event) {
25957 var rowComp = _this.getRowForEvent(event.touchEvent);
25958 var cellComp = _this.mouseEventService.getRenderedCellForEvent(event.touchEvent);
25959 _this.handleContextMenuMouseEvent(null, event.touchEvent, rowComp, cellComp);
25960 };
25961 this.addManagedListener(touchListener, _widgets_touchListener__WEBPACK_IMPORTED_MODULE_5__["TouchListener"].EVENT_LONG_TAP, longTapListener);
25962 this.addDestroyFunc(function () { return touchListener.destroy(); });
25963 };
25964 RowContainerEventsFeature.prototype.getRowForEvent = function (event) {
25965 var sourceElement = event.target;
25966 while (sourceElement) {
25967 var rowCon = this.gridOptionsWrapper.getDomData(sourceElement, _rendering_row_rowCtrl__WEBPACK_IMPORTED_MODULE_3__["RowCtrl"].DOM_DATA_KEY_ROW_CTRL);
25968 if (rowCon) {
25969 return rowCon;
25970 }
25971 sourceElement = sourceElement.parentElement;
25972 }
25973 return null;
25974 };
25975 RowContainerEventsFeature.prototype.handleContextMenuMouseEvent = function (mouseEvent, touchEvent, rowComp, cellCtrl) {
25976 var rowNode = rowComp ? rowComp.getRowNode() : null;
25977 var column = cellCtrl ? cellCtrl.getColumn() : null;
25978 var value = null;
25979 if (column) {
25980 var event_1 = mouseEvent ? mouseEvent : touchEvent;
25981 cellCtrl.dispatchCellContextMenuEvent(event_1);
25982 value = this.valueService.getValue(column, rowNode);
25983 }
25984 // if user clicked on a cell, anchor to that cell, otherwise anchor to the grid panel
25985 var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
25986 var anchorToElement = cellCtrl ? cellCtrl.getGui() : gridBodyCon.getGridBodyElement();
25987 if (this.contextMenuFactory) {
25988 this.contextMenuFactory.onContextMenu(mouseEvent, touchEvent, rowNode, column, value, anchorToElement);
25989 }
25990 };
25991 RowContainerEventsFeature.prototype.processKeyboardEvent = function (eventName, keyboardEvent) {
25992 var cellComp = Object(_utils_event__WEBPACK_IMPORTED_MODULE_1__["getCtrlForEvent"])(this.gridOptionsWrapper, keyboardEvent, _rendering_cell_cellCtrl__WEBPACK_IMPORTED_MODULE_14__["CellCtrl"].DOM_DATA_KEY_CELL_CTRL);
25993 var rowComp = Object(_utils_event__WEBPACK_IMPORTED_MODULE_1__["getCtrlForEvent"])(this.gridOptionsWrapper, keyboardEvent, _rendering_row_rowCtrl__WEBPACK_IMPORTED_MODULE_3__["RowCtrl"].DOM_DATA_KEY_ROW_CTRL);
25994 if (keyboardEvent.defaultPrevented) {
25995 return;
25996 }
25997 if (cellComp) {
25998 this.processCellKeyboardEvent(cellComp, eventName, keyboardEvent);
25999 }
26000 else if (rowComp && rowComp.isFullWidth()) {
26001 this.processFullWidthRowKeyboardEvent(rowComp, eventName, keyboardEvent);
26002 }
26003 };
26004 RowContainerEventsFeature.prototype.processCellKeyboardEvent = function (cellCtrl, eventName, keyboardEvent) {
26005 var rowNode = cellCtrl.getRowNode();
26006 var column = cellCtrl.getColumn();
26007 var editing = cellCtrl.isEditing();
26008 var gridProcessingAllowed = !Object(_utils_keyboard__WEBPACK_IMPORTED_MODULE_6__["isUserSuppressingKeyboardEvent"])(this.gridOptionsWrapper, keyboardEvent, rowNode, column, editing);
26009 if (gridProcessingAllowed) {
26010 switch (eventName) {
26011 case 'keydown':
26012 // first see if it's a scroll key, page up / down, home / end etc
26013 var wasScrollKey = !editing && this.navigationService.handlePageScrollingKey(keyboardEvent);
26014 // if not a scroll key, then we pass onto cell
26015 if (!wasScrollKey) {
26016 cellCtrl.onKeyDown(keyboardEvent);
26017 }
26018 // perform clipboard and undo / redo operations
26019 this.doGridOperations(keyboardEvent, cellCtrl.isEditing());
26020 break;
26021 case 'keypress':
26022 cellCtrl.onKeyPress(keyboardEvent);
26023 break;
26024 }
26025 }
26026 if (eventName === 'keydown') {
26027 var cellKeyDownEvent = cellCtrl.createEvent(keyboardEvent, _events__WEBPACK_IMPORTED_MODULE_7__["Events"].EVENT_CELL_KEY_DOWN);
26028 this.eventService.dispatchEvent(cellKeyDownEvent);
26029 }
26030 if (eventName === 'keypress') {
26031 var cellKeyPressEvent = cellCtrl.createEvent(keyboardEvent, _events__WEBPACK_IMPORTED_MODULE_7__["Events"].EVENT_CELL_KEY_PRESS);
26032 this.eventService.dispatchEvent(cellKeyPressEvent);
26033 }
26034 };
26035 RowContainerEventsFeature.prototype.processFullWidthRowKeyboardEvent = function (rowComp, eventName, keyboardEvent) {
26036 var rowNode = rowComp.getRowNode();
26037 var focusedCell = this.focusService.getFocusedCell();
26038 var column = (focusedCell && focusedCell.column);
26039 var gridProcessingAllowed = !Object(_utils_keyboard__WEBPACK_IMPORTED_MODULE_6__["isUserSuppressingKeyboardEvent"])(this.gridOptionsWrapper, keyboardEvent, rowNode, column, false);
26040 if (gridProcessingAllowed) {
26041 var key = keyboardEvent.key;
26042 if (eventName === 'keydown') {
26043 switch (key) {
26044 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_8__["KeyCode"].UP:
26045 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_8__["KeyCode"].DOWN:
26046 rowComp.onKeyboardNavigate(keyboardEvent);
26047 break;
26048 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_8__["KeyCode"].TAB:
26049 rowComp.onTabKeyDown(keyboardEvent);
26050 default:
26051 }
26052 }
26053 }
26054 if (eventName === 'keydown') {
26055 var cellKeyDownEvent = rowComp.createRowEvent(_events__WEBPACK_IMPORTED_MODULE_7__["Events"].EVENT_CELL_KEY_DOWN, keyboardEvent);
26056 this.eventService.dispatchEvent(cellKeyDownEvent);
26057 }
26058 if (eventName === 'keypress') {
26059 var cellKeyPressEvent = rowComp.createRowEvent(_events__WEBPACK_IMPORTED_MODULE_7__["Events"].EVENT_CELL_KEY_PRESS, keyboardEvent);
26060 this.eventService.dispatchEvent(cellKeyPressEvent);
26061 }
26062 };
26063 RowContainerEventsFeature.prototype.doGridOperations = function (keyboardEvent, editing) {
26064 // check if ctrl or meta key pressed
26065 if (!keyboardEvent.ctrlKey && !keyboardEvent.metaKey) {
26066 return;
26067 }
26068 // if the cell the event came from is editing, then we do not
26069 // want to do the default shortcut keys, otherwise the editor
26070 // (eg a text field) would not be able to do the normal cut/copy/paste
26071 if (editing) {
26072 return;
26073 }
26074 // for copy / paste, we don't want to execute when the event
26075 // was from a child grid (happens in master detail)
26076 if (!this.mouseEventService.isEventFromThisGrid(keyboardEvent)) {
26077 return;
26078 }
26079 switch (keyboardEvent.code) {
26080 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_8__["KeyCode"].A:
26081 return this.onCtrlAndA(keyboardEvent);
26082 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_8__["KeyCode"].C:
26083 return this.onCtrlAndC(keyboardEvent);
26084 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_8__["KeyCode"].V:
26085 return this.onCtrlAndV();
26086 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_8__["KeyCode"].D:
26087 return this.onCtrlAndD(keyboardEvent);
26088 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_8__["KeyCode"].Z:
26089 return keyboardEvent.shiftKey ? this.undoRedoService.redo() : this.undoRedoService.undo();
26090 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_8__["KeyCode"].Y:
26091 return this.undoRedoService.redo();
26092 }
26093 };
26094 RowContainerEventsFeature.prototype.onCtrlAndA = function (event) {
26095 var _a = this, pinnedRowModel = _a.pinnedRowModel, paginationProxy = _a.paginationProxy, rangeService = _a.rangeService;
26096 var PINNED_BOTTOM = _constants_constants__WEBPACK_IMPORTED_MODULE_9__["Constants"].PINNED_BOTTOM, PINNED_TOP = _constants_constants__WEBPACK_IMPORTED_MODULE_9__["Constants"].PINNED_TOP;
26097 if (rangeService && paginationProxy.isRowsToRender()) {
26098 var _b = __read([
26099 pinnedRowModel.isEmpty(PINNED_TOP),
26100 pinnedRowModel.isEmpty(PINNED_BOTTOM)
26101 ], 2), isEmptyPinnedTop = _b[0], isEmptyPinnedBottom = _b[1];
26102 var floatingStart = isEmptyPinnedTop ? null : PINNED_TOP;
26103 var floatingEnd = void 0;
26104 var rowEnd = void 0;
26105 if (isEmptyPinnedBottom) {
26106 floatingEnd = null;
26107 rowEnd = this.paginationProxy.getRowCount() - 1;
26108 }
26109 else {
26110 floatingEnd = PINNED_BOTTOM;
26111 rowEnd = pinnedRowModel.getPinnedBottomRowData().length - 1;
26112 }
26113 var allDisplayedColumns = this.columnModel.getAllDisplayedColumns();
26114 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_10__["missingOrEmpty"])(allDisplayedColumns)) {
26115 return;
26116 }
26117 rangeService.setCellRange({
26118 rowStartIndex: 0,
26119 rowStartPinned: floatingStart,
26120 rowEndIndex: rowEnd,
26121 rowEndPinned: floatingEnd,
26122 columnStart: allDisplayedColumns[0],
26123 columnEnd: Object(_utils_array__WEBPACK_IMPORTED_MODULE_11__["last"])(allDisplayedColumns)
26124 });
26125 }
26126 event.preventDefault();
26127 };
26128 RowContainerEventsFeature.prototype.onCtrlAndC = function (event) {
26129 if (!this.clipboardService || this.gridOptionsWrapper.isEnableCellTextSelection()) {
26130 return;
26131 }
26132 this.clipboardService.copyToClipboard();
26133 event.preventDefault();
26134 };
26135 RowContainerEventsFeature.prototype.onCtrlAndV = function () {
26136 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_12__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_13__["ModuleNames"].ClipboardModule) && !this.gridOptionsWrapper.isSuppressClipboardPaste()) {
26137 this.clipboardService.pasteFromClipboard();
26138 }
26139 };
26140 RowContainerEventsFeature.prototype.onCtrlAndD = function (event) {
26141 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_12__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_13__["ModuleNames"].ClipboardModule) && !this.gridOptionsWrapper.isSuppressClipboardPaste()) {
26142 this.clipboardService.copyRangeDown();
26143 }
26144 event.preventDefault();
26145 };
26146 __decorate([
26147 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('mouseEventService')
26148 ], RowContainerEventsFeature.prototype, "mouseEventService", void 0);
26149 __decorate([
26150 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('valueService')
26151 ], RowContainerEventsFeature.prototype, "valueService", void 0);
26152 __decorate([
26153 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Optional"])('contextMenuFactory')
26154 ], RowContainerEventsFeature.prototype, "contextMenuFactory", void 0);
26155 __decorate([
26156 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('ctrlsService')
26157 ], RowContainerEventsFeature.prototype, "ctrlsService", void 0);
26158 __decorate([
26159 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('navigationService')
26160 ], RowContainerEventsFeature.prototype, "navigationService", void 0);
26161 __decorate([
26162 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('focusService')
26163 ], RowContainerEventsFeature.prototype, "focusService", void 0);
26164 __decorate([
26165 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('undoRedoService')
26166 ], RowContainerEventsFeature.prototype, "undoRedoService", void 0);
26167 __decorate([
26168 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('columnModel')
26169 ], RowContainerEventsFeature.prototype, "columnModel", void 0);
26170 __decorate([
26171 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('paginationProxy')
26172 ], RowContainerEventsFeature.prototype, "paginationProxy", void 0);
26173 __decorate([
26174 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('pinnedRowModel')
26175 ], RowContainerEventsFeature.prototype, "pinnedRowModel", void 0);
26176 __decorate([
26177 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Optional"])('rangeService')
26178 ], RowContainerEventsFeature.prototype, "rangeService", void 0);
26179 __decorate([
26180 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Optional"])('clipboardService')
26181 ], RowContainerEventsFeature.prototype, "clipboardService", void 0);
26182 __decorate([
26183 _context_context__WEBPACK_IMPORTED_MODULE_2__["PostConstruct"]
26184 ], RowContainerEventsFeature.prototype, "postConstruct", null);
26185 return RowContainerEventsFeature;
26186}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
26187
26188
26189
26190
26191
26192/***/ }),
26193/* 120 */
26194/***/ (function(module, __webpack_exports__, __webpack_require__) {
26195
26196"use strict";
26197__webpack_require__.r(__webpack_exports__);
26198/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowType", function() { return RowType; });
26199/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowCtrl", function() { return RowCtrl; });
26200/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
26201/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
26202/* harmony import */ var _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(94);
26203/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(23);
26204/* harmony import */ var _gridBodyComp_rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(118);
26205/* harmony import */ var _modules_moduleNames__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(16);
26206/* harmony import */ var _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(17);
26207/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(44);
26208/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(42);
26209/* harmony import */ var _utils_event__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(21);
26210/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(14);
26211/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(7);
26212/* harmony import */ var _utils_string__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(26);
26213/* harmony import */ var _cell_cellCtrl__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(121);
26214/* harmony import */ var _rowDragComp__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(96);
26215/**
26216 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
26217 * @version v27.3.0
26218 * @link https://www.ag-grid.com/
26219 * @license MIT
26220 */
26221var __extends = (undefined && undefined.__extends) || (function () {
26222 var extendStatics = function (d, b) {
26223 extendStatics = Object.setPrototypeOf ||
26224 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
26225 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
26226 return extendStatics(d, b);
26227 };
26228 return function (d, b) {
26229 extendStatics(d, b);
26230 function __() { this.constructor = d; }
26231 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
26232 };
26233})();
26234var __read = (undefined && undefined.__read) || function (o, n) {
26235 var m = typeof Symbol === "function" && o[Symbol.iterator];
26236 if (!m) return o;
26237 var i = m.call(o), r, ar = [], e;
26238 try {
26239 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
26240 }
26241 catch (error) { e = { error: error }; }
26242 finally {
26243 try {
26244 if (r && !r.done && (m = i["return"])) m.call(i);
26245 }
26246 finally { if (e) throw e.error; }
26247 }
26248 return ar;
26249};
26250var __spread = (undefined && undefined.__spread) || function () {
26251 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
26252 return ar;
26253};
26254
26255
26256
26257
26258
26259
26260
26261
26262
26263
26264
26265
26266
26267
26268
26269var RowType;
26270(function (RowType) {
26271 RowType["Normal"] = "Normal";
26272 RowType["FullWidth"] = "FullWidth";
26273 RowType["FullWidthLoading"] = "FullWidthLoading";
26274 RowType["FullWidthGroup"] = "FullWidthGroup";
26275 RowType["FullWidthDetail"] = "FullWidthDetail";
26276})(RowType || (RowType = {}));
26277var instanceIdSequence = 0;
26278var RowCtrl = /** @class */ (function (_super) {
26279 __extends(RowCtrl, _super);
26280 function RowCtrl(rowNode, beans, animateIn, useAnimationFrameForCreate, printLayout) {
26281 var _this = _super.call(this) || this;
26282 _this.allRowGuis = [];
26283 _this.active = true;
26284 _this.centerCellCtrls = { list: [], map: {} };
26285 _this.leftCellCtrls = { list: [], map: {} };
26286 _this.rightCellCtrls = { list: [], map: {} };
26287 _this.lastMouseDownOnDragger = false;
26288 _this.updateColumnListsPending = false;
26289 _this.beans = beans;
26290 _this.rowNode = rowNode;
26291 _this.paginationPage = _this.beans.paginationProxy.getCurrentPage();
26292 _this.useAnimationFrameForCreate = useAnimationFrameForCreate;
26293 _this.printLayout = printLayout;
26294 _this.instanceId = rowNode.id + '-' + instanceIdSequence++;
26295 _this.setAnimateFlags(animateIn);
26296 _this.rowFocused = _this.beans.focusService.isRowFocused(_this.rowNode.rowIndex, _this.rowNode.rowPinned);
26297 _this.rowLevel = _this.beans.rowCssClassCalculator.calculateRowLevel(_this.rowNode);
26298 _this.setRowType();
26299 _this.addListeners();
26300 _this.setInitialRowTop();
26301 return _this;
26302 }
26303 RowCtrl.prototype.getBeans = function () {
26304 return this.beans;
26305 };
26306 RowCtrl.prototype.getInstanceId = function () {
26307 return this.instanceId;
26308 };
26309 RowCtrl.prototype.setComp = function (rowComp, element, containerType) {
26310 var gui = { rowComp: rowComp, element: element, containerType: containerType };
26311 this.allRowGuis.push(gui);
26312 if (containerType === _gridBodyComp_rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_4__["RowContainerType"].LEFT) {
26313 this.leftGui = gui;
26314 }
26315 else if (containerType === _gridBodyComp_rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_4__["RowContainerType"].RIGHT) {
26316 this.rightGui = gui;
26317 }
26318 else if (containerType === _gridBodyComp_rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_4__["RowContainerType"].FULL_WIDTH) {
26319 this.fullWidthGui = gui;
26320 }
26321 else {
26322 this.centerGui = gui;
26323 }
26324 var allNormalPresent = this.leftGui != null && this.rightGui != null && this.centerGui != null;
26325 var fullWidthPresent = this.fullWidthGui != null;
26326 if (allNormalPresent || fullWidthPresent) {
26327 this.initialiseRowComps();
26328 }
26329 };
26330 RowCtrl.prototype.isCacheable = function () {
26331 return this.rowType === RowType.FullWidthDetail
26332 && this.beans.gridOptionsWrapper.isKeepDetailRows();
26333 };
26334 RowCtrl.prototype.setCached = function (cached) {
26335 var displayValue = cached ? 'none' : '';
26336 this.allRowGuis.forEach(function (rg) { return rg.element.style.display = displayValue; });
26337 };
26338 RowCtrl.prototype.initialiseRowComps = function () {
26339 var _this = this;
26340 var gow = this.beans.gridOptionsWrapper;
26341 this.onRowHeightChanged();
26342 this.updateRowIndexes();
26343 this.setFocusedClasses();
26344 this.setStylesFromGridOptions();
26345 if (gow.isRowSelection() && this.rowNode.selectable) {
26346 this.onRowSelected();
26347 }
26348 this.updateColumnLists(!this.useAnimationFrameForCreate);
26349 if (this.slideRowIn) {
26350 Object(_utils_function__WEBPACK_IMPORTED_MODULE_10__["executeNextVMTurn"])(this.onTopChanged.bind(this));
26351 }
26352 if (this.fadeRowIn) {
26353 Object(_utils_function__WEBPACK_IMPORTED_MODULE_10__["executeNextVMTurn"])(function () {
26354 _this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-opacity-zero', false); });
26355 });
26356 }
26357 var businessKey = this.getRowBusinessKey();
26358 var rowIdSanitised = Object(_utils_string__WEBPACK_IMPORTED_MODULE_12__["escapeString"])(this.rowNode.id);
26359 var businessKeySanitised = Object(_utils_string__WEBPACK_IMPORTED_MODULE_12__["escapeString"])(businessKey);
26360 this.allRowGuis.forEach(function (gui) {
26361 var comp = gui.rowComp;
26362 comp.setRole('row');
26363 var initialRowClasses = _this.getInitialRowClasses(gui.containerType);
26364 initialRowClasses.forEach(function (name) { return comp.addOrRemoveCssClass(name, true); });
26365 if (_this.rowNode.group) {
26366 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_7__["setAriaExpanded"])(gui.element, _this.rowNode.expanded == true);
26367 }
26368 if (rowIdSanitised != null) {
26369 comp.setRowId(rowIdSanitised);
26370 }
26371 if (businessKeySanitised != null) {
26372 comp.setRowBusinessKey(businessKeySanitised);
26373 }
26374 if (_this.isFullWidth() && !_this.beans.gridOptionsWrapper.isSuppressCellFocus()) {
26375 comp.setTabIndex(-1);
26376 }
26377 // DOM DATA
26378 gow.setDomData(gui.element, RowCtrl.DOM_DATA_KEY_ROW_CTRL, _this);
26379 _this.addDestroyFunc(function () { return gow.setDomData(gui.element, RowCtrl.DOM_DATA_KEY_ROW_CTRL, null); });
26380 // adding hover functionality adds listener to this row, so we
26381 // do it lazily in an animation frame
26382 if (_this.useAnimationFrameForCreate) {
26383 _this.beans.animationFrameService.createTask(_this.addHoverFunctionality.bind(_this, gui.element), _this.rowNode.rowIndex, 'createTasksP2');
26384 }
26385 else {
26386 _this.addHoverFunctionality(gui.element);
26387 }
26388 if (_this.isFullWidth()) {
26389 _this.setupFullWidth(gui);
26390 }
26391 if (gow.isRowDragEntireRow()) {
26392 _this.addRowDraggerToRow(gui);
26393 }
26394 if (_this.useAnimationFrameForCreate) {
26395 // the height animation we only want active after the row is alive for 1 second.
26396 // this stops the row animation working when rows are initially crated. otherwise
26397 // auto-height rows get inserted into the dom and resized immediately, which gives
26398 // very bad UX (eg 10 rows get inserted, then all 10 expand, look particularly bad
26399 // when scrolling). so this makes sure when rows are shown for the first time, they
26400 // are resized immediately without animation.
26401 _this.beans.animationFrameService.addDestroyTask(function () {
26402 if (!_this.isAlive()) {
26403 return;
26404 }
26405 gui.rowComp.addOrRemoveCssClass('ag-after-created', true);
26406 });
26407 }
26408 });
26409 this.executeProcessRowPostCreateFunc();
26410 };
26411 RowCtrl.prototype.addRowDraggerToRow = function (gui) {
26412 var gow = this.beans.gridOptionsWrapper;
26413 if (gow.isEnableRangeSelection()) {
26414 Object(_utils_function__WEBPACK_IMPORTED_MODULE_10__["doOnce"])(function () {
26415 console.warn('AG Grid: Setting `rowDragEntireRow: true` in the gridOptions doesn\'t work with `enableRangeSelection: true`');
26416 }, 'rowDragAndRangeSelectionEnabled');
26417 return;
26418 }
26419 var rowDragComp = new _rowDragComp__WEBPACK_IMPORTED_MODULE_14__["RowDragComp"](function () { return '1 row'; }, this.rowNode, undefined, gui.element, undefined, true);
26420 this.createManagedBean(rowDragComp, this.beans.context);
26421 };
26422 RowCtrl.prototype.setupFullWidth = function (gui) {
26423 var pinned = this.getPinnedForContainer(gui.containerType);
26424 var params = this.createFullWidthParams(gui.element, pinned);
26425 var masterDetailModuleLoaded = _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_6__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_5__["ModuleNames"].MasterDetailModule);
26426 if (this.rowType == RowType.FullWidthDetail && !masterDetailModuleLoaded) {
26427 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_6__["ModuleRegistry"].isPackageBased()) {
26428 console.warn("AG Grid: cell renderer 'agDetailCellRenderer' (for master detail) not found. Can only be used with ag-grid-enterprise package.");
26429 }
26430 else {
26431 console.warn("AG Grid: cell renderer 'agDetailCellRenderer' (for master detail) not found. Can only be used with AG Grid Enterprise Module " + _modules_moduleNames__WEBPACK_IMPORTED_MODULE_5__["ModuleNames"].MasterDetailModule);
26432 }
26433 return;
26434 }
26435 var compDetails;
26436 switch (this.rowType) {
26437 case RowType.FullWidthDetail:
26438 compDetails = this.beans.userComponentFactory.getFullWidthDetailCellRendererDetails(params);
26439 break;
26440 case RowType.FullWidthGroup:
26441 compDetails = this.beans.userComponentFactory.getFullWidthGroupCellRendererDetails(params);
26442 break;
26443 case RowType.FullWidthLoading:
26444 compDetails = this.beans.userComponentFactory.getFullWidthLoadingCellRendererDetails(params);
26445 break;
26446 default:
26447 compDetails = this.beans.userComponentFactory.getFullWidthCellRendererDetails(params);
26448 break;
26449 }
26450 gui.rowComp.showFullWidth(compDetails);
26451 };
26452 RowCtrl.prototype.isPrintLayout = function () {
26453 return this.printLayout;
26454 };
26455 // use by autoWidthCalculator, as it clones the elements
26456 RowCtrl.prototype.getCellElement = function (column) {
26457 var cellCtrl = this.getCellCtrl(column);
26458 return cellCtrl ? cellCtrl.getGui() : null;
26459 };
26460 RowCtrl.prototype.executeProcessRowPostCreateFunc = function () {
26461 var func = this.beans.gridOptionsWrapper.getProcessRowPostCreateFunc();
26462 if (!func) {
26463 return;
26464 }
26465 var params = {
26466 eRow: this.centerGui ? this.centerGui.element : undefined,
26467 ePinnedLeftRow: this.leftGui ? this.leftGui.element : undefined,
26468 ePinnedRightRow: this.rightGui ? this.rightGui.element : undefined,
26469 node: this.rowNode,
26470 rowIndex: this.rowNode.rowIndex,
26471 addRenderedRowListener: this.addEventListener.bind(this),
26472 };
26473 func(params);
26474 };
26475 RowCtrl.prototype.setRowType = function () {
26476 var isStub = this.rowNode.stub;
26477 var isFullWidthCell = this.rowNode.isFullWidthCell();
26478 var isDetailCell = this.beans.doingMasterDetail && this.rowNode.detail;
26479 var pivotMode = this.beans.columnModel.isPivotMode();
26480 // we only use full width for groups, not footers. it wouldn't make sense to include footers if not looking
26481 // for totals. if users complain about this, then we should introduce a new property 'footerUseEntireRow'
26482 // so each can be set independently (as a customer complained about footers getting full width, hence
26483 // introducing this logic)
26484 var isGroupRow = !!this.rowNode.group && !this.rowNode.footer;
26485 var isFullWidthGroup = isGroupRow && this.beans.gridOptionsWrapper.isGroupUseEntireRow(pivotMode);
26486 if (isStub) {
26487 this.rowType = RowType.FullWidthLoading;
26488 }
26489 else if (isDetailCell) {
26490 this.rowType = RowType.FullWidthDetail;
26491 }
26492 else if (isFullWidthCell) {
26493 this.rowType = RowType.FullWidth;
26494 }
26495 else if (isFullWidthGroup) {
26496 this.rowType = RowType.FullWidthGroup;
26497 }
26498 else {
26499 this.rowType = RowType.Normal;
26500 }
26501 };
26502 RowCtrl.prototype.updateColumnLists = function (suppressAnimationFrame) {
26503 var _this = this;
26504 if (suppressAnimationFrame === void 0) { suppressAnimationFrame = false; }
26505 if (this.isFullWidth()) {
26506 return;
26507 }
26508 var noAnimation = suppressAnimationFrame
26509 || this.beans.gridOptionsWrapper.isSuppressAnimationFrame()
26510 || this.printLayout;
26511 if (noAnimation) {
26512 this.updateColumnListsImpl();
26513 return;
26514 }
26515 if (this.updateColumnListsPending) {
26516 return;
26517 }
26518 this.beans.animationFrameService.createTask(function () {
26519 if (!_this.active) {
26520 return;
26521 }
26522 _this.updateColumnListsImpl();
26523 }, this.rowNode.rowIndex, 'createTasksP1');
26524 this.updateColumnListsPending = true;
26525 };
26526 RowCtrl.prototype.createCellCtrls = function (prev, cols, pinned) {
26527 var _this = this;
26528 if (pinned === void 0) { pinned = null; }
26529 var res = {
26530 list: [],
26531 map: {}
26532 };
26533 var addCell = function (colInstanceId, cellCtrl) {
26534 res.list.push(cellCtrl);
26535 res.map[colInstanceId] = cellCtrl;
26536 };
26537 cols.forEach(function (col) {
26538 // we use instanceId's rather than colId as it's possible there is a Column with same Id,
26539 // but it's referring to a different column instance. Happens a lot with pivot, as pivot col id's are
26540 // reused eg pivot_0, pivot_1 etc
26541 var colInstanceId = col.getInstanceId();
26542 var cellCtrl = prev.map[colInstanceId];
26543 if (!cellCtrl) {
26544 cellCtrl = new _cell_cellCtrl__WEBPACK_IMPORTED_MODULE_13__["CellCtrl"](col, _this.rowNode, _this.beans, _this);
26545 }
26546 addCell(colInstanceId, cellCtrl);
26547 });
26548 prev.list.forEach(function (prevCellCtrl) {
26549 var cellInResult = res.map[prevCellCtrl.getColumn().getInstanceId()] != null;
26550 if (cellInResult) {
26551 return;
26552 }
26553 var keepCell = !_this.isCellEligibleToBeRemoved(prevCellCtrl, pinned);
26554 if (keepCell) {
26555 addCell(prevCellCtrl.getColumn().getInstanceId(), prevCellCtrl);
26556 return;
26557 }
26558 prevCellCtrl.destroy();
26559 });
26560 return res;
26561 };
26562 RowCtrl.prototype.updateColumnListsImpl = function () {
26563 var _this = this;
26564 this.updateColumnListsPending = false;
26565 var columnModel = this.beans.columnModel;
26566 if (this.printLayout) {
26567 this.centerCellCtrls = this.createCellCtrls(this.centerCellCtrls, columnModel.getAllDisplayedColumns());
26568 this.leftCellCtrls = { list: [], map: {} };
26569 this.rightCellCtrls = { list: [], map: {} };
26570 }
26571 else {
26572 var centerCols = columnModel.getViewportCenterColumnsForRow(this.rowNode);
26573 this.centerCellCtrls = this.createCellCtrls(this.centerCellCtrls, centerCols);
26574 var leftCols = columnModel.getDisplayedLeftColumnsForRow(this.rowNode);
26575 this.leftCellCtrls = this.createCellCtrls(this.leftCellCtrls, leftCols, _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_LEFT);
26576 var rightCols = columnModel.getDisplayedRightColumnsForRow(this.rowNode);
26577 this.rightCellCtrls = this.createCellCtrls(this.rightCellCtrls, rightCols, _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_RIGHT);
26578 }
26579 this.allRowGuis.forEach(function (item) {
26580 var cellControls = item.containerType === _gridBodyComp_rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_4__["RowContainerType"].LEFT ? _this.leftCellCtrls :
26581 item.containerType === _gridBodyComp_rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_4__["RowContainerType"].RIGHT ? _this.rightCellCtrls : _this.centerCellCtrls;
26582 item.rowComp.setCellCtrls(cellControls.list);
26583 });
26584 };
26585 RowCtrl.prototype.isCellEligibleToBeRemoved = function (cellCtrl, nextContainerPinned) {
26586 var REMOVE_CELL = true;
26587 var KEEP_CELL = false;
26588 // always remove the cell if it's not rendered or if it's in the wrong pinned location
26589 var column = cellCtrl.getColumn();
26590 if (column.getPinned() != nextContainerPinned) {
26591 return REMOVE_CELL;
26592 }
26593 // we want to try and keep editing and focused cells
26594 var editing = cellCtrl.isEditing();
26595 var focused = this.beans.focusService.isCellFocused(cellCtrl.getCellPosition());
26596 var mightWantToKeepCell = editing || focused;
26597 if (mightWantToKeepCell) {
26598 var column_1 = cellCtrl.getColumn();
26599 var displayedColumns = this.beans.columnModel.getAllDisplayedColumns();
26600 var cellStillDisplayed = displayedColumns.indexOf(column_1) >= 0;
26601 return cellStillDisplayed ? KEEP_CELL : REMOVE_CELL;
26602 }
26603 return REMOVE_CELL;
26604 };
26605 RowCtrl.prototype.setAnimateFlags = function (animateIn) {
26606 if (animateIn) {
26607 var oldRowTopExists = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_11__["exists"])(this.rowNode.oldRowTop);
26608 // if the row had a previous position, we slide it in (animate row top)
26609 this.slideRowIn = oldRowTopExists;
26610 // if the row had no previous position, we fade it in (animate
26611 this.fadeRowIn = !oldRowTopExists;
26612 }
26613 else {
26614 this.slideRowIn = false;
26615 this.fadeRowIn = false;
26616 }
26617 };
26618 RowCtrl.prototype.isEditing = function () {
26619 return this.editingRow;
26620 };
26621 RowCtrl.prototype.stopRowEditing = function (cancel) {
26622 this.stopEditing(cancel);
26623 };
26624 RowCtrl.prototype.isFullWidth = function () {
26625 return this.rowType !== RowType.Normal;
26626 };
26627 RowCtrl.prototype.getRowType = function () {
26628 return this.rowType;
26629 };
26630 RowCtrl.prototype.refreshFullWidth = function () {
26631 var _this = this;
26632 // returns 'true' if refresh succeeded
26633 var tryRefresh = function (gui, pinned) {
26634 if (!gui) {
26635 return true;
26636 } // no refresh needed
26637 var cellRenderer = gui.rowComp.getFullWidthCellRenderer();
26638 // no cell renderer, either means comp not yet ready, or comp ready but now reference
26639 // to it (happens in react when comp is stateless). if comp not ready, we don't need to
26640 // refresh, however we don't know which one, so we refresh to cover the case where it's
26641 // react comp without reference so need to force a refresh
26642 if (!cellRenderer) {
26643 return false;
26644 }
26645 // no refresh method present, so can't refresh, hard refresh needed
26646 if (!cellRenderer.refresh) {
26647 return false;
26648 }
26649 var params = _this.createFullWidthParams(gui.element, pinned);
26650 var refreshSucceeded = cellRenderer.refresh(params);
26651 return refreshSucceeded;
26652 };
26653 var fullWidthSuccess = tryRefresh(this.fullWidthGui, null);
26654 var centerSuccess = tryRefresh(this.centerGui, null);
26655 var leftSuccess = tryRefresh(this.leftGui, _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_LEFT);
26656 var rightSuccess = tryRefresh(this.rightGui, _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_RIGHT);
26657 var allFullWidthRowsRefreshed = fullWidthSuccess && centerSuccess && leftSuccess && rightSuccess;
26658 return allFullWidthRowsRefreshed;
26659 };
26660 RowCtrl.prototype.addListeners = function () {
26661 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_HEIGHT_CHANGED, this.onRowHeightChanged.bind(this));
26662 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_ROW_SELECTED, this.onRowSelected.bind(this));
26663 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_ROW_INDEX_CHANGED, this.onRowIndexChanged.bind(this));
26664 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_TOP_CHANGED, this.onTopChanged.bind(this));
26665 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_EXPANDED_CHANGED, this.updateExpandedCss.bind(this));
26666 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_HAS_CHILDREN_CHANGED, this.updateExpandedCss.bind(this));
26667 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_DATA_CHANGED, this.onRowNodeDataChanged.bind(this));
26668 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_CELL_CHANGED, this.onRowNodeCellChanged.bind(this));
26669 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_HIGHLIGHT_CHANGED, this.onRowNodeHighlightChanged.bind(this));
26670 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_DRAGGING_CHANGED, this.onRowNodeDraggingChanged.bind(this));
26671 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_UI_LEVEL_CHANGED, this.onUiLevelChanged.bind(this));
26672 var eventService = this.beans.eventService;
26673 this.addManagedListener(eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_PAGINATION_PIXEL_OFFSET_CHANGED, this.onPaginationPixelOffsetChanged.bind(this));
26674 this.addManagedListener(eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_HEIGHT_SCALE_CHANGED, this.onTopChanged.bind(this));
26675 this.addManagedListener(eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));
26676 this.addManagedListener(eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_VIRTUAL_COLUMNS_CHANGED, this.onVirtualColumnsChanged.bind(this));
26677 this.addManagedListener(eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_CELL_FOCUSED, this.onCellFocusChanged.bind(this));
26678 this.addManagedListener(eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_PAGINATION_CHANGED, this.onPaginationChanged.bind(this));
26679 this.addManagedListener(eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_MODEL_UPDATED, this.onModelUpdated.bind(this));
26680 this.addManagedListener(eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_COLUMN_MOVED, this.onColumnMoved.bind(this));
26681 this.addListenersForCellComps();
26682 };
26683 RowCtrl.prototype.onColumnMoved = function () {
26684 this.updateColumnLists();
26685 };
26686 RowCtrl.prototype.addListenersForCellComps = function () {
26687 var _this = this;
26688 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_ROW_INDEX_CHANGED, function () {
26689 _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onRowIndexChanged(); });
26690 });
26691 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_CELL_CHANGED, function (event) {
26692 _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onCellChanged(event); });
26693 });
26694 };
26695 RowCtrl.prototype.onRowNodeDataChanged = function (event) {
26696 // if this is an update, we want to refresh, as this will allow the user to put in a transition
26697 // into the cellRenderer refresh method. otherwise this might be completely new data, in which case
26698 // we will want to completely replace the cells
26699 this.getAllCellCtrls().forEach(function (cellCtrl) {
26700 return cellCtrl.refreshCell({
26701 suppressFlash: !event.update,
26702 newData: !event.update
26703 });
26704 });
26705 // check for selected also, as this could be after lazy loading of the row data, in which case
26706 // the id might of just gotten set inside the row and the row selected state may of changed
26707 // as a result. this is what happens when selected rows are loaded in virtual pagination.
26708 // - niall note - since moving to the stub component, this may no longer be true, as replacing
26709 // the stub component now replaces the entire row
26710 this.onRowSelected();
26711 // as data has changed, then the style and class needs to be recomputed
26712 this.postProcessCss();
26713 };
26714 RowCtrl.prototype.onRowNodeCellChanged = function () {
26715 // as data has changed, then the style and class needs to be recomputed
26716 this.postProcessCss();
26717 };
26718 RowCtrl.prototype.postProcessCss = function () {
26719 this.setStylesFromGridOptions();
26720 this.postProcessClassesFromGridOptions();
26721 this.postProcessRowClassRules();
26722 this.postProcessRowDragging();
26723 };
26724 RowCtrl.prototype.onRowNodeHighlightChanged = function () {
26725 var highlighted = this.rowNode.highlighted;
26726 this.allRowGuis.forEach(function (gui) {
26727 var aboveOn = highlighted === _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowHighlightPosition"].Above;
26728 var belowOn = highlighted === _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowHighlightPosition"].Below;
26729 gui.rowComp.addOrRemoveCssClass('ag-row-highlight-above', aboveOn);
26730 gui.rowComp.addOrRemoveCssClass('ag-row-highlight-below', belowOn);
26731 });
26732 };
26733 RowCtrl.prototype.onRowNodeDraggingChanged = function () {
26734 this.postProcessRowDragging();
26735 };
26736 RowCtrl.prototype.postProcessRowDragging = function () {
26737 var dragging = this.rowNode.dragging;
26738 this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-row-dragging', dragging); });
26739 };
26740 RowCtrl.prototype.updateExpandedCss = function () {
26741 var expandable = this.rowNode.isExpandable();
26742 var expanded = this.rowNode.expanded == true;
26743 this.allRowGuis.forEach(function (gui) {
26744 gui.rowComp.addOrRemoveCssClass('ag-row-group', expandable);
26745 gui.rowComp.addOrRemoveCssClass('ag-row-group-expanded', expandable && expanded);
26746 gui.rowComp.addOrRemoveCssClass('ag-row-group-contracted', expandable && !expanded);
26747 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_7__["setAriaExpanded"])(gui.element, expandable && expanded);
26748 });
26749 };
26750 RowCtrl.prototype.onDisplayedColumnsChanged = function () {
26751 // we skip animations for onDisplayedColumnChanged, as otherwise the client could remove columns and
26752 // then set data, and any old valueGetter's (ie from cols that were removed) would still get called.
26753 this.updateColumnLists(true);
26754 if (this.beans.columnModel.wasAutoRowHeightEverActive()) {
26755 this.rowNode.checkAutoHeights();
26756 }
26757 };
26758 RowCtrl.prototype.onVirtualColumnsChanged = function () {
26759 this.updateColumnLists();
26760 };
26761 RowCtrl.prototype.getRowPosition = function () {
26762 return {
26763 rowPinned: Object(_utils_generic__WEBPACK_IMPORTED_MODULE_11__["makeNull"])(this.rowNode.rowPinned),
26764 rowIndex: this.rowNode.rowIndex
26765 };
26766 };
26767 RowCtrl.prototype.onKeyboardNavigate = function (keyboardEvent) {
26768 var currentFullWidthComp = this.allRowGuis.find(function (c) { return c.element.contains(keyboardEvent.target); });
26769 var currentFullWidthContainer = currentFullWidthComp ? currentFullWidthComp.element : null;
26770 var isFullWidthContainerFocused = currentFullWidthContainer === keyboardEvent.target;
26771 if (!isFullWidthContainerFocused) {
26772 return;
26773 }
26774 var node = this.rowNode;
26775 var lastFocusedCell = this.beans.focusService.getFocusedCell();
26776 var cellPosition = {
26777 rowIndex: node.rowIndex,
26778 rowPinned: node.rowPinned,
26779 column: (lastFocusedCell && lastFocusedCell.column)
26780 };
26781 this.beans.navigationService.navigateToNextCell(keyboardEvent, keyboardEvent.key, cellPosition, true);
26782 keyboardEvent.preventDefault();
26783 };
26784 RowCtrl.prototype.onTabKeyDown = function (keyboardEvent) {
26785 if (keyboardEvent.defaultPrevented || Object(_utils_event__WEBPACK_IMPORTED_MODULE_9__["isStopPropagationForAgGrid"])(keyboardEvent)) {
26786 return;
26787 }
26788 var currentFullWidthComp = this.allRowGuis.find(function (c) { return c.element.contains(keyboardEvent.target); });
26789 var currentFullWidthContainer = currentFullWidthComp ? currentFullWidthComp.element : null;
26790 var isFullWidthContainerFocused = currentFullWidthContainer === keyboardEvent.target;
26791 var nextEl = null;
26792 if (!isFullWidthContainerFocused) {
26793 nextEl = this.beans.focusService.findNextFocusableElement(currentFullWidthContainer, false, keyboardEvent.shiftKey);
26794 }
26795 if ((this.isFullWidth() && isFullWidthContainerFocused) || !nextEl) {
26796 this.beans.navigationService.onTabKeyDown(this, keyboardEvent);
26797 }
26798 };
26799 RowCtrl.prototype.onFullWidthRowFocused = function (event) {
26800 var _a;
26801 var node = this.rowNode;
26802 var isFocused = this.isFullWidth() && event.rowIndex === node.rowIndex && event.rowPinned == node.rowPinned;
26803 var element = this.fullWidthGui ? this.fullWidthGui.element : (_a = this.centerGui) === null || _a === void 0 ? void 0 : _a.element;
26804 if (!element) {
26805 return;
26806 } // can happen with react ui, comp not yet ready
26807 element.classList.toggle('ag-full-width-focus', isFocused);
26808 if (isFocused) {
26809 // we don't scroll normal rows into view when we focus them, so we don't want
26810 // to scroll Full Width rows either.
26811 element.focus({ preventScroll: true });
26812 }
26813 };
26814 RowCtrl.prototype.refreshCell = function (cellCtrl) {
26815 this.centerCellCtrls = this.removeCellCtrl(this.centerCellCtrls, cellCtrl);
26816 this.leftCellCtrls = this.removeCellCtrl(this.leftCellCtrls, cellCtrl);
26817 this.rightCellCtrls = this.removeCellCtrl(this.rightCellCtrls, cellCtrl);
26818 this.updateColumnLists();
26819 };
26820 RowCtrl.prototype.removeCellCtrl = function (prev, cellCtrlToRemove) {
26821 var res = {
26822 list: [],
26823 map: {}
26824 };
26825 prev.list.forEach(function (cellCtrl) {
26826 if (cellCtrl === cellCtrlToRemove) {
26827 return;
26828 }
26829 res.list.push(cellCtrl);
26830 res.map[cellCtrl.getInstanceId()] = cellCtrl;
26831 });
26832 return res;
26833 };
26834 RowCtrl.prototype.onMouseEvent = function (eventName, mouseEvent) {
26835 switch (eventName) {
26836 case 'dblclick':
26837 this.onRowDblClick(mouseEvent);
26838 break;
26839 case 'click':
26840 this.onRowClick(mouseEvent);
26841 break;
26842 case 'touchstart':
26843 case 'mousedown':
26844 this.onRowMouseDown(mouseEvent);
26845 break;
26846 }
26847 };
26848 RowCtrl.prototype.createRowEvent = function (type, domEvent) {
26849 return {
26850 type: type,
26851 node: this.rowNode,
26852 data: this.rowNode.data,
26853 rowIndex: this.rowNode.rowIndex,
26854 rowPinned: this.rowNode.rowPinned,
26855 context: this.beans.gridOptionsWrapper.getContext(),
26856 api: this.beans.gridOptionsWrapper.getApi(),
26857 columnApi: this.beans.gridOptionsWrapper.getColumnApi(),
26858 event: domEvent
26859 };
26860 };
26861 RowCtrl.prototype.createRowEventWithSource = function (type, domEvent) {
26862 var event = this.createRowEvent(type, domEvent);
26863 // when first developing this, we included the rowComp in the event.
26864 // this seems very weird. so when introducing the event types, i left the 'source'
26865 // out of the type, and just include the source in the two places where this event
26866 // was fired (rowClicked and rowDoubleClicked). it doesn't make sense for any
26867 // users to be using this, as the rowComp isn't an object we expose, so would be
26868 // very surprising if a user was using it.
26869 event.source = this;
26870 return event;
26871 };
26872 RowCtrl.prototype.onRowDblClick = function (mouseEvent) {
26873 if (Object(_utils_event__WEBPACK_IMPORTED_MODULE_9__["isStopPropagationForAgGrid"])(mouseEvent)) {
26874 return;
26875 }
26876 var agEvent = this.createRowEventWithSource(_events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_ROW_DOUBLE_CLICKED, mouseEvent);
26877 this.beans.eventService.dispatchEvent(agEvent);
26878 };
26879 RowCtrl.prototype.onRowMouseDown = function (mouseEvent) {
26880 this.lastMouseDownOnDragger = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_8__["isElementChildOfClass"])(mouseEvent.target, 'ag-row-drag', 3);
26881 if (!this.isFullWidth()) {
26882 return;
26883 }
26884 var node = this.rowNode;
26885 var columnModel = this.beans.columnModel;
26886 this.beans.focusService.setFocusedCell(node.rowIndex, columnModel.getAllDisplayedColumns()[0], node.rowPinned, true);
26887 };
26888 RowCtrl.prototype.onRowClick = function (mouseEvent) {
26889 var stop = Object(_utils_event__WEBPACK_IMPORTED_MODULE_9__["isStopPropagationForAgGrid"])(mouseEvent) || this.lastMouseDownOnDragger;
26890 if (stop) {
26891 return;
26892 }
26893 var agEvent = this.createRowEventWithSource(_events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_ROW_CLICKED, mouseEvent);
26894 this.beans.eventService.dispatchEvent(agEvent);
26895 // ctrlKey for windows, metaKey for Apple
26896 var multiSelectKeyPressed = mouseEvent.ctrlKey || mouseEvent.metaKey;
26897 var shiftKeyPressed = mouseEvent.shiftKey;
26898 // we do not allow selecting the group by clicking, when groupSelectChildren, as the logic to
26899 // handle this is broken. to observe, change the logic below and allow groups to be selected.
26900 // you will see the group gets selected, then all children get selected, then the grid unselects
26901 // the children (as the default behaviour when clicking is to unselect other rows) which results
26902 // in the group getting unselected (as all children are unselected). the correct thing would be
26903 // to change this, so that children of the selected group are not then subsequenly un-selected.
26904 var groupSelectsChildren = this.beans.gridOptionsWrapper.isGroupSelectsChildren();
26905 if (
26906 // we do not allow selecting groups by clicking (as the click here expands the group), or if it's a detail row,
26907 // so return if it's a group row
26908 (groupSelectsChildren && this.rowNode.group) ||
26909 // this is needed so we don't unselect other rows when we click this row, eg if this row is not selectable,
26910 // and we click it, the selection should not change (ie any currently selected row should stay selected)
26911 !this.rowNode.selectable ||
26912 // we also don't allow selection of pinned rows
26913 this.rowNode.rowPinned ||
26914 // if no selection method enabled, do nothing
26915 !this.beans.gridOptionsWrapper.isRowSelection() ||
26916 // if click selection suppressed, do nothing
26917 this.beans.gridOptionsWrapper.isSuppressRowClickSelection()) {
26918 return;
26919 }
26920 var multiSelectOnClick = this.beans.gridOptionsWrapper.isRowMultiSelectWithClick();
26921 var rowDeselectionWithCtrl = !this.beans.gridOptionsWrapper.isSuppressRowDeselection();
26922 if (this.rowNode.isSelected()) {
26923 if (multiSelectOnClick) {
26924 this.rowNode.setSelectedParams({ newValue: false });
26925 }
26926 else if (multiSelectKeyPressed) {
26927 if (rowDeselectionWithCtrl) {
26928 this.rowNode.setSelectedParams({ newValue: false });
26929 }
26930 }
26931 else {
26932 // selected with no multi key, must make sure anything else is unselected
26933 this.rowNode.setSelectedParams({ newValue: true, clearSelection: !shiftKeyPressed, rangeSelect: shiftKeyPressed });
26934 }
26935 }
26936 else {
26937 var clearSelection = multiSelectOnClick ? false : !multiSelectKeyPressed;
26938 this.rowNode.setSelectedParams({ newValue: true, clearSelection: clearSelection, rangeSelect: shiftKeyPressed });
26939 }
26940 };
26941 RowCtrl.prototype.setupDetailRowAutoHeight = function (eDetailGui) {
26942 var _this = this;
26943 if (this.rowType !== RowType.FullWidthDetail) {
26944 return;
26945 }
26946 if (!this.beans.gridOptionsWrapper.isDetailRowAutoHeight()) {
26947 return;
26948 }
26949 var checkRowSizeFunc = function () {
26950 var clientHeight = eDetailGui.clientHeight;
26951 // if the UI is not ready, the height can be 0, which we ignore, as otherwise a flicker will occur
26952 // as UI goes from the default height, to 0, then to the real height as UI becomes ready. this means
26953 // it's not possible for have 0 as auto-height, however this is an improbable use case, as even an
26954 // empty detail grid would still have some styling around it giving at least a few pixels.
26955 if (clientHeight != null && clientHeight > 0) {
26956 // we do the update in a timeout, to make sure we are not calling from inside the grid
26957 // doing another update
26958 var updateRowHeightFunc = function () {
26959 _this.rowNode.setRowHeight(clientHeight);
26960 if (_this.beans.clientSideRowModel) {
26961 _this.beans.clientSideRowModel.onRowHeightChanged();
26962 }
26963 else if (_this.beans.serverSideRowModel) {
26964 _this.beans.serverSideRowModel.onRowHeightChanged();
26965 }
26966 };
26967 _this.beans.frameworkOverrides.setTimeout(updateRowHeightFunc, 0);
26968 }
26969 };
26970 var resizeObserverDestroyFunc = this.beans.resizeObserverService.observeResize(eDetailGui, checkRowSizeFunc);
26971 this.addDestroyFunc(resizeObserverDestroyFunc);
26972 checkRowSizeFunc();
26973 };
26974 RowCtrl.prototype.createFullWidthParams = function (eRow, pinned) {
26975 var _this = this;
26976 var params = {
26977 fullWidth: true,
26978 data: this.rowNode.data,
26979 node: this.rowNode,
26980 value: this.rowNode.key,
26981 valueFormatted: this.rowNode.key,
26982 rowIndex: this.rowNode.rowIndex,
26983 api: this.beans.gridOptionsWrapper.getApi(),
26984 columnApi: this.beans.gridOptionsWrapper.getColumnApi(),
26985 context: this.beans.gridOptionsWrapper.getContext(),
26986 // these need to be taken out, as part of 'afterAttached' now
26987 eGridCell: eRow,
26988 eParentOfValue: eRow,
26989 pinned: pinned,
26990 addRenderedRowListener: this.addEventListener.bind(this),
26991 registerRowDragger: function (rowDraggerElement, dragStartPixels, value, suppressVisibilityChange) { return _this.addFullWidthRowDragging(rowDraggerElement, dragStartPixels, value, suppressVisibilityChange); }
26992 };
26993 return params;
26994 };
26995 RowCtrl.prototype.addFullWidthRowDragging = function (rowDraggerElement, dragStartPixels, value, suppressVisibilityChange) {
26996 if (value === void 0) { value = ''; }
26997 if (!this.isFullWidth()) {
26998 return;
26999 }
27000 var rowDragComp = new _rowDragComp__WEBPACK_IMPORTED_MODULE_14__["RowDragComp"](function () { return value; }, this.rowNode, undefined, rowDraggerElement, dragStartPixels, suppressVisibilityChange);
27001 this.createManagedBean(rowDragComp, this.beans.context);
27002 };
27003 RowCtrl.prototype.onUiLevelChanged = function () {
27004 var newLevel = this.beans.rowCssClassCalculator.calculateRowLevel(this.rowNode);
27005 if (this.rowLevel != newLevel) {
27006 var classToAdd_1 = 'ag-row-level-' + newLevel;
27007 var classToRemove_1 = 'ag-row-level-' + this.rowLevel;
27008 this.allRowGuis.forEach(function (gui) {
27009 gui.rowComp.addOrRemoveCssClass(classToAdd_1, true);
27010 gui.rowComp.addOrRemoveCssClass(classToRemove_1, false);
27011 });
27012 }
27013 this.rowLevel = newLevel;
27014 };
27015 RowCtrl.prototype.isFirstRowOnPage = function () {
27016 return this.rowNode.rowIndex === this.beans.paginationProxy.getPageFirstRow();
27017 };
27018 RowCtrl.prototype.isLastRowOnPage = function () {
27019 return this.rowNode.rowIndex === this.beans.paginationProxy.getPageLastRow();
27020 };
27021 RowCtrl.prototype.onModelUpdated = function () {
27022 this.refreshFirstAndLastRowStyles();
27023 };
27024 RowCtrl.prototype.refreshFirstAndLastRowStyles = function () {
27025 var newFirst = this.isFirstRowOnPage();
27026 var newLast = this.isLastRowOnPage();
27027 if (this.firstRowOnPage !== newFirst) {
27028 this.firstRowOnPage = newFirst;
27029 this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-row-first', newFirst); });
27030 }
27031 if (this.lastRowOnPage !== newLast) {
27032 this.lastRowOnPage = newLast;
27033 this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-row-last', newLast); });
27034 }
27035 };
27036 RowCtrl.prototype.stopEditing = function (cancel) {
27037 if (cancel === void 0) { cancel = false; }
27038 var cellEdits = this.getAllCellCtrls().map(function (cellCtrl) { return cellCtrl.stopEditing(cancel); });
27039 if (!this.editingRow) {
27040 return;
27041 }
27042 if (!cancel && cellEdits.some(function (edit) { return edit; })) {
27043 var event_1 = this.createRowEvent(_events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_ROW_VALUE_CHANGED);
27044 this.beans.eventService.dispatchEvent(event_1);
27045 }
27046 this.setEditingRow(false);
27047 };
27048 RowCtrl.prototype.setInlineEditingCss = function (editing) {
27049 this.allRowGuis.forEach(function (gui) {
27050 gui.rowComp.addOrRemoveCssClass("ag-row-inline-editing", editing);
27051 gui.rowComp.addOrRemoveCssClass("ag-row-not-inline-editing", !editing);
27052 });
27053 };
27054 RowCtrl.prototype.setEditingRow = function (value) {
27055 this.editingRow = value;
27056 this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-row-editing', value); });
27057 var event = value ?
27058 this.createRowEvent(_events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_ROW_EDITING_STARTED)
27059 : this.createRowEvent(_events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_ROW_EDITING_STOPPED);
27060 this.beans.eventService.dispatchEvent(event);
27061 };
27062 RowCtrl.prototype.startRowEditing = function (key, charPress, sourceRenderedCell, event) {
27063 if (key === void 0) { key = null; }
27064 if (charPress === void 0) { charPress = null; }
27065 if (sourceRenderedCell === void 0) { sourceRenderedCell = null; }
27066 if (event === void 0) { event = null; }
27067 // don't do it if already editing
27068 if (this.editingRow) {
27069 return;
27070 }
27071 this.getAllCellCtrls().forEach(function (cellCtrl) {
27072 var cellStartedEdit = cellCtrl === sourceRenderedCell;
27073 if (cellStartedEdit) {
27074 cellCtrl.startEditing(key, charPress, cellStartedEdit, event);
27075 }
27076 else {
27077 cellCtrl.startEditing(null, null, cellStartedEdit, event);
27078 }
27079 });
27080 this.setEditingRow(true);
27081 };
27082 RowCtrl.prototype.getAllCellCtrls = function () {
27083 var res = __spread(this.centerCellCtrls.list, this.leftCellCtrls.list, this.rightCellCtrls.list);
27084 return res;
27085 };
27086 RowCtrl.prototype.postProcessClassesFromGridOptions = function () {
27087 var _this = this;
27088 var cssClasses = this.beans.rowCssClassCalculator.processClassesFromGridOptions(this.rowNode);
27089 if (!cssClasses || !cssClasses.length) {
27090 return;
27091 }
27092 cssClasses.forEach(function (classStr) {
27093 _this.allRowGuis.forEach(function (c) { return c.rowComp.addOrRemoveCssClass(classStr, true); });
27094 });
27095 };
27096 RowCtrl.prototype.postProcessRowClassRules = function () {
27097 var _this = this;
27098 this.beans.rowCssClassCalculator.processRowClassRules(this.rowNode, function (className) {
27099 _this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass(className, true); });
27100 }, function (className) {
27101 _this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass(className, false); });
27102 });
27103 };
27104 RowCtrl.prototype.setStylesFromGridOptions = function () {
27105 var rowStyles = this.processStylesFromGridOptions();
27106 this.allRowGuis.forEach(function (gui) { return gui.rowComp.setUserStyles(rowStyles); });
27107 };
27108 RowCtrl.prototype.getRowBusinessKey = function () {
27109 var businessKeyForNodeFunc = this.beans.gridOptionsWrapper.getBusinessKeyForNodeFunc();
27110 if (typeof businessKeyForNodeFunc !== 'function') {
27111 return;
27112 }
27113 return businessKeyForNodeFunc(this.rowNode);
27114 };
27115 RowCtrl.prototype.getPinnedForContainer = function (rowContainerType) {
27116 var pinned = rowContainerType === _gridBodyComp_rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_4__["RowContainerType"].LEFT ? _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_LEFT :
27117 rowContainerType === _gridBodyComp_rowContainer_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_4__["RowContainerType"].RIGHT ? _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_RIGHT : null;
27118 return pinned;
27119 };
27120 RowCtrl.prototype.getInitialRowClasses = function (rowContainerType) {
27121 var pinned = this.getPinnedForContainer(rowContainerType);
27122 var params = {
27123 rowNode: this.rowNode,
27124 rowFocused: this.rowFocused,
27125 fadeRowIn: this.fadeRowIn,
27126 rowIsEven: this.rowNode.rowIndex % 2 === 0,
27127 rowLevel: this.rowLevel,
27128 fullWidthRow: this.isFullWidth(),
27129 firstRowOnPage: this.isFirstRowOnPage(),
27130 lastRowOnPage: this.isLastRowOnPage(),
27131 printLayout: this.printLayout,
27132 expandable: this.rowNode.isExpandable(),
27133 pinned: pinned
27134 };
27135 return this.beans.rowCssClassCalculator.getInitialRowClasses(params);
27136 };
27137 RowCtrl.prototype.processStylesFromGridOptions = function () {
27138 // part 1 - rowStyle
27139 var rowStyle = this.beans.gridOptionsWrapper.getRowStyle();
27140 if (rowStyle && typeof rowStyle === 'function') {
27141 console.warn('AG Grid: rowStyle should be an object of key/value styles, not be a function, use getRowStyle() instead');
27142 return;
27143 }
27144 // part 1 - rowStyleFunc
27145 var rowStyleFunc = this.beans.gridOptionsWrapper.getRowStyleFunc();
27146 var rowStyleFuncResult;
27147 if (rowStyleFunc) {
27148 var params = {
27149 data: this.rowNode.data,
27150 node: this.rowNode,
27151 rowIndex: this.rowNode.rowIndex
27152 };
27153 rowStyleFuncResult = rowStyleFunc(params);
27154 }
27155 return Object.assign({}, rowStyle, rowStyleFuncResult);
27156 };
27157 RowCtrl.prototype.onRowSelected = function () {
27158 var _this = this;
27159 // Treat undefined as false, if we pass undefined down it gets treated as toggle class, rather than explicitly
27160 // setting the required value
27161 var selected = !!this.rowNode.isSelected();
27162 this.allRowGuis.forEach(function (gui) {
27163 gui.rowComp.addOrRemoveCssClass('ag-row-selected', selected);
27164 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_7__["setAriaSelected"])(gui.element, selected ? true : undefined);
27165 var ariaLabel = _this.createAriaLabel();
27166 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_7__["setAriaLabel"])(gui.element, ariaLabel == null ? '' : ariaLabel);
27167 });
27168 };
27169 RowCtrl.prototype.createAriaLabel = function () {
27170 var selected = this.rowNode.isSelected();
27171 if (selected && this.beans.gridOptionsWrapper.isSuppressRowDeselection()) {
27172 return undefined;
27173 }
27174 var translate = this.beans.gridOptionsWrapper.getLocaleTextFunc();
27175 var label = translate(selected ? 'ariaRowDeselect' : 'ariaRowSelect', "Press SPACE to " + (selected ? 'deselect' : 'select') + " this row.");
27176 return label;
27177 };
27178 RowCtrl.prototype.isUseAnimationFrameForCreate = function () {
27179 return this.useAnimationFrameForCreate;
27180 };
27181 RowCtrl.prototype.addHoverFunctionality = function (eRow) {
27182 var _this = this;
27183 // because we use animation frames to do this, it's possible the row no longer exists
27184 // by the time we get to add it
27185 if (!this.active) {
27186 return;
27187 }
27188 // because mouseenter and mouseleave do not propagate, we cannot listen on the gridPanel
27189 // like we do for all the other mouse events.
27190 // because of the pinning, we cannot simply add / remove the class based on the eRow. we
27191 // have to check all eRow's (body & pinned). so the trick is if any of the rows gets a
27192 // mouse hover, it sets such in the rowNode, and then all three reflect the change as
27193 // all are listening for event on the row node.
27194 // step 1 - add listener, to set flag on row node
27195 this.addManagedListener(eRow, 'mouseenter', function () { return _this.rowNode.onMouseEnter(); });
27196 this.addManagedListener(eRow, 'mouseleave', function () { return _this.rowNode.onMouseLeave(); });
27197 // step 2 - listen for changes on row node (which any eRow can trigger)
27198 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_MOUSE_ENTER, function () {
27199 // if hover turned off, we don't add the class. we do this here so that if the application
27200 // toggles this property mid way, we remove the hover form the last row, but we stop
27201 // adding hovers from that point onwards.
27202 if (!_this.beans.gridOptionsWrapper.isSuppressRowHoverHighlight()) {
27203 eRow.classList.add('ag-row-hover');
27204 }
27205 });
27206 this.addManagedListener(this.rowNode, _entities_rowNode__WEBPACK_IMPORTED_MODULE_2__["RowNode"].EVENT_MOUSE_LEAVE, function () {
27207 eRow.classList.remove('ag-row-hover');
27208 });
27209 };
27210 // for animation, we don't want to animate entry or exit to a very far away pixel,
27211 // otherwise the row would move so fast, it would appear to disappear. so this method
27212 // moves the row closer to the viewport if it is far away, so the row slide in / out
27213 // at a speed the user can see.
27214 RowCtrl.prototype.roundRowTopToBounds = function (rowTop) {
27215 var gridBodyCon = this.beans.ctrlsService.getGridBodyCtrl();
27216 var range = gridBodyCon.getScrollFeature().getVScrollPosition();
27217 var minPixel = this.applyPaginationOffset(range.top, true) - 100;
27218 var maxPixel = this.applyPaginationOffset(range.bottom, true) + 100;
27219 return Math.min(Math.max(minPixel, rowTop), maxPixel);
27220 };
27221 RowCtrl.prototype.getFrameworkOverrides = function () {
27222 return this.beans.frameworkOverrides;
27223 };
27224 RowCtrl.prototype.onRowHeightChanged = function () {
27225 // check for exists first - if the user is resetting the row height, then
27226 // it will be null (or undefined) momentarily until the next time the flatten
27227 // stage is called where the row will then update again with a new height
27228 if (this.rowNode.rowHeight == null) {
27229 return;
27230 }
27231 var rowHeight = this.rowNode.rowHeight;
27232 var defaultRowHeight = this.beans.gridOptionsWrapper.getDefaultRowHeight();
27233 var isHeightFromFunc = this.beans.gridOptionsWrapper.isGetRowHeightFunction();
27234 var heightFromFunc = isHeightFromFunc ? this.beans.gridOptionsWrapper.getRowHeightForNode(this.rowNode).height : undefined;
27235 var lineHeight = heightFromFunc ? Math.min(defaultRowHeight, heightFromFunc) - 2 + "px" : undefined;
27236 this.allRowGuis.forEach(function (gui) {
27237 gui.element.style.height = rowHeight + "px";
27238 // If the row height is coming from a function, this means some rows can
27239 // be smaller than the theme had intended. so we set --ag-line-height on
27240 // the row, which is picked up by the theme CSS and is used in a calc
27241 // for the CSS line-height property, which makes sure the line-height is
27242 // not bigger than the row height, otherwise the row text would not fit.
27243 // We do not use rowNode.rowHeight here, as this could be the result of autoHeight,
27244 // and we found using the autoHeight result causes a loop, where changing the
27245 // line-height them impacts the cell height, resulting in a new autoHeight,
27246 // resulting in a new line-height and so on loop.
27247 // const heightFromFunc = this.beans.gridOptionsWrapper.getRowHeightForNode(this.rowNode).height;
27248 if (lineHeight) {
27249 gui.element.style.setProperty('--ag-line-height', lineHeight);
27250 }
27251 });
27252 };
27253 RowCtrl.prototype.addEventListener = function (eventType, listener) {
27254 if (eventType === 'renderedRowRemoved' || eventType === 'rowRemoved') {
27255 eventType = _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_VIRTUAL_ROW_REMOVED;
27256 console.warn('AG Grid: Since version 11, event renderedRowRemoved is now called ' + _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_VIRTUAL_ROW_REMOVED);
27257 }
27258 _super.prototype.addEventListener.call(this, eventType, listener);
27259 };
27260 RowCtrl.prototype.removeEventListener = function (eventType, listener) {
27261 if (eventType === 'renderedRowRemoved' || eventType === 'rowRemoved') {
27262 eventType = _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_VIRTUAL_ROW_REMOVED;
27263 console.warn('AG Grid: Since version 11, event renderedRowRemoved and rowRemoved is now called ' + _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_VIRTUAL_ROW_REMOVED);
27264 }
27265 _super.prototype.removeEventListener.call(this, eventType, listener);
27266 };
27267 // note - this is NOT called by context, as we don't wire / unwire the CellComp for performance reasons.
27268 RowCtrl.prototype.destroyFirstPass = function () {
27269 this.active = false;
27270 // why do we have this method? shouldn't everything below be added as a destroy func beside
27271 // the corresponding create logic?
27272 this.setupRemoveAnimation();
27273 var event = this.createRowEvent(_events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_VIRTUAL_ROW_REMOVED);
27274 this.dispatchEvent(event);
27275 this.beans.eventService.dispatchEvent(event);
27276 _super.prototype.destroy.call(this);
27277 };
27278 RowCtrl.prototype.setupRemoveAnimation = function () {
27279 var rowStillVisibleJustNotInViewport = this.rowNode.rowTop != null;
27280 if (rowStillVisibleJustNotInViewport) {
27281 // if the row is not rendered, but in viewport, it means it has moved,
27282 // so we animate the row out. if the new location is very far away,
27283 // the animation will be so fast the row will look like it's just disappeared,
27284 // so instead we animate to a position just outside the viewport.
27285 var rowTop = this.roundRowTopToBounds(this.rowNode.rowTop);
27286 this.setRowTop(rowTop);
27287 }
27288 else {
27289 this.allRowGuis.forEach(function (gui) { return gui.rowComp.addOrRemoveCssClass('ag-opacity-zero', true); });
27290 }
27291 };
27292 RowCtrl.prototype.destroySecondPass = function () {
27293 this.allRowGuis.length = 0;
27294 var destroyCellCtrls = function (ctrls) {
27295 ctrls.list.forEach(function (c) { return c.destroy(); });
27296 return { list: [], map: {} };
27297 };
27298 this.centerCellCtrls = destroyCellCtrls(this.centerCellCtrls);
27299 this.leftCellCtrls = destroyCellCtrls(this.leftCellCtrls);
27300 this.rightCellCtrls = destroyCellCtrls(this.rightCellCtrls);
27301 };
27302 RowCtrl.prototype.setFocusedClasses = function () {
27303 var _this = this;
27304 this.allRowGuis.forEach(function (gui) {
27305 gui.rowComp.addOrRemoveCssClass('ag-row-focus', _this.rowFocused);
27306 gui.rowComp.addOrRemoveCssClass('ag-row-no-focus', !_this.rowFocused);
27307 });
27308 };
27309 RowCtrl.prototype.onCellFocusChanged = function () {
27310 var rowFocused = this.beans.focusService.isRowFocused(this.rowNode.rowIndex, this.rowNode.rowPinned);
27311 if (rowFocused !== this.rowFocused) {
27312 this.rowFocused = rowFocused;
27313 this.setFocusedClasses();
27314 }
27315 // if we are editing, then moving the focus out of a row will stop editing
27316 if (!rowFocused && this.editingRow) {
27317 this.stopEditing(false);
27318 }
27319 };
27320 RowCtrl.prototype.onPaginationChanged = function () {
27321 var currentPage = this.beans.paginationProxy.getCurrentPage();
27322 // it is possible this row is in the new page, but the page number has changed, which means
27323 // it needs to reposition itself relative to the new page
27324 if (this.paginationPage !== currentPage) {
27325 this.paginationPage = currentPage;
27326 this.onTopChanged();
27327 }
27328 this.refreshFirstAndLastRowStyles();
27329 };
27330 RowCtrl.prototype.onTopChanged = function () {
27331 this.setRowTop(this.rowNode.rowTop);
27332 };
27333 RowCtrl.prototype.onPaginationPixelOffsetChanged = function () {
27334 // the pixel offset is used when calculating rowTop to set on the row DIV
27335 this.onTopChanged();
27336 };
27337 // applies pagination offset, eg if on second page, and page height is 500px, then removes
27338 // 500px from the top position, so a row with rowTop 600px is displayed at location 100px.
27339 // reverse will take the offset away rather than add.
27340 RowCtrl.prototype.applyPaginationOffset = function (topPx, reverse) {
27341 if (reverse === void 0) { reverse = false; }
27342 if (this.rowNode.isRowPinned()) {
27343 return topPx;
27344 }
27345 var pixelOffset = this.beans.paginationProxy.getPixelOffset();
27346 var multiplier = reverse ? 1 : -1;
27347 return topPx + (pixelOffset * multiplier);
27348 };
27349 RowCtrl.prototype.setRowTop = function (pixels) {
27350 // print layout uses normal flow layout for row positioning
27351 if (this.printLayout) {
27352 return;
27353 }
27354 // need to make sure rowTop is not null, as this can happen if the node was once
27355 // visible (ie parent group was expanded) but is now not visible
27356 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_11__["exists"])(pixels)) {
27357 var afterPaginationPixels = this.applyPaginationOffset(pixels);
27358 var afterScalingPixels = this.rowNode.isRowPinned() ? afterPaginationPixels : this.beans.rowContainerHeightService.getRealPixelPosition(afterPaginationPixels);
27359 var topPx = afterScalingPixels + "px";
27360 this.setRowTopStyle(topPx);
27361 }
27362 };
27363 RowCtrl.prototype.getInitialRowTop = function () {
27364 return this.initialTop;
27365 };
27366 RowCtrl.prototype.getInitialTransform = function () {
27367 return this.initialTransform;
27368 };
27369 RowCtrl.prototype.setInitialRowTop = function () {
27370 // print layout uses normal flow layout for row positioning
27371 if (this.printLayout) {
27372 return '';
27373 }
27374 // if sliding in, we take the old row top. otherwise we just set the current row top.
27375 var pixels = this.slideRowIn ? this.roundRowTopToBounds(this.rowNode.oldRowTop) : this.rowNode.rowTop;
27376 var afterPaginationPixels = this.applyPaginationOffset(pixels);
27377 // we don't apply scaling if row is pinned
27378 var afterScalingPixels = this.rowNode.isRowPinned() ? afterPaginationPixels : this.beans.rowContainerHeightService.getRealPixelPosition(afterPaginationPixels);
27379 var res = afterScalingPixels + 'px';
27380 var suppressRowTransform = this.beans.gridOptionsWrapper.isSuppressRowTransform();
27381 if (suppressRowTransform) {
27382 this.initialTop = res;
27383 }
27384 else {
27385 this.initialTransform = "translateY(" + res + ")";
27386 }
27387 };
27388 RowCtrl.prototype.setRowTopStyle = function (topPx) {
27389 var suppressRowTransform = this.beans.gridOptionsWrapper.isSuppressRowTransform();
27390 this.allRowGuis.forEach(function (gui) { return suppressRowTransform ?
27391 gui.rowComp.setTop(topPx) :
27392 gui.rowComp.setTransform("translateY(" + topPx + ")"); });
27393 };
27394 RowCtrl.prototype.getRowNode = function () {
27395 return this.rowNode;
27396 };
27397 RowCtrl.prototype.getCellCtrl = function (column) {
27398 // first up, check for cell directly linked to this column
27399 var res = null;
27400 this.getAllCellCtrls().forEach(function (cellCtrl) {
27401 if (cellCtrl.getColumn() == column) {
27402 res = cellCtrl;
27403 }
27404 });
27405 if (res != null) {
27406 return res;
27407 }
27408 // second up, if not found, then check for spanned cols.
27409 // we do this second (and not at the same time) as this is
27410 // more expensive, as spanning cols is a
27411 // infrequently used feature so we don't need to do this most
27412 // of the time
27413 this.getAllCellCtrls().forEach(function (cellCtrl) {
27414 if (cellCtrl.getColSpanningList().indexOf(column) >= 0) {
27415 res = cellCtrl;
27416 }
27417 });
27418 return res;
27419 };
27420 RowCtrl.prototype.onRowIndexChanged = function () {
27421 // we only bother updating if the rowIndex is present. if it is not present, it means this row
27422 // is child of a group node, and the group node was closed, it's the only way to have no row index.
27423 // when this happens, row is about to be de-rendered, so we don't care, rowComp is about to die!
27424 if (this.rowNode.rowIndex != null) {
27425 this.onCellFocusChanged();
27426 this.updateRowIndexes();
27427 this.postProcessCss();
27428 }
27429 };
27430 RowCtrl.prototype.updateRowIndexes = function () {
27431 var rowIndexStr = this.rowNode.getRowIndexString();
27432 var headerRowCount = this.beans.headerNavigationService.getHeaderRowCount();
27433 var rowIsEven = this.rowNode.rowIndex % 2 === 0;
27434 var ariaRowIndex = headerRowCount + this.rowNode.rowIndex + 1;
27435 this.allRowGuis.forEach(function (c) {
27436 c.rowComp.setRowIndex(rowIndexStr);
27437 c.rowComp.addOrRemoveCssClass('ag-row-even', rowIsEven);
27438 c.rowComp.addOrRemoveCssClass('ag-row-odd', !rowIsEven);
27439 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_7__["setAriaRowIndex"])(c.element, ariaRowIndex);
27440 });
27441 };
27442 // returns the pinned left container, either the normal one, or the embedded full with one if exists
27443 RowCtrl.prototype.getPinnedLeftRowElement = function () {
27444 return this.leftGui ? this.leftGui.element : undefined;
27445 };
27446 // returns the pinned right container, either the normal one, or the embedded full with one if exists
27447 RowCtrl.prototype.getPinnedRightRowElement = function () {
27448 return this.rightGui ? this.rightGui.element : undefined;
27449 };
27450 // returns the body container, either the normal one, or the embedded full with one if exists
27451 RowCtrl.prototype.getBodyRowElement = function () {
27452 return this.centerGui ? this.centerGui.element : undefined;
27453 };
27454 // returns the full width container
27455 RowCtrl.prototype.getFullWidthRowElement = function () {
27456 return this.fullWidthGui ? this.fullWidthGui.element : undefined;
27457 };
27458 RowCtrl.DOM_DATA_KEY_ROW_CTRL = 'renderedRow';
27459 return RowCtrl;
27460}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
27461
27462
27463
27464
27465
27466/***/ }),
27467/* 121 */
27468/***/ (function(module, __webpack_exports__, __webpack_require__) {
27469
27470"use strict";
27471__webpack_require__.r(__webpack_exports__);
27472/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CellCtrl", function() { return CellCtrl; });
27473/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(23);
27474/* harmony import */ var _cellRangeFeature__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(122);
27475/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
27476/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20);
27477/* harmony import */ var _cellPositionFeature__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(124);
27478/* harmony import */ var _utils_string__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(26);
27479/* harmony import */ var _cellCustomStyleFeature__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(125);
27480/* harmony import */ var _widgets_tooltipFeature__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(126);
27481/* harmony import */ var _cellMouseListenerFeature__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(127);
27482/* harmony import */ var _cellKeyboardListenerFeature__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(129);
27483/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(65);
27484/* harmony import */ var _checkboxSelectionComponent__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(95);
27485/* harmony import */ var _dndSourceComp__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(130);
27486/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(14);
27487/* harmony import */ var _row_rowDragComp__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(96);
27488/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(13);
27489/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(42);
27490/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(44);
27491/**
27492 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
27493 * @version v27.3.0
27494 * @link https://www.ag-grid.com/
27495 * @license MIT
27496 */
27497var __extends = (undefined && undefined.__extends) || (function () {
27498 var extendStatics = function (d, b) {
27499 extendStatics = Object.setPrototypeOf ||
27500 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
27501 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
27502 return extendStatics(d, b);
27503 };
27504 return function (d, b) {
27505 extendStatics(d, b);
27506 function __() { this.constructor = d; }
27507 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
27508 };
27509})();
27510var __assign = (undefined && undefined.__assign) || function () {
27511 __assign = Object.assign || function(t) {
27512 for (var s, i = 1, n = arguments.length; i < n; i++) {
27513 s = arguments[i];
27514 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
27515 t[p] = s[p];
27516 }
27517 return t;
27518 };
27519 return __assign.apply(this, arguments);
27520};
27521
27522
27523
27524
27525
27526
27527
27528
27529
27530
27531
27532
27533
27534
27535
27536
27537
27538
27539var CSS_CELL = 'ag-cell';
27540var CSS_AUTO_HEIGHT = 'ag-cell-auto-height';
27541var CSS_NORMAL_HEIGHT = 'ag-cell-normal-height';
27542var CSS_CELL_FOCUS = 'ag-cell-focus';
27543var CSS_CELL_FIRST_RIGHT_PINNED = 'ag-cell-first-right-pinned';
27544var CSS_CELL_LAST_LEFT_PINNED = 'ag-cell-last-left-pinned';
27545var CSS_CELL_NOT_INLINE_EDITING = 'ag-cell-not-inline-editing';
27546var CSS_CELL_INLINE_EDITING = 'ag-cell-inline-editing';
27547var CSS_CELL_POPUP_EDITING = 'ag-cell-popup-editing';
27548var CSS_COLUMN_HOVER = 'ag-column-hover';
27549var CSS_CELL_WRAP_TEXT = 'ag-cell-wrap-text';
27550var instanceIdSequence = 0;
27551var CellCtrl = /** @class */ (function (_super) {
27552 __extends(CellCtrl, _super);
27553 function CellCtrl(column, rowNode, beans, rowCtrl) {
27554 var _this = _super.call(this) || this;
27555 _this.suppressRefreshCell = false;
27556 _this.column = column;
27557 _this.rowNode = rowNode;
27558 _this.beans = beans;
27559 _this.rowCtrl = rowCtrl;
27560 // unique id to this instance, including the column ID to help with debugging in React as it's used in 'key'
27561 _this.instanceId = column.getId() + '-' + instanceIdSequence++;
27562 _this.createCellPosition();
27563 _this.addFeatures();
27564 return _this;
27565 }
27566 CellCtrl.prototype.addFeatures = function () {
27567 var _this = this;
27568 this.cellPositionFeature = new _cellPositionFeature__WEBPACK_IMPORTED_MODULE_4__["CellPositionFeature"](this, this.beans);
27569 this.addDestroyFunc(function () { return _this.cellPositionFeature.destroy(); });
27570 this.cellCustomStyleFeature = new _cellCustomStyleFeature__WEBPACK_IMPORTED_MODULE_6__["CellCustomStyleFeature"](this, this.beans);
27571 this.addDestroyFunc(function () { return _this.cellCustomStyleFeature.destroy(); });
27572 this.cellMouseListenerFeature = new _cellMouseListenerFeature__WEBPACK_IMPORTED_MODULE_8__["CellMouseListenerFeature"](this, this.beans, this.column);
27573 this.addDestroyFunc(function () { return _this.cellMouseListenerFeature.destroy(); });
27574 this.cellKeyboardListenerFeature = new _cellKeyboardListenerFeature__WEBPACK_IMPORTED_MODULE_9__["CellKeyboardListenerFeature"](this, this.beans, this.column, this.rowNode, this.rowCtrl);
27575 this.addDestroyFunc(function () { return _this.cellKeyboardListenerFeature.destroy(); });
27576 var rangeSelectionEnabled = this.beans.rangeService && this.beans.gridOptionsWrapper.isEnableRangeSelection();
27577 if (rangeSelectionEnabled) {
27578 this.cellRangeFeature = new _cellRangeFeature__WEBPACK_IMPORTED_MODULE_1__["CellRangeFeature"](this.beans, this);
27579 this.addDestroyFunc(function () { return _this.cellRangeFeature.destroy(); });
27580 }
27581 this.addTooltipFeature();
27582 };
27583 CellCtrl.prototype.addTooltipFeature = function () {
27584 var _this = this;
27585 var getTooltipValue = function () {
27586 var colDef = _this.column.getColDef();
27587 var data = _this.rowNode.data;
27588 if (colDef.tooltipField && Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(data)) {
27589 return Object(_utils_object__WEBPACK_IMPORTED_MODULE_15__["getValueUsingField"])(data, colDef.tooltipField, _this.column.isTooltipFieldContainsDots());
27590 }
27591 var valueGetter = colDef.tooltipValueGetter;
27592 if (valueGetter) {
27593 return valueGetter({
27594 location: 'cell',
27595 api: _this.beans.gridOptionsWrapper.getApi(),
27596 columnApi: _this.beans.gridOptionsWrapper.getColumnApi(),
27597 context: _this.beans.gridOptionsWrapper.getContext(),
27598 colDef: _this.column.getColDef(),
27599 column: _this.column,
27600 rowIndex: _this.cellPosition.rowIndex,
27601 node: _this.rowNode,
27602 data: _this.rowNode.data,
27603 value: _this.value,
27604 valueFormatted: _this.valueFormatted,
27605 });
27606 }
27607 return null;
27608 };
27609 var tooltipCtrl = {
27610 getColumn: function () { return _this.column; },
27611 getColDef: function () { return _this.column.getColDef(); },
27612 getRowIndex: function () { return _this.cellPosition.rowIndex; },
27613 getRowNode: function () { return _this.rowNode; },
27614 getGui: function () { return _this.getGui(); },
27615 getLocation: function () { return 'cell'; },
27616 getTooltipValue: getTooltipValue,
27617 // this makes no sense, why is the cell formatted value passed to the tooltip???
27618 getValueFormatted: function () { return _this.valueFormatted; }
27619 };
27620 this.tooltipFeature = new _widgets_tooltipFeature__WEBPACK_IMPORTED_MODULE_7__["TooltipFeature"](tooltipCtrl, this.beans);
27621 this.addDestroyFunc(function () { return _this.tooltipFeature.destroy(); });
27622 };
27623 CellCtrl.prototype.setComp = function (comp, eGui, eCellWrapper, printLayout, startEditing) {
27624 this.cellComp = comp;
27625 this.gow = this.beans.gridOptionsWrapper;
27626 this.eGui = eGui;
27627 this.eCellWrapper = eCellWrapper;
27628 this.printLayout = printLayout;
27629 // we force to make sure formatter gets called at least once,
27630 // even if value has not changed (is is undefined)
27631 this.updateAndFormatValue(true);
27632 this.addDomData();
27633 this.onCellFocused();
27634 this.applyStaticCssClasses();
27635 this.setWrapText();
27636 this.onFirstRightPinnedChanged();
27637 this.onLastLeftPinnedChanged();
27638 this.onColumnHover();
27639 this.setupControlComps();
27640 this.setupAutoHeight();
27641 this.setAriaColIndex();
27642 if (!this.gow.isSuppressCellFocus()) {
27643 this.cellComp.setTabIndex(-1);
27644 }
27645 var colIdSanitised = Object(_utils_string__WEBPACK_IMPORTED_MODULE_5__["escapeString"])(this.column.getId());
27646 this.cellComp.setColId(colIdSanitised);
27647 this.cellComp.setRole('gridcell');
27648 this.cellPositionFeature.setComp(eGui);
27649 this.cellCustomStyleFeature.setComp(comp);
27650 this.tooltipFeature.setComp(comp);
27651 this.cellKeyboardListenerFeature.setComp(this.eGui);
27652 if (this.cellRangeFeature) {
27653 this.cellRangeFeature.setComp(comp, eGui);
27654 }
27655 if (startEditing && this.isCellEditable()) {
27656 this.startEditing();
27657 }
27658 else {
27659 this.showValue();
27660 }
27661 };
27662 CellCtrl.prototype.setupAutoHeight = function () {
27663 var _this = this;
27664 if (!this.column.isAutoHeight()) {
27665 return;
27666 }
27667 var eAutoHeightContainer = this.eCellWrapper;
27668 var eParentCell = eAutoHeightContainer.parentElement;
27669 // taking minRowHeight from getRowHeightForNode means the getRowHeight() callback is used,
27670 // thus allowing different min heights for different rows.
27671 var minRowHeight = this.beans.gridOptionsWrapper.getRowHeightForNode(this.rowNode).height;
27672 var measureHeight = function (timesCalled) {
27673 if (_this.editing) {
27674 return;
27675 }
27676 // because of the retry's below, it's possible the retry's go beyond
27677 // the rows life.
27678 if (!_this.isAlive()) {
27679 return;
27680 }
27681 var _a = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_16__["getElementSize"])(eParentCell), paddingTop = _a.paddingTop, paddingBottom = _a.paddingBottom;
27682 var wrapperHeight = eAutoHeightContainer.offsetHeight;
27683 var autoHeight = wrapperHeight + paddingTop + paddingBottom;
27684 if (timesCalled < 5) {
27685 // if not in doc yet, means framework not yet inserted, so wait for next VM turn,
27686 // maybe it will be ready next VM turn
27687 var doc = _this.beans.gridOptionsWrapper.getDocument();
27688 var notYetInDom = !doc || !doc.contains(eAutoHeightContainer);
27689 // this happens in React, where React hasn't put any content in. we say 'possibly'
27690 // as a) may not be React and b) the cell could be empty anyway
27691 var possiblyNoContentYet = autoHeight == 0;
27692 if (notYetInDom || possiblyNoContentYet) {
27693 _this.beans.frameworkOverrides.setTimeout(function () { return measureHeight(timesCalled + 1); }, 0);
27694 return;
27695 }
27696 }
27697 var newHeight = Math.max(autoHeight, minRowHeight);
27698 _this.rowNode.setRowAutoHeight(newHeight, _this.column);
27699 };
27700 var listener = function () { return measureHeight(0); };
27701 // do once to set size in case size doesn't change, common when cell is blank
27702 listener();
27703 var destroyResizeObserver = this.beans.resizeObserverService.observeResize(eAutoHeightContainer, listener);
27704 this.addDestroyFunc(function () {
27705 destroyResizeObserver();
27706 _this.rowNode.setRowAutoHeight(undefined, _this.column);
27707 });
27708 };
27709 CellCtrl.prototype.getInstanceId = function () {
27710 return this.instanceId;
27711 };
27712 CellCtrl.prototype.showValue = function (forceNewCellRendererInstance) {
27713 if (forceNewCellRendererInstance === void 0) { forceNewCellRendererInstance = false; }
27714 var valueToDisplay = this.valueFormatted != null ? this.valueFormatted : this.value;
27715 var params = this.createCellRendererParams();
27716 var compDetails = this.beans.userComponentFactory.getCellRendererDetails(this.column.getColDef(), params);
27717 this.cellComp.setRenderDetails(compDetails, valueToDisplay, forceNewCellRendererInstance);
27718 this.refreshHandle();
27719 };
27720 CellCtrl.prototype.setupControlComps = function () {
27721 var colDef = this.column.getColDef();
27722 this.includeSelection = this.isIncludeControl(colDef.checkboxSelection);
27723 this.includeRowDrag = this.isIncludeControl(colDef.rowDrag);
27724 this.includeDndSource = this.isIncludeControl(colDef.dndSource);
27725 this.cellComp.setIncludeSelection(this.includeSelection);
27726 this.cellComp.setIncludeDndSource(this.includeDndSource);
27727 this.cellComp.setIncludeRowDrag(this.includeRowDrag);
27728 };
27729 CellCtrl.prototype.isForceWrapper = function () {
27730 // text selection requires the value to be wrapped in another element
27731 var forceWrapper = this.beans.gridOptionsWrapper.isEnableCellTextSelection() || this.column.isAutoHeight();
27732 return forceWrapper;
27733 };
27734 CellCtrl.prototype.isIncludeControl = function (value) {
27735 var rowNodePinned = this.rowNode.rowPinned != null;
27736 var isFunc = typeof value === 'function';
27737 var res = rowNodePinned ? false : isFunc || value === true;
27738 return res;
27739 };
27740 CellCtrl.prototype.refreshShouldDestroy = function () {
27741 var colDef = this.column.getColDef();
27742 var selectionChanged = this.includeSelection != this.isIncludeControl(colDef.checkboxSelection);
27743 var rowDragChanged = this.includeRowDrag != this.isIncludeControl(colDef.rowDrag);
27744 var dndSourceChanged = this.includeDndSource != this.isIncludeControl(colDef.dndSource);
27745 return selectionChanged || rowDragChanged || dndSourceChanged;
27746 };
27747 // either called internally if single cell editing, or called by rowRenderer if row editing
27748 CellCtrl.prototype.startEditing = function (key, charPress, cellStartedEdit, event) {
27749 if (key === void 0) { key = null; }
27750 if (charPress === void 0) { charPress = null; }
27751 if (cellStartedEdit === void 0) { cellStartedEdit = false; }
27752 if (event === void 0) { event = null; }
27753 var _a, _b;
27754 if (!this.isCellEditable() || this.editing) {
27755 return;
27756 }
27757 var editorParams = this.createCellEditorParams(key, charPress, cellStartedEdit);
27758 var colDef = this.column.getColDef();
27759 var compDetails = this.beans.userComponentFactory.getCellEditorDetails(colDef, editorParams);
27760 // if cellEditorSelector was used, we give preference to popup and popupPosition from the selector
27761 var popup = ((_a = compDetails) === null || _a === void 0 ? void 0 : _a.popupFromSelector) != null ? compDetails.popupFromSelector : !!colDef.cellEditorPopup;
27762 var position = ((_b = compDetails) === null || _b === void 0 ? void 0 : _b.popupPositionFromSelector) != null ? compDetails.popupPositionFromSelector : colDef.cellEditorPopupPosition;
27763 this.setEditing(true, popup);
27764 this.cellComp.setEditDetails(compDetails, popup, position);
27765 var e = this.createEvent(event, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_CELL_EDITING_STARTED);
27766 this.beans.eventService.dispatchEvent(e);
27767 };
27768 CellCtrl.prototype.setEditing = function (editing, inPopup) {
27769 if (inPopup === void 0) { inPopup = false; }
27770 if (this.editing === editing) {
27771 return;
27772 }
27773 this.editing = editing;
27774 this.editingInPopup = inPopup;
27775 this.setInlineEditingClass();
27776 };
27777 // pass in 'true' to cancel the editing.
27778 CellCtrl.prototype.stopRowOrCellEdit = function (cancel) {
27779 if (cancel === void 0) { cancel = false; }
27780 if (this.beans.gridOptionsWrapper.isFullRowEdit()) {
27781 this.rowCtrl.stopRowEditing(cancel);
27782 }
27783 else {
27784 this.stopEditing(cancel);
27785 }
27786 };
27787 CellCtrl.prototype.onPopupEditorClosed = function () {
27788 if (!this.isEditing()) {
27789 return;
27790 }
27791 // note: this happens because of a click outside of the grid or if the popupEditor
27792 // is closed with `Escape` key. if another cell was clicked, then the editing will
27793 // have already stopped and returned on the conditional above.
27794 this.stopEditingAndFocus();
27795 };
27796 CellCtrl.prototype.takeValueFromCellEditor = function (cancel) {
27797 var noValueResult = { newValueExists: false };
27798 if (cancel) {
27799 return noValueResult;
27800 }
27801 var cellEditor = this.cellComp.getCellEditor();
27802 if (!cellEditor) {
27803 return noValueResult;
27804 }
27805 var userWantsToCancel = cellEditor.isCancelAfterEnd && cellEditor.isCancelAfterEnd();
27806 if (userWantsToCancel) {
27807 return noValueResult;
27808 }
27809 var newValue = cellEditor.getValue();
27810 return {
27811 newValue: newValue,
27812 newValueExists: true
27813 };
27814 };
27815 /**
27816 * @returns `True` if the value changes, otherwise `False`.
27817 */
27818 CellCtrl.prototype.saveNewValue = function (oldValue, newValue) {
27819 if (newValue === oldValue) {
27820 return false;
27821 }
27822 if (this.beans.gridOptionsWrapper.isReadOnlyEdit()) {
27823 this.dispatchEventForSaveValueReadOnly(oldValue, newValue);
27824 return false;
27825 }
27826 // we suppressRefreshCell because the call to rowNode.setDataValue() results in change detection
27827 // getting triggered, which results in all cells getting refreshed. we do not want this refresh
27828 // to happen on this call as we want to call it explicitly below. otherwise refresh gets called twice.
27829 // if we only did this refresh (and not the one below) then the cell would flash and not be forced.
27830 this.suppressRefreshCell = true;
27831 var valueChanged = this.rowNode.setDataValue(this.column, newValue);
27832 this.suppressRefreshCell = false;
27833 return valueChanged;
27834 };
27835 CellCtrl.prototype.dispatchEventForSaveValueReadOnly = function (oldValue, newValue) {
27836 var rowNode = this.rowNode;
27837 var event = {
27838 type: _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_CELL_EDIT_REQUEST,
27839 event: null,
27840 rowIndex: rowNode.rowIndex,
27841 rowPinned: rowNode.rowPinned,
27842 column: this.column,
27843 api: this.beans.gridApi,
27844 columnApi: this.beans.columnApi,
27845 colDef: this.column.getColDef(),
27846 context: this.beans.gridOptionsWrapper.getContext(),
27847 data: rowNode.data,
27848 node: rowNode,
27849 oldValue: oldValue,
27850 newValue: newValue,
27851 value: newValue,
27852 source: undefined
27853 };
27854 this.beans.eventService.dispatchEvent(event);
27855 };
27856 /**
27857 * Ends the Cell Editing
27858 * @param cancel `True` if the edit process is being canceled.
27859 * @returns `True` if the value of the `GridCell` has been updated, otherwise `False`.
27860 */
27861 CellCtrl.prototype.stopEditing = function (cancel) {
27862 if (cancel === void 0) { cancel = false; }
27863 if (!this.editing) {
27864 return false;
27865 }
27866 var _a = this.takeValueFromCellEditor(cancel), newValue = _a.newValue, newValueExists = _a.newValueExists;
27867 var oldValue = this.getValueFromValueService();
27868 var valueChanged = false;
27869 if (newValueExists) {
27870 valueChanged = this.saveNewValue(oldValue, newValue);
27871 }
27872 this.setEditing(false);
27873 this.cellComp.setEditDetails(); // passing nothing stops editing
27874 this.updateAndFormatValue();
27875 this.refreshCell({ forceRefresh: true, suppressFlash: true });
27876 this.dispatchEditingStoppedEvent(oldValue, newValue);
27877 return valueChanged;
27878 };
27879 CellCtrl.prototype.dispatchEditingStoppedEvent = function (oldValue, newValue) {
27880 var editingStoppedEvent = __assign(__assign({}, this.createEvent(null, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_CELL_EDITING_STOPPED)), { oldValue: oldValue,
27881 newValue: newValue });
27882 this.beans.eventService.dispatchEvent(editingStoppedEvent);
27883 };
27884 // if we are editing inline, then we don't have the padding in the cell (set in the themes)
27885 // to allow the text editor full access to the entire cell
27886 CellCtrl.prototype.setInlineEditingClass = function () {
27887 if (!this.isAlive()) {
27888 return;
27889 }
27890 // ag-cell-inline-editing - appears when user is inline editing
27891 // ag-cell-not-inline-editing - appears when user is no inline editing
27892 // ag-cell-popup-editing - appears when user is editing cell in popup (appears on the cell, not on the popup)
27893 // note: one of {ag-cell-inline-editing, ag-cell-not-inline-editing} is always present, they toggle.
27894 // however {ag-cell-popup-editing} shows when popup, so you have both {ag-cell-popup-editing}
27895 // and {ag-cell-not-inline-editing} showing at the same time.
27896 var editingInline = this.editing && !this.editingInPopup;
27897 var popupEditorShowing = this.editing && this.editingInPopup;
27898 this.cellComp.addOrRemoveCssClass(CSS_CELL_INLINE_EDITING, editingInline);
27899 this.cellComp.addOrRemoveCssClass(CSS_CELL_NOT_INLINE_EDITING, !editingInline);
27900 this.cellComp.addOrRemoveCssClass(CSS_CELL_POPUP_EDITING, popupEditorShowing);
27901 this.rowCtrl.setInlineEditingCss(this.editing);
27902 };
27903 // this is needed as the JS CellComp still allows isPopup() on the CellEditor class, so
27904 // it's possible the editor is in a popup even though it's not configured via the colDef as so
27905 CellCtrl.prototype.hackSayEditingInPopup = function () {
27906 if (this.editingInPopup) {
27907 return;
27908 }
27909 this.editingInPopup = true;
27910 this.setInlineEditingClass();
27911 };
27912 CellCtrl.prototype.createCellEditorParams = function (key, charPress, cellStartedEdit) {
27913 var res = {
27914 value: this.getValueFromValueService(),
27915 key: key,
27916 eventKey: key,
27917 charPress: charPress,
27918 column: this.column,
27919 colDef: this.column.getColDef(),
27920 rowIndex: this.getCellPosition().rowIndex,
27921 node: this.rowNode,
27922 data: this.rowNode.data,
27923 api: this.beans.gridOptionsWrapper.getApi(),
27924 cellStartedEdit: cellStartedEdit,
27925 columnApi: this.beans.gridOptionsWrapper.getColumnApi(),
27926 context: this.beans.gridOptionsWrapper.getContext(),
27927 onKeyDown: this.onKeyDown.bind(this),
27928 stopEditing: this.stopEditingAndFocus.bind(this),
27929 eGridCell: this.getGui(),
27930 parseValue: this.parseValue.bind(this),
27931 formatValue: this.formatValue.bind(this)
27932 };
27933 return res;
27934 };
27935 CellCtrl.prototype.createCellRendererParams = function () {
27936 var _this = this;
27937 var addRowCompListener = function (eventType, listener) {
27938 console.warn('AG Grid: since AG Grid v26, params.addRowCompListener() is deprecated. If you need this functionality, please contact AG Grid support and advise why so that we can revert with an appropriate workaround, as we dont have any valid use cases for it. This method was originally provided as a work around to know when cells were destroyed in AG Grid before custom Cell Renderers could be provided.');
27939 _this.rowCtrl.addEventListener(eventType, listener);
27940 };
27941 var res = {
27942 value: this.value,
27943 valueFormatted: this.valueFormatted,
27944 getValue: this.getValueFromValueService.bind(this),
27945 setValue: function (value) { return _this.beans.valueService.setValue(_this.rowNode, _this.column, value); },
27946 formatValue: this.formatValue.bind(this),
27947 data: this.rowNode.data,
27948 node: this.rowNode,
27949 colDef: this.column.getColDef(),
27950 column: this.column,
27951 rowIndex: this.getCellPosition().rowIndex,
27952 api: this.beans.gridOptionsWrapper.getApi(),
27953 columnApi: this.beans.gridOptionsWrapper.getColumnApi(),
27954 context: this.beans.gridOptionsWrapper.getContext(),
27955 refreshCell: this.refreshCell.bind(this),
27956 eGridCell: this.getGui(),
27957 eParentOfValue: this.cellComp.getParentOfValue(),
27958 registerRowDragger: function (rowDraggerElement, dragStartPixels, value, suppressVisibilityChange) { return _this.registerRowDragger(rowDraggerElement, dragStartPixels, suppressVisibilityChange); },
27959 // this function is not documented anywhere, so we could drop it
27960 // it was in the olden days to allow user to register for when rendered
27961 // row was removed (the row comp was removed), however now that the user
27962 // can provide components for cells, the destroy method gets call when this
27963 // happens so no longer need to fire event.
27964 addRowCompListener: addRowCompListener
27965 };
27966 return res;
27967 };
27968 CellCtrl.prototype.parseValue = function (newValue) {
27969 var colDef = this.column.getColDef();
27970 var params = {
27971 node: this.rowNode,
27972 data: this.rowNode.data,
27973 oldValue: this.getValue(),
27974 newValue: newValue,
27975 colDef: colDef,
27976 column: this.column,
27977 api: this.beans.gridOptionsWrapper.getApi(),
27978 columnApi: this.beans.gridOptionsWrapper.getColumnApi(),
27979 context: this.beans.gridOptionsWrapper.getContext()
27980 };
27981 var valueParser = colDef.valueParser;
27982 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(valueParser) ? this.beans.expressionService.evaluate(valueParser, params) : newValue;
27983 };
27984 CellCtrl.prototype.setFocusOutOnEditor = function () {
27985 if (!this.editing) {
27986 return;
27987 }
27988 var cellEditor = this.cellComp.getCellEditor();
27989 if (cellEditor && cellEditor.focusOut) {
27990 cellEditor.focusOut();
27991 }
27992 };
27993 CellCtrl.prototype.setFocusInOnEditor = function () {
27994 if (!this.editing) {
27995 return;
27996 }
27997 var cellEditor = this.cellComp.getCellEditor();
27998 if (cellEditor && cellEditor.focusIn) {
27999 // if the editor is present, then we just focus it
28000 cellEditor.focusIn();
28001 }
28002 else {
28003 // if the editor is not present, it means async cell editor (eg React fibre)
28004 // and we are trying to set focus before the cell editor is present, so we
28005 // focus the cell instead
28006 this.focusCell(true);
28007 }
28008 };
28009 CellCtrl.prototype.onCellChanged = function (event) {
28010 // because of async in React, the cellComp may not be set yet, if no cellComp then we are
28011 // yet to initialise the cell, so no need to refresh.
28012 if (!this.cellComp) {
28013 return;
28014 }
28015 var eventImpactsThisCell = event.column === this.column;
28016 if (eventImpactsThisCell) {
28017 this.refreshCell({});
28018 }
28019 };
28020 // + stop editing {forceRefresh: true, suppressFlash: true}
28021 // + event cellChanged {}
28022 // + cellRenderer.params.refresh() {} -> method passes 'as is' to the cellRenderer, so params could be anything
28023 // + rowCtrl: event dataChanged {suppressFlash: !update, newData: !update}
28024 // + rowCtrl: api refreshCells() {animate: true/false}
28025 // + rowRenderer: api softRefreshView() {}
28026 CellCtrl.prototype.refreshCell = function (params) {
28027 // if we are in the middle of 'stopEditing', then we don't refresh here, as refresh gets called explicitly
28028 if (this.suppressRefreshCell || this.editing) {
28029 return;
28030 }
28031 // In React, due to async, it's possible a refresh was asked for before the CellComp
28032 // has been set. If this happens, we skip the refresh, as the cell is going to be
28033 // initialised anyway once the CellComp is set.
28034 if (!this.cellComp) {
28035 return;
28036 }
28037 var colDef = this.column.getColDef();
28038 var newData = params != null && !!params.newData;
28039 var suppressFlash = (params != null && !!params.suppressFlash) || !!colDef.suppressCellFlash;
28040 // we always refresh if cell has no value - this can happen when user provides Cell Renderer and the
28041 // cell renderer doesn't rely on a value, instead it could be looking directly at the data, or maybe
28042 // printing the current time (which would be silly)???. Generally speaking
28043 // non of {field, valueGetter, showRowGroup} is bad in the users application, however for this edge case, it's
28044 // best always refresh and take the performance hit rather than never refresh and users complaining in support
28045 // that cells are not updating.
28046 var noValueProvided = colDef.field == null && colDef.valueGetter == null && colDef.showRowGroup == null;
28047 var forceRefresh = (params && params.forceRefresh) || noValueProvided || newData;
28048 var valuesDifferent = this.updateAndFormatValue();
28049 var dataNeedsUpdating = forceRefresh || valuesDifferent;
28050 if (dataNeedsUpdating) {
28051 // if it's 'new data', then we don't refresh the cellRenderer, even if refresh method is available.
28052 // this is because if the whole data is new (ie we are showing stock price 'BBA' now and not 'SSD')
28053 // then we are not showing a movement in the stock price, rather we are showing different stock.
28054 this.showValue(newData);
28055 // we don't want to flash the cells when processing a filter change, as otherwise the UI would
28056 // be to busy. see comment in FilterManager with regards processingFilterChange
28057 var processingFilterChange = this.beans.filterManager.isSuppressFlashingCellsBecauseFiltering();
28058 var flashCell = !suppressFlash && !processingFilterChange &&
28059 (this.beans.gridOptionsWrapper.isEnableCellChangeFlash() || colDef.enableCellChangeFlash);
28060 if (flashCell) {
28061 this.flashCell();
28062 }
28063 this.cellCustomStyleFeature.applyUserStyles();
28064 this.cellCustomStyleFeature.applyClassesFromColDef();
28065 }
28066 this.refreshToolTip();
28067 // we do cellClassRules even if the value has not changed, so that users who have rules that
28068 // look at other parts of the row (where the other part of the row might of changed) will work.
28069 this.cellCustomStyleFeature.applyCellClassRules();
28070 };
28071 // cell editors call this, when they want to stop for reasons other
28072 // than what we pick up on. eg selecting from a dropdown ends editing.
28073 CellCtrl.prototype.stopEditingAndFocus = function (suppressNavigateAfterEdit) {
28074 if (suppressNavigateAfterEdit === void 0) { suppressNavigateAfterEdit = false; }
28075 this.stopRowOrCellEdit();
28076 this.focusCell(true);
28077 if (!suppressNavigateAfterEdit) {
28078 this.navigateAfterEdit();
28079 }
28080 };
28081 CellCtrl.prototype.navigateAfterEdit = function () {
28082 var fullRowEdit = this.beans.gridOptionsWrapper.isFullRowEdit();
28083 if (fullRowEdit) {
28084 return;
28085 }
28086 var enterMovesDownAfterEdit = this.beans.gridOptionsWrapper.isEnterMovesDownAfterEdit();
28087 if (enterMovesDownAfterEdit) {
28088 this.beans.navigationService.navigateToNextCell(null, _constants_keyCode__WEBPACK_IMPORTED_MODULE_10__["KeyCode"].DOWN, this.getCellPosition(), false);
28089 }
28090 };
28091 // user can also call this via API
28092 CellCtrl.prototype.flashCell = function (delays) {
28093 var flashDelay = delays && delays.flashDelay;
28094 var fadeDelay = delays && delays.fadeDelay;
28095 this.animateCell('data-changed', flashDelay, fadeDelay);
28096 };
28097 CellCtrl.prototype.animateCell = function (cssName, flashDelay, fadeDelay) {
28098 var _this = this;
28099 var fullName = "ag-cell-" + cssName;
28100 var animationFullName = "ag-cell-" + cssName + "-animation";
28101 var gridOptionsWrapper = this.beans.gridOptionsWrapper;
28102 if (!flashDelay) {
28103 flashDelay = gridOptionsWrapper.getCellFlashDelay();
28104 }
28105 if (!Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(fadeDelay)) {
28106 fadeDelay = gridOptionsWrapper.getCellFadeDelay();
28107 }
28108 // we want to highlight the cells, without any animation
28109 this.cellComp.addOrRemoveCssClass(fullName, true);
28110 this.cellComp.addOrRemoveCssClass(animationFullName, false);
28111 // then once that is applied, we remove the highlight with animation
28112 window.setTimeout(function () {
28113 _this.cellComp.addOrRemoveCssClass(fullName, false);
28114 _this.cellComp.addOrRemoveCssClass(animationFullName, true);
28115 _this.eGui.style.transition = "background-color " + fadeDelay + "ms";
28116 window.setTimeout(function () {
28117 // and then to leave things as we got them, we remove the animation
28118 _this.cellComp.addOrRemoveCssClass(animationFullName, false);
28119 _this.eGui.style.transition = '';
28120 }, fadeDelay);
28121 }, flashDelay);
28122 };
28123 CellCtrl.prototype.onFlashCells = function (event) {
28124 if (!this.cellComp) {
28125 return;
28126 }
28127 var cellId = this.beans.cellPositionUtils.createId(this.getCellPosition());
28128 var shouldFlash = event.cells[cellId];
28129 if (shouldFlash) {
28130 this.animateCell('highlight');
28131 }
28132 };
28133 CellCtrl.prototype.isCellEditable = function () {
28134 return this.column.isCellEditable(this.rowNode);
28135 };
28136 CellCtrl.prototype.isSuppressFillHandle = function () {
28137 return this.column.isSuppressFillHandle();
28138 };
28139 CellCtrl.prototype.formatValue = function (value) {
28140 var res = this.callValueFormatter(value);
28141 return res != null ? res : value;
28142 };
28143 CellCtrl.prototype.callValueFormatter = function (value) {
28144 return this.beans.valueFormatterService.formatValue(this.column, this.rowNode, value);
28145 };
28146 CellCtrl.prototype.updateAndFormatValue = function (force) {
28147 if (force === void 0) { force = false; }
28148 var oldValue = this.value;
28149 var oldValueFormatted = this.valueFormatted;
28150 this.value = this.getValueFromValueService();
28151 this.valueFormatted = this.callValueFormatter(this.value);
28152 var valuesDifferent = force ? true :
28153 !this.valuesAreEqual(oldValue, this.value) || this.valueFormatted != oldValueFormatted;
28154 return valuesDifferent;
28155 };
28156 CellCtrl.prototype.valuesAreEqual = function (val1, val2) {
28157 // if the user provided an equals method, use that, otherwise do simple comparison
28158 var colDef = this.column.getColDef();
28159 return colDef.equals ? colDef.equals(val1, val2) : val1 === val2;
28160 };
28161 CellCtrl.prototype.getComp = function () {
28162 return this.cellComp;
28163 };
28164 CellCtrl.prototype.getValueFromValueService = function () {
28165 // if we don't check this, then the grid will render leaf groups as open even if we are not
28166 // allowing the user to open leaf groups. confused? remember for pivot mode we don't allow
28167 // opening leaf groups, so we have to force leafGroups to be closed in case the user expanded
28168 // them via the API, or user user expanded them in the UI before turning on pivot mode
28169 var lockedClosedGroup = this.rowNode.leafGroup && this.beans.columnModel.isPivotMode();
28170 var isOpenGroup = this.rowNode.group && this.rowNode.expanded && !this.rowNode.footer && !lockedClosedGroup;
28171 // are we showing group footers
28172 var groupFootersEnabled = this.beans.gridOptionsWrapper.isGroupIncludeFooter();
28173 // if doing footers, we normally don't show agg data at group level when group is open
28174 var groupAlwaysShowAggData = this.beans.gridOptionsWrapper.isGroupSuppressBlankHeader();
28175 // if doing grouping and footers, we don't want to include the agg value
28176 // in the header when the group is open
28177 var ignoreAggData = (isOpenGroup && groupFootersEnabled) && !groupAlwaysShowAggData;
28178 var value = this.beans.valueService.getValue(this.column, this.rowNode, false, ignoreAggData);
28179 return value;
28180 };
28181 CellCtrl.prototype.getValue = function () {
28182 return this.value;
28183 };
28184 CellCtrl.prototype.getValueFormatted = function () {
28185 return this.valueFormatted;
28186 };
28187 CellCtrl.prototype.addDomData = function () {
28188 var _this = this;
28189 var element = this.getGui();
28190 this.beans.gridOptionsWrapper.setDomData(element, CellCtrl.DOM_DATA_KEY_CELL_CTRL, this);
28191 this.addDestroyFunc(function () { return _this.beans.gridOptionsWrapper.setDomData(element, CellCtrl.DOM_DATA_KEY_CELL_CTRL, null); });
28192 };
28193 CellCtrl.prototype.createEvent = function (domEvent, eventType) {
28194 var event = {
28195 type: eventType,
28196 node: this.rowNode,
28197 data: this.rowNode.data,
28198 value: this.value,
28199 column: this.column,
28200 colDef: this.column.getColDef(),
28201 context: this.beans.gridOptionsWrapper.getContext(),
28202 api: this.beans.gridApi,
28203 columnApi: this.beans.columnApi,
28204 rowPinned: this.rowNode.rowPinned,
28205 event: domEvent,
28206 rowIndex: this.rowNode.rowIndex
28207 };
28208 return event;
28209 };
28210 CellCtrl.prototype.onKeyPress = function (event) {
28211 this.cellKeyboardListenerFeature.onKeyPress(event);
28212 };
28213 CellCtrl.prototype.onKeyDown = function (event) {
28214 this.cellKeyboardListenerFeature.onKeyDown(event);
28215 };
28216 CellCtrl.prototype.onMouseEvent = function (eventName, mouseEvent) {
28217 this.cellMouseListenerFeature.onMouseEvent(eventName, mouseEvent);
28218 };
28219 CellCtrl.prototype.getGui = function () {
28220 return this.eGui;
28221 };
28222 CellCtrl.prototype.refreshToolTip = function () {
28223 this.tooltipFeature.refreshToolTip();
28224 };
28225 CellCtrl.prototype.getColSpanningList = function () {
28226 return this.cellPositionFeature.getColSpanningList();
28227 };
28228 CellCtrl.prototype.onLeftChanged = function () {
28229 if (!this.cellComp) {
28230 return;
28231 }
28232 this.cellPositionFeature.onLeftChanged();
28233 };
28234 CellCtrl.prototype.onDisplayedColumnsChanged = function () {
28235 if (!this.eGui) {
28236 return;
28237 }
28238 this.setAriaColIndex();
28239 };
28240 CellCtrl.prototype.setAriaColIndex = function () {
28241 var colIdx = this.beans.columnModel.getAriaColumnIndex(this.column);
28242 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_17__["setAriaColIndex"])(this.getGui(), colIdx); // for react, we don't use JSX, as it slowed down column moving
28243 };
28244 CellCtrl.prototype.isSuppressNavigable = function () {
28245 return this.column.isSuppressNavigable(this.rowNode);
28246 };
28247 CellCtrl.prototype.onWidthChanged = function () {
28248 return this.cellPositionFeature.onWidthChanged();
28249 };
28250 CellCtrl.prototype.getColumn = function () {
28251 return this.column;
28252 };
28253 CellCtrl.prototype.getRowNode = function () {
28254 return this.rowNode;
28255 };
28256 CellCtrl.prototype.getBeans = function () {
28257 return this.beans;
28258 };
28259 CellCtrl.prototype.isPrintLayout = function () {
28260 return this.printLayout;
28261 };
28262 CellCtrl.prototype.appendChild = function (htmlElement) {
28263 this.eGui.appendChild(htmlElement);
28264 };
28265 CellCtrl.prototype.refreshHandle = function () {
28266 if (this.editing) {
28267 return;
28268 }
28269 if (this.cellRangeFeature) {
28270 this.cellRangeFeature.refreshHandle();
28271 }
28272 };
28273 CellCtrl.prototype.getCellPosition = function () {
28274 return this.cellPosition;
28275 };
28276 CellCtrl.prototype.isEditing = function () {
28277 return this.editing;
28278 };
28279 // called by rowRenderer when user navigates via tab key
28280 CellCtrl.prototype.startRowOrCellEdit = function (key, charPress, event) {
28281 if (event === void 0) { event = null; }
28282 if (this.beans.gridOptionsWrapper.isFullRowEdit()) {
28283 this.rowCtrl.startRowEditing(key, charPress, this);
28284 }
28285 else {
28286 this.startEditing(key, charPress, true, event);
28287 }
28288 };
28289 CellCtrl.prototype.getRowCtrl = function () {
28290 return this.rowCtrl;
28291 };
28292 CellCtrl.prototype.getRowPosition = function () {
28293 return {
28294 rowIndex: this.cellPosition.rowIndex,
28295 rowPinned: this.cellPosition.rowPinned
28296 };
28297 };
28298 CellCtrl.prototype.updateRangeBordersIfRangeCount = function () {
28299 if (!this.cellComp) {
28300 return;
28301 }
28302 if (this.cellRangeFeature) {
28303 this.cellRangeFeature.updateRangeBordersIfRangeCount();
28304 }
28305 };
28306 CellCtrl.prototype.onRangeSelectionChanged = function () {
28307 if (!this.cellComp) {
28308 return;
28309 }
28310 if (this.cellRangeFeature) {
28311 this.cellRangeFeature.onRangeSelectionChanged();
28312 }
28313 };
28314 CellCtrl.prototype.isRangeSelectionEnabled = function () {
28315 return this.cellRangeFeature != null;
28316 };
28317 CellCtrl.prototype.focusCell = function (forceBrowserFocus) {
28318 if (forceBrowserFocus === void 0) { forceBrowserFocus = false; }
28319 this.beans.focusService.setFocusedCell(this.getCellPosition().rowIndex, this.column, this.rowNode.rowPinned, forceBrowserFocus);
28320 };
28321 CellCtrl.prototype.onRowIndexChanged = function () {
28322 // when index changes, this influences items that need the index, so we update the
28323 // grid cell so they are working off the new index.
28324 this.createCellPosition();
28325 // when the index of the row changes, ie means the cell may have lost or gained focus
28326 this.onCellFocused();
28327 // check range selection
28328 if (this.cellRangeFeature) {
28329 this.cellRangeFeature.onRangeSelectionChanged();
28330 }
28331 };
28332 CellCtrl.prototype.onFirstRightPinnedChanged = function () {
28333 if (!this.cellComp) {
28334 return;
28335 }
28336 var firstRightPinned = this.column.isFirstRightPinned();
28337 this.cellComp.addOrRemoveCssClass(CSS_CELL_FIRST_RIGHT_PINNED, firstRightPinned);
28338 };
28339 CellCtrl.prototype.onLastLeftPinnedChanged = function () {
28340 if (!this.cellComp) {
28341 return;
28342 }
28343 var lastLeftPinned = this.column.isLastLeftPinned();
28344 this.cellComp.addOrRemoveCssClass(CSS_CELL_LAST_LEFT_PINNED, lastLeftPinned);
28345 };
28346 CellCtrl.prototype.onCellFocused = function (event) {
28347 if (!this.cellComp || this.gow.isSuppressCellFocus()) {
28348 return;
28349 }
28350 var cellFocused = this.beans.focusService.isCellFocused(this.cellPosition);
28351 this.cellComp.addOrRemoveCssClass(CSS_CELL_FOCUS, cellFocused);
28352 // see if we need to force browser focus - this can happen if focus is programmatically set
28353 if (cellFocused && event && event.forceBrowserFocus) {
28354 var focusEl = this.cellComp.getFocusableElement();
28355 focusEl.focus();
28356 }
28357 // if another cell was focused, and we are editing, then stop editing
28358 var fullRowEdit = this.beans.gridOptionsWrapper.isFullRowEdit();
28359 if (!cellFocused && !fullRowEdit && this.editing) {
28360 this.stopRowOrCellEdit();
28361 }
28362 };
28363 CellCtrl.prototype.createCellPosition = function () {
28364 this.cellPosition = {
28365 rowIndex: this.rowNode.rowIndex,
28366 rowPinned: Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["makeNull"])(this.rowNode.rowPinned),
28367 column: this.column
28368 };
28369 };
28370 // CSS Classes that only get applied once, they never change
28371 CellCtrl.prototype.applyStaticCssClasses = function () {
28372 this.cellComp.addOrRemoveCssClass(CSS_CELL, true);
28373 this.cellComp.addOrRemoveCssClass(CSS_CELL_NOT_INLINE_EDITING, true);
28374 // normal cells fill the height of the row. autoHeight cells have no height to let them
28375 // fit the height of content.
28376 var autoHeight = this.column.isAutoHeight() == true;
28377 this.cellComp.addOrRemoveCssClass(CSS_AUTO_HEIGHT, autoHeight);
28378 this.cellComp.addOrRemoveCssClass(CSS_NORMAL_HEIGHT, !autoHeight);
28379 };
28380 CellCtrl.prototype.onColumnHover = function () {
28381 if (!this.cellComp) {
28382 return;
28383 }
28384 if (!this.beans.gridOptionsWrapper.isColumnHoverHighlight()) {
28385 return;
28386 }
28387 var isHovered = this.beans.columnHoverService.isHovered(this.column);
28388 this.cellComp.addOrRemoveCssClass(CSS_COLUMN_HOVER, isHovered);
28389 };
28390 CellCtrl.prototype.onNewColumnsLoaded = function () {
28391 if (!this.cellComp) {
28392 return;
28393 }
28394 this.setWrapText();
28395 if (!this.editing) {
28396 this.refreshCell({ forceRefresh: true, suppressFlash: true });
28397 }
28398 };
28399 CellCtrl.prototype.setWrapText = function () {
28400 var value = this.column.getColDef().wrapText == true;
28401 this.cellComp.addOrRemoveCssClass(CSS_CELL_WRAP_TEXT, value);
28402 };
28403 CellCtrl.prototype.dispatchCellContextMenuEvent = function (event) {
28404 var colDef = this.column.getColDef();
28405 var cellContextMenuEvent = this.createEvent(event, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_CELL_CONTEXT_MENU);
28406 this.beans.eventService.dispatchEvent(cellContextMenuEvent);
28407 if (colDef.onCellContextMenu) {
28408 // to make the callback async, do in a timeout
28409 window.setTimeout(function () { return colDef.onCellContextMenu(cellContextMenuEvent); }, 0);
28410 }
28411 };
28412 CellCtrl.prototype.getCellRenderer = function () {
28413 return this.cellComp ? this.cellComp.getCellRenderer() : null;
28414 };
28415 CellCtrl.prototype.getCellEditor = function () {
28416 return this.cellComp ? this.cellComp.getCellEditor() : null;
28417 };
28418 CellCtrl.prototype.destroy = function () {
28419 _super.prototype.destroy.call(this);
28420 };
28421 CellCtrl.prototype.createSelectionCheckbox = function () {
28422 var cbSelectionComponent = new _checkboxSelectionComponent__WEBPACK_IMPORTED_MODULE_11__["CheckboxSelectionComponent"]();
28423 this.beans.context.createBean(cbSelectionComponent);
28424 cbSelectionComponent.init({ rowNode: this.rowNode, column: this.column });
28425 // put the checkbox in before the value
28426 return cbSelectionComponent;
28427 };
28428 CellCtrl.prototype.createDndSource = function () {
28429 var dndSourceComp = new _dndSourceComp__WEBPACK_IMPORTED_MODULE_12__["DndSourceComp"](this.rowNode, this.column, this.beans, this.eGui);
28430 this.beans.context.createBean(dndSourceComp);
28431 return dndSourceComp;
28432 };
28433 CellCtrl.prototype.registerRowDragger = function (customElement, dragStartPixels, suppressVisibilityChange) {
28434 var _this = this;
28435 // if previously existed, then we are only updating
28436 if (this.customRowDragComp) {
28437 this.customRowDragComp.setDragElement(customElement, dragStartPixels);
28438 return;
28439 }
28440 var newComp = this.createRowDragComp(customElement, dragStartPixels, suppressVisibilityChange);
28441 if (newComp) {
28442 this.customRowDragComp = newComp;
28443 this.addDestroyFunc(function () { return _this.beans.context.destroyBean(newComp); });
28444 }
28445 };
28446 CellCtrl.prototype.createRowDragComp = function (customElement, dragStartPixels, suppressVisibilityChange) {
28447 var _this = this;
28448 var pagination = this.beans.gridOptionsWrapper.isPagination();
28449 var rowDragManaged = this.beans.gridOptionsWrapper.isRowDragManaged();
28450 var clientSideRowModelActive = this.beans.gridOptionsWrapper.isRowModelDefault();
28451 if (rowDragManaged) {
28452 // row dragging only available in default row model
28453 if (!clientSideRowModelActive) {
28454 Object(_utils_function__WEBPACK_IMPORTED_MODULE_13__["doOnce"])(function () { return console.warn('AG Grid: managed row dragging is only allowed in the Client Side Row Model'); }, 'CellComp.addRowDragging');
28455 return;
28456 }
28457 if (pagination) {
28458 Object(_utils_function__WEBPACK_IMPORTED_MODULE_13__["doOnce"])(function () { return console.warn('AG Grid: managed row dragging is not possible when doing pagination'); }, 'CellComp.addRowDragging');
28459 return;
28460 }
28461 }
28462 // otherwise (normal case) we are creating a RowDraggingComp for the first time
28463 var rowDragComp = new _row_rowDragComp__WEBPACK_IMPORTED_MODULE_14__["RowDragComp"](function () { return _this.value; }, this.rowNode, this.column, customElement, dragStartPixels, suppressVisibilityChange);
28464 this.beans.context.createBean(rowDragComp);
28465 return rowDragComp;
28466 };
28467 CellCtrl.DOM_DATA_KEY_CELL_CTRL = 'cellCtrl';
28468 return CellCtrl;
28469}(_context_beanStub__WEBPACK_IMPORTED_MODULE_3__["BeanStub"]));
28470
28471
28472
28473
28474
28475/***/ }),
28476/* 122 */
28477/***/ (function(module, __webpack_exports__, __webpack_require__) {
28478
28479"use strict";
28480__webpack_require__.r(__webpack_exports__);
28481/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CellRangeFeature", function() { return CellRangeFeature; });
28482/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(18);
28483/* harmony import */ var _interfaces_IRangeService__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(123);
28484/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
28485/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44);
28486/**
28487 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
28488 * @version v27.3.0
28489 * @link https://www.ag-grid.com/
28490 * @license MIT
28491 */
28492
28493
28494
28495
28496var CSS_CELL_RANGE_SELECTED = 'ag-cell-range-selected';
28497var CSS_CELL_RANGE_CHART = 'ag-cell-range-chart';
28498var CSS_CELL_RANGE_SINGLE_CELL = 'ag-cell-range-single-cell';
28499var CSS_CELL_RANGE_CHART_CATEGORY = 'ag-cell-range-chart-category';
28500var CSS_CELL_RANGE_HANDLE = 'ag-cell-range-handle';
28501var CSS_CELL_RANGE_TOP = 'ag-cell-range-top';
28502var CSS_CELL_RANGE_RIGHT = 'ag-cell-range-right';
28503var CSS_CELL_RANGE_BOTTOM = 'ag-cell-range-bottom';
28504var CSS_CELL_RANGE_LEFT = 'ag-cell-range-left';
28505var CellRangeFeature = /** @class */ (function () {
28506 function CellRangeFeature(beans, ctrl) {
28507 this.beans = beans;
28508 this.cellCtrl = ctrl;
28509 }
28510 CellRangeFeature.prototype.setComp = function (cellComp, eGui) {
28511 this.cellComp = cellComp;
28512 this.eGui = eGui;
28513 this.onRangeSelectionChanged();
28514 };
28515 CellRangeFeature.prototype.onRangeSelectionChanged = function () {
28516 // when using reactUi, given UI is async, it's possible this method is called before the comp is registered
28517 if (!this.cellComp) {
28518 return;
28519 }
28520 this.rangeCount = this.beans.rangeService.getCellRangeCount(this.cellCtrl.getCellPosition());
28521 this.hasChartRange = this.getHasChartRange();
28522 this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED, this.rangeCount !== 0);
28523 this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + "-1", this.rangeCount === 1);
28524 this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + "-2", this.rangeCount === 2);
28525 this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + "-3", this.rangeCount === 3);
28526 this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SELECTED + "-4", this.rangeCount >= 4);
28527 this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_CHART, this.hasChartRange);
28528 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_3__["setAriaSelected"])(this.eGui, this.rangeCount > 0 ? true : undefined);
28529 this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_SINGLE_CELL, this.isSingleCell());
28530 this.updateRangeBorders();
28531 this.refreshHandle();
28532 };
28533 CellRangeFeature.prototype.updateRangeBorders = function () {
28534 var rangeBorders = this.getRangeBorders();
28535 var isSingleCell = this.isSingleCell();
28536 var isTop = !isSingleCell && rangeBorders.top;
28537 var isRight = !isSingleCell && rangeBorders.right;
28538 var isBottom = !isSingleCell && rangeBorders.bottom;
28539 var isLeft = !isSingleCell && rangeBorders.left;
28540 this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_TOP, isTop);
28541 this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_RIGHT, isRight);
28542 this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_BOTTOM, isBottom);
28543 this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_LEFT, isLeft);
28544 };
28545 CellRangeFeature.prototype.isSingleCell = function () {
28546 var rangeService = this.beans.rangeService;
28547 return this.rangeCount === 1 && rangeService && !rangeService.isMoreThanOneCell();
28548 };
28549 CellRangeFeature.prototype.getHasChartRange = function () {
28550 var rangeService = this.beans.rangeService;
28551 if (!this.rangeCount || !rangeService) {
28552 return false;
28553 }
28554 var cellRanges = rangeService.getCellRanges();
28555 return cellRanges.length > 0 && cellRanges.every(function (range) { return Object(_utils_array__WEBPACK_IMPORTED_MODULE_0__["includes"])([_interfaces_IRangeService__WEBPACK_IMPORTED_MODULE_1__["CellRangeType"].DIMENSION, _interfaces_IRangeService__WEBPACK_IMPORTED_MODULE_1__["CellRangeType"].VALUE], range.type); });
28556 };
28557 CellRangeFeature.prototype.updateRangeBordersIfRangeCount = function () {
28558 // we only need to update range borders if we are in a range
28559 if (this.rangeCount > 0) {
28560 this.updateRangeBorders();
28561 this.refreshHandle();
28562 }
28563 };
28564 CellRangeFeature.prototype.getRangeBorders = function () {
28565 var _this = this;
28566 var isRtl = this.beans.gridOptionsWrapper.isEnableRtl();
28567 var top = false;
28568 var right = false;
28569 var bottom = false;
28570 var left = false;
28571 var thisCol = this.cellCtrl.getCellPosition().column;
28572 var _a = this.beans, rangeService = _a.rangeService, columnModel = _a.columnModel;
28573 var leftCol;
28574 var rightCol;
28575 if (isRtl) {
28576 leftCol = columnModel.getDisplayedColAfter(thisCol);
28577 rightCol = columnModel.getDisplayedColBefore(thisCol);
28578 }
28579 else {
28580 leftCol = columnModel.getDisplayedColBefore(thisCol);
28581 rightCol = columnModel.getDisplayedColAfter(thisCol);
28582 }
28583 var ranges = rangeService.getCellRanges().filter(function (range) { return rangeService.isCellInSpecificRange(_this.cellCtrl.getCellPosition(), range); });
28584 // this means we are the first column in the grid
28585 if (!leftCol) {
28586 left = true;
28587 }
28588 // this means we are the last column in the grid
28589 if (!rightCol) {
28590 right = true;
28591 }
28592 for (var i = 0; i < ranges.length; i++) {
28593 if (top && right && bottom && left) {
28594 break;
28595 }
28596 var range = ranges[i];
28597 var startRow = rangeService.getRangeStartRow(range);
28598 var endRow = rangeService.getRangeEndRow(range);
28599 if (!top && this.beans.rowPositionUtils.sameRow(startRow, this.cellCtrl.getCellPosition())) {
28600 top = true;
28601 }
28602 if (!bottom && this.beans.rowPositionUtils.sameRow(endRow, this.cellCtrl.getCellPosition())) {
28603 bottom = true;
28604 }
28605 if (!left && leftCol && range.columns.indexOf(leftCol) < 0) {
28606 left = true;
28607 }
28608 if (!right && rightCol && range.columns.indexOf(rightCol) < 0) {
28609 right = true;
28610 }
28611 }
28612 return { top: top, right: right, bottom: bottom, left: left };
28613 };
28614 CellRangeFeature.prototype.refreshHandle = function () {
28615 if (!this.beans.rangeService) {
28616 return;
28617 }
28618 var shouldHaveSelectionHandle = this.shouldHaveSelectionHandle();
28619 if (this.selectionHandle && !shouldHaveSelectionHandle) {
28620 this.selectionHandle = this.beans.context.destroyBean(this.selectionHandle);
28621 }
28622 if (shouldHaveSelectionHandle) {
28623 this.addSelectionHandle();
28624 }
28625 this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_HANDLE, !!this.selectionHandle);
28626 };
28627 CellRangeFeature.prototype.shouldHaveSelectionHandle = function () {
28628 var _a = this.beans, gridOptionsWrapper = _a.gridOptionsWrapper, rangeService = _a.rangeService;
28629 var cellRanges = rangeService.getCellRanges();
28630 var rangesLen = cellRanges.length;
28631 if (this.rangeCount < 1 || rangesLen < 1) {
28632 return false;
28633 }
28634 var cellRange = Object(_utils_array__WEBPACK_IMPORTED_MODULE_0__["last"])(cellRanges);
28635 var cellPosition = this.cellCtrl.getCellPosition();
28636 var isFillHandleAvailable = gridOptionsWrapper.isEnableFillHandle() && !this.cellCtrl.isSuppressFillHandle();
28637 var isRangeHandleAvailable = gridOptionsWrapper.isEnableRangeHandle();
28638 var handleIsAvailable = rangesLen === 1 && !this.cellCtrl.isEditing() && (isFillHandleAvailable || isRangeHandleAvailable);
28639 if (this.hasChartRange) {
28640 var hasCategoryRange = cellRanges[0].type === _interfaces_IRangeService__WEBPACK_IMPORTED_MODULE_1__["CellRangeType"].DIMENSION;
28641 var isCategoryCell = hasCategoryRange && rangeService.isCellInSpecificRange(cellPosition, cellRanges[0]);
28642 this.cellComp.addOrRemoveCssClass(CSS_CELL_RANGE_CHART_CATEGORY, isCategoryCell);
28643 handleIsAvailable = cellRange.type === _interfaces_IRangeService__WEBPACK_IMPORTED_MODULE_1__["CellRangeType"].VALUE;
28644 }
28645 return handleIsAvailable &&
28646 cellRange.endRow != null &&
28647 rangeService.isContiguousRange(cellRange) &&
28648 rangeService.isBottomRightCell(cellRange, cellPosition);
28649 };
28650 CellRangeFeature.prototype.addSelectionHandle = function () {
28651 var _a = this.beans, gridOptionsWrapper = _a.gridOptionsWrapper, rangeService = _a.rangeService;
28652 var cellRangeType = Object(_utils_array__WEBPACK_IMPORTED_MODULE_0__["last"])(rangeService.getCellRanges()).type;
28653 var selectionHandleFill = gridOptionsWrapper.isEnableFillHandle() && Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["missing"])(cellRangeType);
28654 var type = selectionHandleFill ? _interfaces_IRangeService__WEBPACK_IMPORTED_MODULE_1__["SelectionHandleType"].FILL : _interfaces_IRangeService__WEBPACK_IMPORTED_MODULE_1__["SelectionHandleType"].RANGE;
28655 if (this.selectionHandle && this.selectionHandle.getType() !== type) {
28656 this.selectionHandle = this.beans.context.destroyBean(this.selectionHandle);
28657 }
28658 if (!this.selectionHandle) {
28659 this.selectionHandle = this.beans.selectionHandleFactory.createSelectionHandle(type);
28660 }
28661 this.selectionHandle.refresh(this.cellCtrl);
28662 };
28663 CellRangeFeature.prototype.destroy = function () {
28664 this.beans.context.destroyBean(this.selectionHandle);
28665 };
28666 return CellRangeFeature;
28667}());
28668
28669
28670
28671
28672
28673/***/ }),
28674/* 123 */
28675/***/ (function(module, __webpack_exports__, __webpack_require__) {
28676
28677"use strict";
28678__webpack_require__.r(__webpack_exports__);
28679/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SelectionHandleType", function() { return SelectionHandleType; });
28680/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CellRangeType", function() { return CellRangeType; });
28681/**
28682 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
28683 * @version v27.3.0
28684 * @link https://www.ag-grid.com/
28685 * @license MIT
28686 */
28687var SelectionHandleType;
28688(function (SelectionHandleType) {
28689 SelectionHandleType[SelectionHandleType["FILL"] = 0] = "FILL";
28690 SelectionHandleType[SelectionHandleType["RANGE"] = 1] = "RANGE";
28691})(SelectionHandleType || (SelectionHandleType = {}));
28692var CellRangeType;
28693(function (CellRangeType) {
28694 CellRangeType[CellRangeType["VALUE"] = 0] = "VALUE";
28695 CellRangeType[CellRangeType["DIMENSION"] = 1] = "DIMENSION";
28696})(CellRangeType || (CellRangeType = {}));
28697
28698
28699
28700
28701/***/ }),
28702/* 124 */
28703/***/ (function(module, __webpack_exports__, __webpack_require__) {
28704
28705"use strict";
28706__webpack_require__.r(__webpack_exports__);
28707/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CellPositionFeature", function() { return CellPositionFeature; });
28708/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(18);
28709/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(24);
28710/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
28711/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15);
28712/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(20);
28713/**
28714 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
28715 * @version v27.3.0
28716 * @link https://www.ag-grid.com/
28717 * @license MIT
28718 */
28719var __extends = (undefined && undefined.__extends) || (function () {
28720 var extendStatics = function (d, b) {
28721 extendStatics = Object.setPrototypeOf ||
28722 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
28723 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
28724 return extendStatics(d, b);
28725 };
28726 return function (d, b) {
28727 extendStatics(d, b);
28728 function __() { this.constructor = d; }
28729 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
28730 };
28731})();
28732
28733
28734
28735
28736
28737/**
28738 * Takes care of:
28739 * #) Cell Width (including when doing cell spanning, which makes width cover many columns)
28740 * #) Cell Height (when doing row span, otherwise we don't touch the height as it's just row height)
28741 * #) Cell Left (the horizontal positioning of the cell, the vertical positioning is on the row)
28742 */
28743var CellPositionFeature = /** @class */ (function (_super) {
28744 __extends(CellPositionFeature, _super);
28745 function CellPositionFeature(ctrl, beans) {
28746 var _this = _super.call(this) || this;
28747 _this.cellCtrl = ctrl;
28748 _this.beans = beans;
28749 _this.column = ctrl.getColumn();
28750 _this.rowNode = ctrl.getRowNode();
28751 _this.setupColSpan();
28752 _this.setupRowSpan();
28753 return _this;
28754 }
28755 CellPositionFeature.prototype.setupRowSpan = function () {
28756 this.rowSpan = this.column.getRowSpan(this.rowNode);
28757 };
28758 CellPositionFeature.prototype.setComp = function (eGui) {
28759 this.eGui = eGui;
28760 this.onLeftChanged();
28761 this.onWidthChanged();
28762 this.applyRowSpan();
28763 };
28764 CellPositionFeature.prototype.onDisplayColumnsChanged = function () {
28765 var colsSpanning = this.getColSpanningList();
28766 if (!Object(_utils_array__WEBPACK_IMPORTED_MODULE_0__["areEqual"])(this.colsSpanning, colsSpanning)) {
28767 this.colsSpanning = colsSpanning;
28768 this.onWidthChanged();
28769 this.onLeftChanged(); // left changes when doing RTL
28770 }
28771 };
28772 CellPositionFeature.prototype.setupColSpan = function () {
28773 // if no col span is active, then we don't set it up, as it would be wasteful of CPU
28774 if (this.column.getColDef().colSpan == null) {
28775 return;
28776 }
28777 this.colsSpanning = this.getColSpanningList();
28778 // because we are col spanning, a reorder of the cols can change what cols we are spanning over
28779 this.addManagedListener(this.beans.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayColumnsChanged.bind(this));
28780 // because we are spanning over multiple cols, we check for width any time any cols width changes.
28781 // this is expensive - really we should be explicitly checking only the cols we are spanning over
28782 // instead of every col, however it would be tricky code to track the cols we are spanning over, so
28783 // because hardly anyone will be using colSpan, am favouring this easier way for more maintainable code.
28784 this.addManagedListener(this.beans.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onWidthChanged.bind(this));
28785 };
28786 CellPositionFeature.prototype.onWidthChanged = function () {
28787 if (!this.eGui) {
28788 return;
28789 }
28790 var width = this.getCellWidth();
28791 this.eGui.style.width = width + "px";
28792 };
28793 CellPositionFeature.prototype.getCellWidth = function () {
28794 if (!this.colsSpanning) {
28795 return this.column.getActualWidth();
28796 }
28797 return this.colsSpanning.reduce(function (width, col) { return width + col.getActualWidth(); }, 0);
28798 };
28799 CellPositionFeature.prototype.getColSpanningList = function () {
28800 var colSpan = this.column.getColSpan(this.rowNode);
28801 var colsSpanning = [];
28802 // if just one col, the col span is just the column we are in
28803 if (colSpan === 1) {
28804 colsSpanning.push(this.column);
28805 }
28806 else {
28807 var pointer = this.column;
28808 var pinned = this.column.getPinned();
28809 for (var i = 0; pointer && i < colSpan; i++) {
28810 colsSpanning.push(pointer);
28811 pointer = this.beans.columnModel.getDisplayedColAfter(pointer);
28812 if (!pointer || Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["missing"])(pointer)) {
28813 break;
28814 }
28815 // we do not allow col spanning to span outside of pinned areas
28816 if (pinned !== pointer.getPinned()) {
28817 break;
28818 }
28819 }
28820 }
28821 return colsSpanning;
28822 };
28823 CellPositionFeature.prototype.onLeftChanged = function () {
28824 if (!this.eGui) {
28825 return;
28826 }
28827 var left = this.modifyLeftForPrintLayout(this.getCellLeft());
28828 this.eGui.style.left = left + 'px';
28829 };
28830 CellPositionFeature.prototype.getCellLeft = function () {
28831 var mostLeftCol;
28832 if (this.beans.gridOptionsWrapper.isEnableRtl() && this.colsSpanning) {
28833 mostLeftCol = Object(_utils_array__WEBPACK_IMPORTED_MODULE_0__["last"])(this.colsSpanning);
28834 }
28835 else {
28836 mostLeftCol = this.column;
28837 }
28838 return mostLeftCol.getLeft();
28839 };
28840 CellPositionFeature.prototype.modifyLeftForPrintLayout = function (leftPosition) {
28841 if (!this.cellCtrl.isPrintLayout() || this.column.getPinned() === _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].PINNED_LEFT) {
28842 return leftPosition;
28843 }
28844 var leftWidth = this.beans.columnModel.getDisplayedColumnsLeftWidth();
28845 if (this.column.getPinned() === _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].PINNED_RIGHT) {
28846 var bodyWidth = this.beans.columnModel.getBodyContainerWidth();
28847 return leftWidth + bodyWidth + (leftPosition || 0);
28848 }
28849 // is in body
28850 return leftWidth + (leftPosition || 0);
28851 };
28852 CellPositionFeature.prototype.applyRowSpan = function () {
28853 if (this.rowSpan === 1) {
28854 return;
28855 }
28856 var singleRowHeight = this.beans.gridOptionsWrapper.getRowHeightAsNumber();
28857 var totalRowHeight = singleRowHeight * this.rowSpan;
28858 this.eGui.style.height = totalRowHeight + "px";
28859 this.eGui.style.zIndex = '1';
28860 };
28861 // overriding to make public, as we don't dispose this bean via context
28862 CellPositionFeature.prototype.destroy = function () {
28863 _super.prototype.destroy.call(this);
28864 };
28865 return CellPositionFeature;
28866}(_context_beanStub__WEBPACK_IMPORTED_MODULE_4__["BeanStub"]));
28867
28868
28869
28870
28871
28872/***/ }),
28873/* 125 */
28874/***/ (function(module, __webpack_exports__, __webpack_require__) {
28875
28876"use strict";
28877__webpack_require__.r(__webpack_exports__);
28878/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CellCustomStyleFeature", function() { return CellCustomStyleFeature; });
28879/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
28880/**
28881 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
28882 * @version v27.3.0
28883 * @link https://www.ag-grid.com/
28884 * @license MIT
28885 */
28886var __extends = (undefined && undefined.__extends) || (function () {
28887 var extendStatics = function (d, b) {
28888 extendStatics = Object.setPrototypeOf ||
28889 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
28890 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
28891 return extendStatics(d, b);
28892 };
28893 return function (d, b) {
28894 extendStatics(d, b);
28895 function __() { this.constructor = d; }
28896 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
28897 };
28898})();
28899
28900var CellCustomStyleFeature = /** @class */ (function (_super) {
28901 __extends(CellCustomStyleFeature, _super);
28902 function CellCustomStyleFeature(ctrl, beans) {
28903 var _this = _super.call(this) || this;
28904 _this.staticClasses = [];
28905 _this.cellCtrl = ctrl;
28906 _this.beans = beans;
28907 _this.column = ctrl.getColumn();
28908 _this.rowNode = ctrl.getRowNode();
28909 return _this;
28910 }
28911 CellCustomStyleFeature.prototype.setComp = function (comp) {
28912 this.cellComp = comp;
28913 this.applyUserStyles();
28914 this.applyCellClassRules();
28915 this.applyClassesFromColDef();
28916 };
28917 CellCustomStyleFeature.prototype.applyCellClassRules = function () {
28918 var _this = this;
28919 var colDef = this.column.getColDef();
28920 var cellClassParams = {
28921 value: this.cellCtrl.getValue(),
28922 data: this.rowNode.data,
28923 node: this.rowNode,
28924 colDef: colDef,
28925 rowIndex: this.rowNode.rowIndex,
28926 api: this.beans.gridOptionsWrapper.getApi(),
28927 columnApi: this.beans.gridOptionsWrapper.getColumnApi(),
28928 context: this.beans.gridOptionsWrapper.getContext()
28929 };
28930 this.beans.stylingService.processClassRules(colDef.cellClassRules, cellClassParams, function (className) { return _this.cellComp.addOrRemoveCssClass(className, true); }, function (className) { return _this.cellComp.addOrRemoveCssClass(className, false); });
28931 };
28932 CellCustomStyleFeature.prototype.applyUserStyles = function () {
28933 var colDef = this.column.getColDef();
28934 if (!colDef.cellStyle) {
28935 return;
28936 }
28937 var styles;
28938 if (typeof colDef.cellStyle === 'function') {
28939 var cellStyleParams = {
28940 column: this.column,
28941 value: this.cellCtrl.getValue(),
28942 colDef: colDef,
28943 data: this.rowNode.data,
28944 node: this.rowNode,
28945 rowIndex: this.rowNode.rowIndex,
28946 api: this.beans.gridOptionsWrapper.getApi(),
28947 columnApi: this.beans.gridOptionsWrapper.getColumnApi(),
28948 context: this.beans.gridOptionsWrapper.getContext(),
28949 };
28950 var cellStyleFunc = colDef.cellStyle;
28951 styles = cellStyleFunc(cellStyleParams);
28952 }
28953 else {
28954 styles = colDef.cellStyle;
28955 }
28956 this.cellComp.setUserStyles(styles);
28957 };
28958 CellCustomStyleFeature.prototype.applyClassesFromColDef = function () {
28959 var _this = this;
28960 var colDef = this.column.getColDef();
28961 var cellClassParams = {
28962 value: this.cellCtrl.getValue(),
28963 data: this.rowNode.data,
28964 node: this.rowNode,
28965 colDef: colDef,
28966 rowIndex: this.rowNode.rowIndex,
28967 api: this.beans.gridOptionsWrapper.getApi(),
28968 columnApi: this.beans.gridOptionsWrapper.getColumnApi(),
28969 context: this.beans.gridOptionsWrapper.getContext()
28970 };
28971 if (this.staticClasses.length) {
28972 this.staticClasses.forEach(function (className) { return _this.cellComp.addOrRemoveCssClass(className, false); });
28973 }
28974 this.staticClasses = this.beans.stylingService.getStaticCellClasses(colDef, cellClassParams);
28975 if (this.staticClasses.length) {
28976 this.staticClasses.forEach(function (className) { return _this.cellComp.addOrRemoveCssClass(className, true); });
28977 }
28978 };
28979 // overriding to make public, as we don't dispose this bean via context
28980 CellCustomStyleFeature.prototype.destroy = function () {
28981 _super.prototype.destroy.call(this);
28982 };
28983 return CellCustomStyleFeature;
28984}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
28985
28986
28987
28988
28989
28990/***/ }),
28991/* 126 */
28992/***/ (function(module, __webpack_exports__, __webpack_require__) {
28993
28994"use strict";
28995__webpack_require__.r(__webpack_exports__);
28996/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TooltipFeature", function() { return TooltipFeature; });
28997/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
28998/* harmony import */ var _customTooltipFeature__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(56);
28999/**
29000 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
29001 * @version v27.3.0
29002 * @link https://www.ag-grid.com/
29003 * @license MIT
29004 */
29005var __extends = (undefined && undefined.__extends) || (function () {
29006 var extendStatics = function (d, b) {
29007 extendStatics = Object.setPrototypeOf ||
29008 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
29009 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
29010 return extendStatics(d, b);
29011 };
29012 return function (d, b) {
29013 extendStatics(d, b);
29014 function __() { this.constructor = d; }
29015 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
29016 };
29017})();
29018
29019
29020var TooltipFeature = /** @class */ (function (_super) {
29021 __extends(TooltipFeature, _super);
29022 function TooltipFeature(ctrl, beans) {
29023 var _this = _super.call(this) || this;
29024 _this.ctrl = ctrl;
29025 _this.beans = beans;
29026 return _this;
29027 }
29028 TooltipFeature.prototype.setComp = function (comp) {
29029 this.comp = comp;
29030 this.setupTooltip();
29031 };
29032 TooltipFeature.prototype.setupTooltip = function () {
29033 this.browserTooltips = this.beans.gridOptionsWrapper.isEnableBrowserTooltips();
29034 this.updateTooltipText();
29035 if (this.browserTooltips) {
29036 this.comp.setTitle(this.tooltip != null ? this.tooltip : undefined);
29037 }
29038 else {
29039 this.createTooltipFeatureIfNeeded();
29040 }
29041 };
29042 TooltipFeature.prototype.updateTooltipText = function () {
29043 this.tooltip = this.ctrl.getTooltipValue();
29044 };
29045 TooltipFeature.prototype.createTooltipFeatureIfNeeded = function () {
29046 var _this = this;
29047 if (this.genericTooltipFeature != null) {
29048 return;
29049 }
29050 var parent = {
29051 getTooltipParams: function () { return _this.getTooltipParams(); },
29052 getGui: function () { return _this.ctrl.getGui(); }
29053 };
29054 this.genericTooltipFeature = this.createManagedBean(new _customTooltipFeature__WEBPACK_IMPORTED_MODULE_1__["CustomTooltipFeature"](parent), this.beans.context);
29055 };
29056 TooltipFeature.prototype.refreshToolTip = function () {
29057 this.updateTooltipText();
29058 if (this.browserTooltips) {
29059 this.comp.setTitle(this.tooltip != null ? this.tooltip : undefined);
29060 }
29061 };
29062 TooltipFeature.prototype.getTooltipParams = function () {
29063 var ctrl = this.ctrl;
29064 var column = ctrl.getColumn ? ctrl.getColumn() : undefined;
29065 var colDef = ctrl.getColDef ? ctrl.getColDef() : undefined;
29066 var rowNode = ctrl.getRowNode ? ctrl.getRowNode() : undefined;
29067 return {
29068 location: ctrl.getLocation(),
29069 colDef: colDef,
29070 column: column,
29071 rowIndex: ctrl.getRowIndex ? ctrl.getRowIndex() : undefined,
29072 node: rowNode,
29073 data: rowNode ? rowNode.data : undefined,
29074 value: this.getTooltipText(),
29075 valueFormatted: ctrl.getValueFormatted ? ctrl.getValueFormatted() : undefined,
29076 };
29077 };
29078 TooltipFeature.prototype.getTooltipText = function () {
29079 return this.tooltip;
29080 };
29081 // overriding to make public, as we don't dispose this bean via context
29082 TooltipFeature.prototype.destroy = function () {
29083 _super.prototype.destroy.call(this);
29084 };
29085 return TooltipFeature;
29086}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
29087
29088
29089
29090
29091
29092/***/ }),
29093/* 127 */
29094/***/ (function(module, __webpack_exports__, __webpack_require__) {
29095
29096"use strict";
29097__webpack_require__.r(__webpack_exports__);
29098/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CellMouseListenerFeature", function() { return CellMouseListenerFeature; });
29099/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(23);
29100/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(43);
29101/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
29102/* harmony import */ var _utils_event__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(21);
29103/* harmony import */ var _beans__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(128);
29104/**
29105 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
29106 * @version v27.3.0
29107 * @link https://www.ag-grid.com/
29108 * @license MIT
29109 */
29110var __extends = (undefined && undefined.__extends) || (function () {
29111 var extendStatics = function (d, b) {
29112 extendStatics = Object.setPrototypeOf ||
29113 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
29114 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
29115 return extendStatics(d, b);
29116 };
29117 return function (d, b) {
29118 extendStatics(d, b);
29119 function __() { this.constructor = d; }
29120 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
29121 };
29122})();
29123
29124
29125
29126
29127
29128var CellMouseListenerFeature = /** @class */ (function (_super) {
29129 __extends(CellMouseListenerFeature, _super);
29130 function CellMouseListenerFeature(ctrl, beans, column) {
29131 var _this = _super.call(this) || this;
29132 _this.cellCtrl = ctrl;
29133 _this.beans = beans;
29134 _this.column = column;
29135 return _this;
29136 }
29137 CellMouseListenerFeature.prototype.onMouseEvent = function (eventName, mouseEvent) {
29138 if (Object(_utils_event__WEBPACK_IMPORTED_MODULE_3__["isStopPropagationForAgGrid"])(mouseEvent)) {
29139 return;
29140 }
29141 switch (eventName) {
29142 case 'click':
29143 this.onCellClicked(mouseEvent);
29144 break;
29145 case 'mousedown':
29146 case 'touchstart':
29147 this.onMouseDown(mouseEvent);
29148 break;
29149 case 'dblclick':
29150 this.onCellDoubleClicked(mouseEvent);
29151 break;
29152 case 'mouseout':
29153 this.onMouseOut(mouseEvent);
29154 break;
29155 case 'mouseover':
29156 this.onMouseOver(mouseEvent);
29157 break;
29158 }
29159 };
29160 CellMouseListenerFeature.prototype.onCellClicked = function (mouseEvent) {
29161 // iPad doesn't have double click - so we need to mimic it to enable editing for iPad.
29162 if (this.isDoubleClickOnIPad()) {
29163 this.onCellDoubleClicked(mouseEvent);
29164 mouseEvent.preventDefault(); // if we don't do this, then iPad zooms in
29165 return;
29166 }
29167 var _a = this.beans, eventService = _a.eventService, gridOptionsWrapper = _a.gridOptionsWrapper;
29168 var cellClickedEvent = this.cellCtrl.createEvent(mouseEvent, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_CELL_CLICKED);
29169 eventService.dispatchEvent(cellClickedEvent);
29170 var colDef = this.column.getColDef();
29171 if (colDef.onCellClicked) {
29172 // to make callback async, do in a timeout
29173 window.setTimeout(function () { return colDef.onCellClicked(cellClickedEvent); }, 0);
29174 }
29175 var editOnSingleClick = (gridOptionsWrapper.isSingleClickEdit() || colDef.singleClickEdit)
29176 && !gridOptionsWrapper.isSuppressClickEdit();
29177 if (editOnSingleClick) {
29178 this.cellCtrl.startRowOrCellEdit();
29179 }
29180 };
29181 // returns true if on iPad and this is second 'click' event in 200ms
29182 CellMouseListenerFeature.prototype.isDoubleClickOnIPad = function () {
29183 if (!Object(_utils_browser__WEBPACK_IMPORTED_MODULE_1__["isIOSUserAgent"])() || Object(_utils_event__WEBPACK_IMPORTED_MODULE_3__["isEventSupported"])('dblclick')) {
29184 return false;
29185 }
29186 var nowMillis = new Date().getTime();
29187 var res = nowMillis - this.lastIPadMouseClickEvent < 200;
29188 this.lastIPadMouseClickEvent = nowMillis;
29189 return res;
29190 };
29191 CellMouseListenerFeature.prototype.onCellDoubleClicked = function (mouseEvent) {
29192 var colDef = this.column.getColDef();
29193 // always dispatch event to eventService
29194 var cellDoubleClickedEvent = this.cellCtrl.createEvent(mouseEvent, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_CELL_DOUBLE_CLICKED);
29195 this.beans.eventService.dispatchEvent(cellDoubleClickedEvent);
29196 // check if colDef also wants to handle event
29197 if (typeof colDef.onCellDoubleClicked === 'function') {
29198 // to make the callback async, do in a timeout
29199 window.setTimeout(function () { return colDef.onCellDoubleClicked(cellDoubleClickedEvent); }, 0);
29200 }
29201 var editOnDoubleClick = !this.beans.gridOptionsWrapper.isSingleClickEdit()
29202 && !this.beans.gridOptionsWrapper.isSuppressClickEdit();
29203 if (editOnDoubleClick) {
29204 this.cellCtrl.startRowOrCellEdit(null, null, mouseEvent);
29205 }
29206 };
29207 CellMouseListenerFeature.prototype.onMouseDown = function (mouseEvent) {
29208 var ctrlKey = mouseEvent.ctrlKey, metaKey = mouseEvent.metaKey, shiftKey = mouseEvent.shiftKey;
29209 var target = mouseEvent.target;
29210 var _a = this.beans, eventService = _a.eventService, rangeService = _a.rangeService;
29211 // do not change the range for right-clicks inside an existing range
29212 if (this.isRightClickInExistingRange(mouseEvent)) {
29213 return;
29214 }
29215 var ranges = rangeService && rangeService.getCellRanges().length != 0;
29216 if (!shiftKey || !ranges) {
29217 // We only need to pass true to focusCell when the browser is IE/Edge and we are trying
29218 // to focus the cell itself. This should never be true if the mousedown was triggered
29219 // due to a click on a cell editor for example.
29220 var forceBrowserFocus = (Object(_utils_browser__WEBPACK_IMPORTED_MODULE_1__["isBrowserEdge"])()) && !this.cellCtrl.isEditing() && !Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["isFocusableFormField"])(target);
29221 this.cellCtrl.focusCell(forceBrowserFocus);
29222 }
29223 // if shift clicking, and a range exists, we keep the focus on the cell that started the
29224 // range as the user then changes the range selection.
29225 if (shiftKey && ranges) {
29226 // this stops the cell from getting focused
29227 mouseEvent.preventDefault();
29228 }
29229 // if we are clicking on a checkbox, we need to make sure the cell wrapping that checkbox
29230 // is focused but we don't want to change the range selection, so return here.
29231 if (this.containsWidget(target)) {
29232 return;
29233 }
29234 if (rangeService) {
29235 var thisCell = this.cellCtrl.getCellPosition();
29236 if (shiftKey) {
29237 rangeService.extendLatestRangeToCell(thisCell);
29238 }
29239 else {
29240 var ctrlKeyPressed = ctrlKey || metaKey;
29241 rangeService.setRangeToCell(thisCell, ctrlKeyPressed);
29242 }
29243 }
29244 eventService.dispatchEvent(this.cellCtrl.createEvent(mouseEvent, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_CELL_MOUSE_DOWN));
29245 };
29246 CellMouseListenerFeature.prototype.isRightClickInExistingRange = function (mouseEvent) {
29247 var rangeService = this.beans.rangeService;
29248 if (rangeService) {
29249 var cellInRange = rangeService.isCellInAnyRange(this.cellCtrl.getCellPosition());
29250 if (cellInRange && mouseEvent.button === 2) {
29251 return true;
29252 }
29253 }
29254 return false;
29255 };
29256 CellMouseListenerFeature.prototype.containsWidget = function (target) {
29257 return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["isElementChildOfClass"])(target, 'ag-selection-checkbox', 3);
29258 };
29259 CellMouseListenerFeature.prototype.onMouseOut = function (mouseEvent) {
29260 if (this.mouseStayingInsideCell(mouseEvent)) {
29261 return;
29262 }
29263 var cellMouseOutEvent = this.cellCtrl.createEvent(mouseEvent, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_CELL_MOUSE_OUT);
29264 this.beans.eventService.dispatchEvent(cellMouseOutEvent);
29265 this.beans.columnHoverService.clearMouseOver();
29266 };
29267 CellMouseListenerFeature.prototype.onMouseOver = function (mouseEvent) {
29268 if (this.mouseStayingInsideCell(mouseEvent)) {
29269 return;
29270 }
29271 var cellMouseOverEvent = this.cellCtrl.createEvent(mouseEvent, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_CELL_MOUSE_OVER);
29272 this.beans.eventService.dispatchEvent(cellMouseOverEvent);
29273 this.beans.columnHoverService.setMouseOver([this.column]);
29274 };
29275 CellMouseListenerFeature.prototype.mouseStayingInsideCell = function (e) {
29276 if (!e.target || !e.relatedTarget) {
29277 return false;
29278 }
29279 var eGui = this.cellCtrl.getGui();
29280 var cellContainsTarget = eGui.contains(e.target);
29281 var cellContainsRelatedTarget = eGui.contains(e.relatedTarget);
29282 return cellContainsTarget && cellContainsRelatedTarget;
29283 };
29284 CellMouseListenerFeature.prototype.destroy = function () {
29285 };
29286 return CellMouseListenerFeature;
29287}(_beans__WEBPACK_IMPORTED_MODULE_4__["Beans"]));
29288
29289
29290
29291
29292
29293/***/ }),
29294/* 128 */
29295/***/ (function(module, __webpack_exports__, __webpack_require__) {
29296
29297"use strict";
29298__webpack_require__.r(__webpack_exports__);
29299/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Beans", function() { return Beans; });
29300/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
29301/**
29302 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
29303 * @version v27.3.0
29304 * @link https://www.ag-grid.com/
29305 * @license MIT
29306 */
29307var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
29308 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
29309 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
29310 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
29311 return c > 3 && r && Object.defineProperty(target, key, r), r;
29312};
29313
29314/** Using the IoC has a slight performance consideration, which is no problem most of the
29315 * time, unless we are trashing objects - which is the case when scrolling and rowComp
29316 * and cellComp. So for performance reasons, RowComp and CellComp do not get autowired
29317 * with the IoC. Instead they get passed this object which is all the beans the RowComp
29318 * and CellComp need. Not autowiring all the cells gives performance improvement. */
29319var Beans = /** @class */ (function () {
29320 function Beans() {
29321 }
29322 Beans.prototype.postConstruct = function () {
29323 this.doingMasterDetail = this.gridOptionsWrapper.isMasterDetail();
29324 if (this.gridOptionsWrapper.isRowModelDefault()) {
29325 this.clientSideRowModel = this.rowModel;
29326 }
29327 if (this.gridOptionsWrapper.isRowModelServerSide()) {
29328 this.serverSideRowModel = this.rowModel;
29329 }
29330 };
29331 __decorate([
29332 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('resizeObserverService')
29333 ], Beans.prototype, "resizeObserverService", void 0);
29334 __decorate([
29335 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('paginationProxy')
29336 ], Beans.prototype, "paginationProxy", void 0);
29337 __decorate([
29338 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('context')
29339 ], Beans.prototype, "context", void 0);
29340 __decorate([
29341 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
29342 ], Beans.prototype, "columnApi", void 0);
29343 __decorate([
29344 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
29345 ], Beans.prototype, "gridApi", void 0);
29346 __decorate([
29347 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridOptionsWrapper')
29348 ], Beans.prototype, "gridOptionsWrapper", void 0);
29349 __decorate([
29350 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('expressionService')
29351 ], Beans.prototype, "expressionService", void 0);
29352 __decorate([
29353 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowRenderer')
29354 ], Beans.prototype, "rowRenderer", void 0);
29355 __decorate([
29356 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('templateService')
29357 ], Beans.prototype, "templateService", void 0);
29358 __decorate([
29359 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('valueService')
29360 ], Beans.prototype, "valueService", void 0);
29361 __decorate([
29362 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('eventService')
29363 ], Beans.prototype, "eventService", void 0);
29364 __decorate([
29365 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
29366 ], Beans.prototype, "columnModel", void 0);
29367 __decorate([
29368 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('headerNavigationService')
29369 ], Beans.prototype, "headerNavigationService", void 0);
29370 __decorate([
29371 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('navigationService')
29372 ], Beans.prototype, "navigationService", void 0);
29373 __decorate([
29374 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnAnimationService')
29375 ], Beans.prototype, "columnAnimationService", void 0);
29376 __decorate([
29377 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Optional"])('rangeService')
29378 ], Beans.prototype, "rangeService", void 0);
29379 __decorate([
29380 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('focusService')
29381 ], Beans.prototype, "focusService", void 0);
29382 __decorate([
29383 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Optional"])('contextMenuFactory')
29384 ], Beans.prototype, "contextMenuFactory", void 0);
29385 __decorate([
29386 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('popupService')
29387 ], Beans.prototype, "popupService", void 0);
29388 __decorate([
29389 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('valueFormatterService')
29390 ], Beans.prototype, "valueFormatterService", void 0);
29391 __decorate([
29392 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('stylingService')
29393 ], Beans.prototype, "stylingService", void 0);
29394 __decorate([
29395 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnHoverService')
29396 ], Beans.prototype, "columnHoverService", void 0);
29397 __decorate([
29398 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('userComponentFactory')
29399 ], Beans.prototype, "userComponentFactory", void 0);
29400 __decorate([
29401 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('userComponentRegistry')
29402 ], Beans.prototype, "userComponentRegistry", void 0);
29403 __decorate([
29404 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('animationFrameService')
29405 ], Beans.prototype, "animationFrameService", void 0);
29406 __decorate([
29407 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('dragAndDropService')
29408 ], Beans.prototype, "dragAndDropService", void 0);
29409 __decorate([
29410 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('sortController')
29411 ], Beans.prototype, "sortController", void 0);
29412 __decorate([
29413 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('filterManager')
29414 ], Beans.prototype, "filterManager", void 0);
29415 __decorate([
29416 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowContainerHeightService')
29417 ], Beans.prototype, "rowContainerHeightService", void 0);
29418 __decorate([
29419 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('frameworkOverrides')
29420 ], Beans.prototype, "frameworkOverrides", void 0);
29421 __decorate([
29422 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('cellPositionUtils')
29423 ], Beans.prototype, "cellPositionUtils", void 0);
29424 __decorate([
29425 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowPositionUtils')
29426 ], Beans.prototype, "rowPositionUtils", void 0);
29427 __decorate([
29428 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('selectionService')
29429 ], Beans.prototype, "selectionService", void 0);
29430 __decorate([
29431 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Optional"])('selectionHandleFactory')
29432 ], Beans.prototype, "selectionHandleFactory", void 0);
29433 __decorate([
29434 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowCssClassCalculator')
29435 ], Beans.prototype, "rowCssClassCalculator", void 0);
29436 __decorate([
29437 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowModel')
29438 ], Beans.prototype, "rowModel", void 0);
29439 __decorate([
29440 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
29441 ], Beans.prototype, "ctrlsService", void 0);
29442 __decorate([
29443 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsFactory')
29444 ], Beans.prototype, "ctrlsFactory", void 0);
29445 __decorate([
29446 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('agStackComponentsRegistry')
29447 ], Beans.prototype, "agStackComponentsRegistry", void 0);
29448 __decorate([
29449 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('valueCache')
29450 ], Beans.prototype, "valueCache", void 0);
29451 __decorate([
29452 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowNodeEventThrottle')
29453 ], Beans.prototype, "rowNodeEventThrottle", void 0);
29454 __decorate([
29455 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
29456 ], Beans.prototype, "postConstruct", null);
29457 Beans = __decorate([
29458 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('beans')
29459 ], Beans);
29460 return Beans;
29461}());
29462
29463
29464
29465
29466
29467/***/ }),
29468/* 129 */
29469/***/ (function(module, __webpack_exports__, __webpack_require__) {
29470
29471"use strict";
29472__webpack_require__.r(__webpack_exports__);
29473/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CellKeyboardListenerFeature", function() { return CellKeyboardListenerFeature; });
29474/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
29475/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65);
29476/* harmony import */ var _utils_keyboard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(49);
29477/**
29478 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
29479 * @version v27.3.0
29480 * @link https://www.ag-grid.com/
29481 * @license MIT
29482 */
29483var __extends = (undefined && undefined.__extends) || (function () {
29484 var extendStatics = function (d, b) {
29485 extendStatics = Object.setPrototypeOf ||
29486 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
29487 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
29488 return extendStatics(d, b);
29489 };
29490 return function (d, b) {
29491 extendStatics(d, b);
29492 function __() { this.constructor = d; }
29493 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
29494 };
29495})();
29496
29497
29498
29499var CellKeyboardListenerFeature = /** @class */ (function (_super) {
29500 __extends(CellKeyboardListenerFeature, _super);
29501 function CellKeyboardListenerFeature(ctrl, beans, column, rowNode, rowCtrl) {
29502 var _this = _super.call(this) || this;
29503 _this.cellCtrl = ctrl;
29504 _this.beans = beans;
29505 _this.rowNode = rowNode;
29506 _this.rowCtrl = rowCtrl;
29507 return _this;
29508 }
29509 CellKeyboardListenerFeature.prototype.setComp = function (eGui) {
29510 this.eGui = eGui;
29511 };
29512 CellKeyboardListenerFeature.prototype.onKeyDown = function (event) {
29513 var key = event.key;
29514 switch (key) {
29515 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].ENTER:
29516 this.onEnterKeyDown(event);
29517 break;
29518 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].F2:
29519 this.onF2KeyDown(event);
29520 break;
29521 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].ESCAPE:
29522 this.onEscapeKeyDown(event);
29523 break;
29524 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].TAB:
29525 this.onTabKeyDown(event);
29526 break;
29527 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].BACKSPACE:
29528 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].DELETE:
29529 this.onBackspaceOrDeleteKeyPressed(key, event);
29530 break;
29531 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].DOWN:
29532 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].UP:
29533 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].RIGHT:
29534 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].LEFT:
29535 this.onNavigationKeyPressed(event, key);
29536 break;
29537 }
29538 };
29539 CellKeyboardListenerFeature.prototype.onNavigationKeyPressed = function (event, key) {
29540 if (this.cellCtrl.isEditing()) {
29541 return;
29542 }
29543 if (event.shiftKey && this.cellCtrl.isRangeSelectionEnabled()) {
29544 this.onShiftRangeSelect(event);
29545 }
29546 else {
29547 this.beans.navigationService.navigateToNextCell(event, key, this.cellCtrl.getCellPosition(), true);
29548 }
29549 // if we don't prevent default, the grid will scroll with the navigation keys
29550 event.preventDefault();
29551 };
29552 CellKeyboardListenerFeature.prototype.onShiftRangeSelect = function (event) {
29553 if (!this.beans.rangeService) {
29554 return;
29555 }
29556 var endCell = this.beans.rangeService.extendLatestRangeInDirection(event);
29557 if (endCell) {
29558 this.beans.navigationService.ensureCellVisible(endCell);
29559 }
29560 };
29561 CellKeyboardListenerFeature.prototype.onTabKeyDown = function (event) {
29562 this.beans.navigationService.onTabKeyDown(this.cellCtrl, event);
29563 };
29564 CellKeyboardListenerFeature.prototype.onBackspaceOrDeleteKeyPressed = function (key, event) {
29565 if (!this.cellCtrl.isEditing()) {
29566 this.cellCtrl.startRowOrCellEdit(key, undefined, event);
29567 }
29568 };
29569 CellKeyboardListenerFeature.prototype.onEnterKeyDown = function (e) {
29570 if (this.cellCtrl.isEditing() || this.rowCtrl.isEditing()) {
29571 this.cellCtrl.stopEditingAndFocus();
29572 }
29573 else {
29574 if (this.beans.gridOptionsWrapper.isEnterMovesDown()) {
29575 this.beans.navigationService.navigateToNextCell(null, _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].DOWN, this.cellCtrl.getCellPosition(), false);
29576 }
29577 else {
29578 this.cellCtrl.startRowOrCellEdit(_constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].ENTER, undefined, e);
29579 if (this.cellCtrl.isEditing()) {
29580 // if we started editing, then we need to prevent default, otherwise the Enter action can get
29581 // applied to the cell editor. this happened, for example, with largeTextCellEditor where not
29582 // preventing default results in a 'new line' character getting inserted in the text area
29583 // when the editing was started
29584 e.preventDefault();
29585 }
29586 }
29587 }
29588 };
29589 CellKeyboardListenerFeature.prototype.onF2KeyDown = function (event) {
29590 if (!this.cellCtrl.isEditing()) {
29591 this.cellCtrl.startRowOrCellEdit(_constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].F2, undefined, event);
29592 }
29593 };
29594 CellKeyboardListenerFeature.prototype.onEscapeKeyDown = function (event) {
29595 if (this.cellCtrl.isEditing()) {
29596 this.cellCtrl.stopRowOrCellEdit(true);
29597 this.cellCtrl.focusCell(true);
29598 }
29599 };
29600 CellKeyboardListenerFeature.prototype.onKeyPress = function (event) {
29601 // check this, in case focus is on a (for example) a text field inside the cell,
29602 // in which cse we should not be listening for these key pressed
29603 var eventTarget = event.target;
29604 var eventOnChildComponent = eventTarget !== this.eGui;
29605 if (eventOnChildComponent || this.cellCtrl.isEditing()) {
29606 return;
29607 }
29608 var pressedChar = String.fromCharCode(event.charCode);
29609 if (pressedChar === ' ') {
29610 this.onSpaceKeyPressed(event);
29611 }
29612 else if (Object(_utils_keyboard__WEBPACK_IMPORTED_MODULE_2__["isEventFromPrintableCharacter"])(event)) {
29613 this.cellCtrl.startRowOrCellEdit(null, pressedChar, event);
29614 // if we don't prevent default, then the keypress also gets applied to the text field
29615 // (at least when doing the default editor), but we need to allow the editor to decide
29616 // what it wants to do. we only do this IF editing was started - otherwise it messes
29617 // up when the use is not doing editing, but using rendering with text fields in cellRenderer
29618 // (as it would block the the user from typing into text fields).
29619 event.preventDefault();
29620 }
29621 };
29622 CellKeyboardListenerFeature.prototype.onSpaceKeyPressed = function (event) {
29623 var gridOptionsWrapper = this.beans.gridOptionsWrapper;
29624 if (!this.cellCtrl.isEditing() && gridOptionsWrapper.isRowSelection()) {
29625 var currentSelection = this.rowNode.isSelected();
29626 var newSelection = !currentSelection;
29627 if (newSelection || !gridOptionsWrapper.isSuppressRowDeselection()) {
29628 var groupSelectsFiltered = this.beans.gridOptionsWrapper.isGroupSelectsFiltered();
29629 var updatedCount = this.rowNode.setSelectedParams({
29630 newValue: newSelection,
29631 rangeSelect: event.shiftKey,
29632 groupSelectsFiltered: groupSelectsFiltered
29633 });
29634 if (currentSelection === undefined && updatedCount === 0) {
29635 this.rowNode.setSelectedParams({
29636 newValue: false,
29637 rangeSelect: event.shiftKey,
29638 groupSelectsFiltered: groupSelectsFiltered
29639 });
29640 }
29641 }
29642 }
29643 // prevent default as space key, by default, moves browser scroll down
29644 event.preventDefault();
29645 };
29646 CellKeyboardListenerFeature.prototype.destroy = function () {
29647 };
29648 return CellKeyboardListenerFeature;
29649}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
29650
29651
29652
29653
29654
29655/***/ }),
29656/* 130 */
29657/***/ (function(module, __webpack_exports__, __webpack_require__) {
29658
29659"use strict";
29660__webpack_require__.r(__webpack_exports__);
29661/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DndSourceComp", function() { return DndSourceComp; });
29662/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
29663/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
29664/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(48);
29665/**
29666 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
29667 * @version v27.3.0
29668 * @link https://www.ag-grid.com/
29669 * @license MIT
29670 */
29671var __extends = (undefined && undefined.__extends) || (function () {
29672 var extendStatics = function (d, b) {
29673 extendStatics = Object.setPrototypeOf ||
29674 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
29675 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
29676 return extendStatics(d, b);
29677 };
29678 return function (d, b) {
29679 extendStatics(d, b);
29680 function __() { this.constructor = d; }
29681 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
29682 };
29683})();
29684var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
29685 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
29686 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
29687 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
29688 return c > 3 && r && Object.defineProperty(target, key, r), r;
29689};
29690
29691
29692
29693var DndSourceComp = /** @class */ (function (_super) {
29694 __extends(DndSourceComp, _super);
29695 function DndSourceComp(rowNode, column, beans, eCell) {
29696 var _this = _super.call(this, "<div class=\"ag-drag-handle ag-row-drag\" draggable=\"true\"></div>") || this;
29697 _this.rowNode = rowNode;
29698 _this.column = column;
29699 _this.beans = beans;
29700 _this.eCell = eCell;
29701 return _this;
29702 }
29703 DndSourceComp.prototype.postConstruct = function () {
29704 var eGui = this.getGui();
29705 eGui.appendChild(Object(_utils_icon__WEBPACK_IMPORTED_MODULE_2__["createIconNoSpan"])('rowDrag', this.beans.gridOptionsWrapper, null));
29706 // we need to stop the event propagation here to avoid starting a range selection while dragging
29707 this.addGuiEventListener('mousedown', function (e) {
29708 e.stopPropagation();
29709 });
29710 this.addDragSource();
29711 this.checkVisibility();
29712 };
29713 DndSourceComp.prototype.addDragSource = function () {
29714 this.addGuiEventListener('dragstart', this.onDragStart.bind(this));
29715 };
29716 DndSourceComp.prototype.onDragStart = function (dragEvent) {
29717 var _this = this;
29718 var providedOnRowDrag = this.column.getColDef().dndSourceOnRowDrag;
29719 dragEvent.dataTransfer.setDragImage(this.eCell, 0, 0);
29720 // default behaviour is to convert data to json and set into drag component
29721 var defaultOnRowDrag = function () {
29722 try {
29723 var jsonData = JSON.stringify(_this.rowNode.data);
29724 dragEvent.dataTransfer.setData('application/json', jsonData);
29725 dragEvent.dataTransfer.setData('text/plain', jsonData);
29726 }
29727 catch (e) {
29728 // if we cannot convert the data to json, then we do not set the type
29729 }
29730 };
29731 if (providedOnRowDrag) {
29732 var params = {
29733 rowNode: this.rowNode, dragEvent: dragEvent,
29734 api: this.gridOptionsWrapper.getApi(),
29735 columnApi: this.gridOptionsWrapper.getColumnApi(),
29736 context: this.gridOptionsWrapper.getContext()
29737 };
29738 providedOnRowDrag(params);
29739 }
29740 else {
29741 defaultOnRowDrag();
29742 }
29743 };
29744 DndSourceComp.prototype.checkVisibility = function () {
29745 var visible = this.column.isDndSource(this.rowNode);
29746 this.setDisplayed(visible);
29747 };
29748 __decorate([
29749 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
29750 ], DndSourceComp.prototype, "postConstruct", null);
29751 return DndSourceComp;
29752}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
29753
29754
29755
29756
29757
29758/***/ }),
29759/* 131 */
29760/***/ (function(module, __webpack_exports__, __webpack_require__) {
29761
29762"use strict";
29763__webpack_require__.r(__webpack_exports__);
29764/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ViewportSizeFeature", function() { return ViewportSizeFeature; });
29765/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
29766/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
29767/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23);
29768/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42);
29769/**
29770 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
29771 * @version v27.3.0
29772 * @link https://www.ag-grid.com/
29773 * @license MIT
29774 */
29775var __extends = (undefined && undefined.__extends) || (function () {
29776 var extendStatics = function (d, b) {
29777 extendStatics = Object.setPrototypeOf ||
29778 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
29779 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
29780 return extendStatics(d, b);
29781 };
29782 return function (d, b) {
29783 extendStatics(d, b);
29784 function __() { this.constructor = d; }
29785 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
29786 };
29787})();
29788var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
29789 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
29790 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
29791 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
29792 return c > 3 && r && Object.defineProperty(target, key, r), r;
29793};
29794
29795
29796
29797
29798// listens to changes in the center viewport size, for column and row virtualisation,
29799// and adjusts grid as necessary. there are two viewports, one for horizontal and one for
29800// vertical scrolling.
29801var ViewportSizeFeature = /** @class */ (function (_super) {
29802 __extends(ViewportSizeFeature, _super);
29803 function ViewportSizeFeature(centerContainerCtrl) {
29804 var _this = _super.call(this) || this;
29805 _this.centerContainerCtrl = centerContainerCtrl;
29806 return _this;
29807 }
29808 ViewportSizeFeature.prototype.postConstruct = function () {
29809 var _this = this;
29810 this.ctrlsService.whenReady(function () {
29811 _this.gridBodyCtrl = _this.ctrlsService.getGridBodyCtrl();
29812 _this.listenForResize();
29813 });
29814 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_SCROLLBAR_WIDTH_CHANGED, this.onScrollbarWidthChanged.bind(this));
29815 };
29816 ViewportSizeFeature.prototype.listenForResize = function () {
29817 var _this = this;
29818 var listener = function () { return _this.onCenterViewportResized(); };
29819 // centerContainer gets horizontal resizes
29820 this.centerContainerCtrl.registerViewportResizeListener(listener);
29821 // eBodyViewport gets vertical resizes
29822 this.gridBodyCtrl.registerBodyViewportResizeListener(listener);
29823 };
29824 ViewportSizeFeature.prototype.onScrollbarWidthChanged = function () {
29825 this.checkViewportAndScrolls();
29826 };
29827 ViewportSizeFeature.prototype.onCenterViewportResized = function () {
29828 if (this.centerContainerCtrl.isViewportVisible()) {
29829 this.checkViewportAndScrolls();
29830 var newWidth = this.centerContainerCtrl.getCenterWidth();
29831 if (newWidth !== this.centerWidth) {
29832 this.centerWidth = newWidth;
29833 this.columnModel.refreshFlexedColumns({ viewportWidth: this.centerWidth, updateBodyWidths: true, fireResizedEvent: true });
29834 }
29835 }
29836 else {
29837 this.bodyHeight = 0;
29838 }
29839 };
29840 // gets called every time the viewport size changes. we use this to check visibility of scrollbars
29841 // in the grid panel, and also to check size and position of viewport for row and column virtualisation.
29842 ViewportSizeFeature.prototype.checkViewportAndScrolls = function () {
29843 // results in updating anything that depends on scroll showing
29844 this.updateScrollVisibleService();
29845 // fires event if height changes, used by PaginationService, HeightScalerService, RowRenderer
29846 this.checkBodyHeight();
29847 // check for virtual columns for ColumnController
29848 this.onHorizontalViewportChanged();
29849 this.gridBodyCtrl.getScrollFeature().checkScrollLeft();
29850 };
29851 ViewportSizeFeature.prototype.getBodyHeight = function () {
29852 return this.bodyHeight;
29853 };
29854 ViewportSizeFeature.prototype.checkBodyHeight = function () {
29855 var eBodyViewport = this.gridBodyCtrl.getBodyViewportElement();
29856 var bodyHeight = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["getInnerHeight"])(eBodyViewport);
29857 if (this.bodyHeight !== bodyHeight) {
29858 this.bodyHeight = bodyHeight;
29859 var event_1 = {
29860 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_BODY_HEIGHT_CHANGED,
29861 api: this.gridApi,
29862 columnApi: this.columnApi
29863 };
29864 this.eventService.dispatchEvent(event_1);
29865 }
29866 };
29867 ViewportSizeFeature.prototype.updateScrollVisibleService = function () {
29868 // because of column animation (which takes 200ms), we have to do this twice.
29869 // eg if user removes cols anywhere except at the RHS, then the cols on the RHS
29870 // will animate to the left to fill the gap. this animation means just after
29871 // the cols are removed, the remaining cols are still in the original location
29872 // at the start of the animation, so pre animation the H scrollbar is still needed,
29873 // but post animation it is not.
29874 this.updateScrollVisibleServiceImpl();
29875 setTimeout(this.updateScrollVisibleServiceImpl.bind(this), 500);
29876 };
29877 ViewportSizeFeature.prototype.updateScrollVisibleServiceImpl = function () {
29878 var params = {
29879 horizontalScrollShowing: this.isHorizontalScrollShowing(),
29880 verticalScrollShowing: this.gridBodyCtrl.isVerticalScrollShowing()
29881 };
29882 this.scrollVisibleService.setScrollsVisible(params);
29883 // fix - gridComp should just listen to event from above
29884 this.gridBodyCtrl.setVerticalScrollPaddingVisible(params.verticalScrollShowing);
29885 };
29886 ViewportSizeFeature.prototype.isHorizontalScrollShowing = function () {
29887 var isAlwaysShowHorizontalScroll = this.gridOptionsWrapper.isAlwaysShowHorizontalScroll();
29888 return isAlwaysShowHorizontalScroll || this.centerContainerCtrl.isViewportHScrollShowing();
29889 };
29890 // this gets called whenever a change in the viewport, so we can inform column controller it has to work
29891 // out the virtual columns again. gets called from following locations:
29892 // + ensureColVisible, scroll, init, layoutChanged, displayedColumnsChanged, API (doLayout)
29893 ViewportSizeFeature.prototype.onHorizontalViewportChanged = function () {
29894 var scrollWidth = this.centerContainerCtrl.getCenterWidth();
29895 var scrollPosition = this.centerContainerCtrl.getViewportScrollLeft();
29896 this.columnModel.setViewportPosition(scrollWidth, scrollPosition);
29897 };
29898 __decorate([
29899 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('ctrlsService')
29900 ], ViewportSizeFeature.prototype, "ctrlsService", void 0);
29901 __decorate([
29902 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
29903 ], ViewportSizeFeature.prototype, "columnModel", void 0);
29904 __decorate([
29905 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('scrollVisibleService')
29906 ], ViewportSizeFeature.prototype, "scrollVisibleService", void 0);
29907 __decorate([
29908 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnApi')
29909 ], ViewportSizeFeature.prototype, "columnApi", void 0);
29910 __decorate([
29911 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridApi')
29912 ], ViewportSizeFeature.prototype, "gridApi", void 0);
29913 __decorate([
29914 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
29915 ], ViewportSizeFeature.prototype, "postConstruct", null);
29916 return ViewportSizeFeature;
29917}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
29918
29919
29920
29921
29922
29923/***/ }),
29924/* 132 */
29925/***/ (function(module, __webpack_exports__, __webpack_require__) {
29926
29927"use strict";
29928__webpack_require__.r(__webpack_exports__);
29929/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SetPinnedLeftWidthFeature", function() { return SetPinnedLeftWidthFeature; });
29930/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
29931/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
29932/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(24);
29933/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42);
29934/**
29935 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
29936 * @version v27.3.0
29937 * @link https://www.ag-grid.com/
29938 * @license MIT
29939 */
29940var __extends = (undefined && undefined.__extends) || (function () {
29941 var extendStatics = function (d, b) {
29942 extendStatics = Object.setPrototypeOf ||
29943 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
29944 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
29945 return extendStatics(d, b);
29946 };
29947 return function (d, b) {
29948 extendStatics(d, b);
29949 function __() { this.constructor = d; }
29950 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
29951 };
29952})();
29953var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
29954 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
29955 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
29956 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
29957 return c > 3 && r && Object.defineProperty(target, key, r), r;
29958};
29959
29960
29961
29962
29963var SetPinnedLeftWidthFeature = /** @class */ (function (_super) {
29964 __extends(SetPinnedLeftWidthFeature, _super);
29965 function SetPinnedLeftWidthFeature(element) {
29966 var _this = _super.call(this) || this;
29967 _this.element = element;
29968 return _this;
29969 }
29970 SetPinnedLeftWidthFeature.prototype.postConstruct = function () {
29971 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_LEFT_PINNED_WIDTH_CHANGED, this.onPinnedLeftWidthChanged.bind(this));
29972 };
29973 SetPinnedLeftWidthFeature.prototype.onPinnedLeftWidthChanged = function () {
29974 var leftWidth = this.pinnedWidthService.getPinnedLeftWidth();
29975 var displayed = leftWidth > 0;
29976 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["setDisplayed"])(this.element, displayed);
29977 if (displayed) {
29978 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["setFixedWidth"])(this.element, leftWidth);
29979 }
29980 };
29981 __decorate([
29982 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('pinnedWidthService')
29983 ], SetPinnedLeftWidthFeature.prototype, "pinnedWidthService", void 0);
29984 __decorate([
29985 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
29986 ], SetPinnedLeftWidthFeature.prototype, "postConstruct", null);
29987 return SetPinnedLeftWidthFeature;
29988}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
29989
29990
29991
29992
29993
29994/***/ }),
29995/* 133 */
29996/***/ (function(module, __webpack_exports__, __webpack_require__) {
29997
29998"use strict";
29999__webpack_require__.r(__webpack_exports__);
30000/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SetPinnedRightWidthFeature", function() { return SetPinnedRightWidthFeature; });
30001/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
30002/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(24);
30003/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
30004/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20);
30005/**
30006 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
30007 * @version v27.3.0
30008 * @link https://www.ag-grid.com/
30009 * @license MIT
30010 */
30011var __extends = (undefined && undefined.__extends) || (function () {
30012 var extendStatics = function (d, b) {
30013 extendStatics = Object.setPrototypeOf ||
30014 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
30015 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
30016 return extendStatics(d, b);
30017 };
30018 return function (d, b) {
30019 extendStatics(d, b);
30020 function __() { this.constructor = d; }
30021 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
30022 };
30023})();
30024var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
30025 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
30026 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
30027 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
30028 return c > 3 && r && Object.defineProperty(target, key, r), r;
30029};
30030
30031
30032
30033
30034var SetPinnedRightWidthFeature = /** @class */ (function (_super) {
30035 __extends(SetPinnedRightWidthFeature, _super);
30036 function SetPinnedRightWidthFeature(element) {
30037 var _this = _super.call(this) || this;
30038 _this.element = element;
30039 return _this;
30040 }
30041 SetPinnedRightWidthFeature.prototype.postConstruct = function () {
30042 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_RIGHT_PINNED_WIDTH_CHANGED, this.onPinnedRightWidthChanged.bind(this));
30043 };
30044 SetPinnedRightWidthFeature.prototype.onPinnedRightWidthChanged = function () {
30045 var rightWidth = this.pinnedWidthService.getPinnedRightWidth();
30046 var displayed = rightWidth > 0;
30047 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setDisplayed"])(this.element, displayed);
30048 if (displayed) {
30049 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setFixedWidth"])(this.element, rightWidth);
30050 }
30051 };
30052 __decorate([
30053 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('pinnedWidthService')
30054 ], SetPinnedRightWidthFeature.prototype, "pinnedWidthService", void 0);
30055 __decorate([
30056 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
30057 ], SetPinnedRightWidthFeature.prototype, "postConstruct", null);
30058 return SetPinnedRightWidthFeature;
30059}(_context_beanStub__WEBPACK_IMPORTED_MODULE_3__["BeanStub"]));
30060
30061
30062
30063
30064
30065/***/ }),
30066/* 134 */
30067/***/ (function(module, __webpack_exports__, __webpack_require__) {
30068
30069"use strict";
30070__webpack_require__.r(__webpack_exports__);
30071/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SetHeightFeature", function() { return SetHeightFeature; });
30072/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
30073/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
30074/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(24);
30075/**
30076 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
30077 * @version v27.3.0
30078 * @link https://www.ag-grid.com/
30079 * @license MIT
30080 */
30081var __extends = (undefined && undefined.__extends) || (function () {
30082 var extendStatics = function (d, b) {
30083 extendStatics = Object.setPrototypeOf ||
30084 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
30085 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
30086 return extendStatics(d, b);
30087 };
30088 return function (d, b) {
30089 extendStatics(d, b);
30090 function __() { this.constructor = d; }
30091 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
30092 };
30093})();
30094var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
30095 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
30096 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
30097 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
30098 return c > 3 && r && Object.defineProperty(target, key, r), r;
30099};
30100
30101
30102
30103var SetHeightFeature = /** @class */ (function (_super) {
30104 __extends(SetHeightFeature, _super);
30105 function SetHeightFeature(eContainer, eWrapper) {
30106 var _this = _super.call(this) || this;
30107 _this.eContainer = eContainer;
30108 _this.eWrapper = eWrapper;
30109 return _this;
30110 }
30111 SetHeightFeature.prototype.postConstruct = function () {
30112 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_CONTAINER_HEIGHT_CHANGED, this.onHeightChanged.bind(this));
30113 };
30114 SetHeightFeature.prototype.onHeightChanged = function () {
30115 var height = this.maxDivHeightScaler.getUiContainerHeight();
30116 var heightString = height != null ? height + "px" : "";
30117 this.eContainer.style.height = heightString;
30118 if (this.eWrapper) {
30119 this.eWrapper.style.height = heightString;
30120 }
30121 };
30122 __decorate([
30123 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])("rowContainerHeightService")
30124 ], SetHeightFeature.prototype, "maxDivHeightScaler", void 0);
30125 __decorate([
30126 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
30127 ], SetHeightFeature.prototype, "postConstruct", null);
30128 return SetHeightFeature;
30129}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
30130
30131
30132
30133
30134
30135/***/ }),
30136/* 135 */
30137/***/ (function(module, __webpack_exports__, __webpack_require__) {
30138
30139"use strict";
30140__webpack_require__.r(__webpack_exports__);
30141/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DragListenerFeature", function() { return DragListenerFeature; });
30142/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
30143/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7);
30144/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
30145/**
30146 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
30147 * @version v27.3.0
30148 * @link https://www.ag-grid.com/
30149 * @license MIT
30150 */
30151var __extends = (undefined && undefined.__extends) || (function () {
30152 var extendStatics = function (d, b) {
30153 extendStatics = Object.setPrototypeOf ||
30154 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
30155 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
30156 return extendStatics(d, b);
30157 };
30158 return function (d, b) {
30159 extendStatics(d, b);
30160 function __() { this.constructor = d; }
30161 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
30162 };
30163})();
30164var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
30165 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
30166 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
30167 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
30168 return c > 3 && r && Object.defineProperty(target, key, r), r;
30169};
30170
30171
30172
30173var DragListenerFeature = /** @class */ (function (_super) {
30174 __extends(DragListenerFeature, _super);
30175 function DragListenerFeature(eContainer) {
30176 var _this = _super.call(this) || this;
30177 _this.eContainer = eContainer;
30178 return _this;
30179 }
30180 DragListenerFeature.prototype.postConstruct = function () {
30181 var _this = this;
30182 if (!this.gridOptionsWrapper.isEnableRangeSelection() || // no range selection if no property
30183 Object(_utils_generic__WEBPACK_IMPORTED_MODULE_1__["missing"])(this.rangeService) // no range selection if not enterprise version
30184 ) {
30185 return;
30186 }
30187 var params = {
30188 dragStartPixels: 0,
30189 eElement: this.eContainer,
30190 onDragStart: this.rangeService.onDragStart.bind(this.rangeService),
30191 onDragStop: this.rangeService.onDragStop.bind(this.rangeService),
30192 onDragging: this.rangeService.onDragging.bind(this.rangeService)
30193 };
30194 this.dragService.addDragSource(params);
30195 this.addDestroyFunc(function () { return _this.dragService.removeDragSource(params); });
30196 };
30197 __decorate([
30198 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Optional"])('rangeService')
30199 ], DragListenerFeature.prototype, "rangeService", void 0);
30200 __decorate([
30201 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('dragService')
30202 ], DragListenerFeature.prototype, "dragService", void 0);
30203 __decorate([
30204 _context_context__WEBPACK_IMPORTED_MODULE_2__["PostConstruct"]
30205 ], DragListenerFeature.prototype, "postConstruct", null);
30206 return DragListenerFeature;
30207}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
30208
30209
30210
30211
30212
30213/***/ }),
30214/* 136 */
30215/***/ (function(module, __webpack_exports__, __webpack_require__) {
30216
30217"use strict";
30218__webpack_require__.r(__webpack_exports__);
30219/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CenterWidthFeature", function() { return CenterWidthFeature; });
30220/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
30221/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
30222/* harmony import */ var _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(112);
30223/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15);
30224/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(24);
30225/**
30226 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
30227 * @version v27.3.0
30228 * @link https://www.ag-grid.com/
30229 * @license MIT
30230 */
30231var __extends = (undefined && undefined.__extends) || (function () {
30232 var extendStatics = function (d, b) {
30233 extendStatics = Object.setPrototypeOf ||
30234 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
30235 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
30236 return extendStatics(d, b);
30237 };
30238 return function (d, b) {
30239 extendStatics(d, b);
30240 function __() { this.constructor = d; }
30241 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
30242 };
30243})();
30244var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
30245 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
30246 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
30247 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
30248 return c > 3 && r && Object.defineProperty(target, key, r), r;
30249};
30250
30251
30252
30253
30254
30255var CenterWidthFeature = /** @class */ (function (_super) {
30256 __extends(CenterWidthFeature, _super);
30257 function CenterWidthFeature(callback) {
30258 var _this = _super.call(this) || this;
30259 _this.callback = callback;
30260 return _this;
30261 }
30262 CenterWidthFeature.prototype.postConstruct = function () {
30263 var listener = this.setWidth.bind(this);
30264 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_2__["GridOptionsWrapper"].PROP_DOM_LAYOUT, listener);
30265 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED, listener);
30266 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, listener);
30267 this.setWidth();
30268 };
30269 CenterWidthFeature.prototype.setWidth = function () {
30270 var columnModel = this.columnModel;
30271 var printLayout = this.gridOptionsWrapper.getDomLayout() === _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].DOM_LAYOUT_PRINT;
30272 var centerWidth = columnModel.getBodyContainerWidth();
30273 var leftWidth = columnModel.getDisplayedColumnsLeftWidth();
30274 var rightWidth = columnModel.getDisplayedColumnsRightWidth();
30275 var totalWidth = printLayout ? centerWidth + leftWidth + rightWidth : centerWidth;
30276 this.callback(totalWidth);
30277 };
30278 __decorate([
30279 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
30280 ], CenterWidthFeature.prototype, "columnModel", void 0);
30281 __decorate([
30282 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
30283 ], CenterWidthFeature.prototype, "postConstruct", null);
30284 return CenterWidthFeature;
30285}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
30286
30287
30288
30289
30290
30291/***/ }),
30292/* 137 */
30293/***/ (function(module, __webpack_exports__, __webpack_require__) {
30294
30295"use strict";
30296__webpack_require__.r(__webpack_exports__);
30297/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ScrollVisibleService", function() { return ScrollVisibleService; });
30298/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
30299/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
30300/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23);
30301/**
30302 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
30303 * @version v27.3.0
30304 * @link https://www.ag-grid.com/
30305 * @license MIT
30306 */
30307var __extends = (undefined && undefined.__extends) || (function () {
30308 var extendStatics = function (d, b) {
30309 extendStatics = Object.setPrototypeOf ||
30310 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
30311 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
30312 return extendStatics(d, b);
30313 };
30314 return function (d, b) {
30315 extendStatics(d, b);
30316 function __() { this.constructor = d; }
30317 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
30318 };
30319})();
30320var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
30321 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
30322 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
30323 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
30324 return c > 3 && r && Object.defineProperty(target, key, r), r;
30325};
30326
30327
30328
30329var ScrollVisibleService = /** @class */ (function (_super) {
30330 __extends(ScrollVisibleService, _super);
30331 function ScrollVisibleService() {
30332 return _super !== null && _super.apply(this, arguments) || this;
30333 }
30334 ScrollVisibleService.prototype.postConstruct = function () {
30335 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));
30336 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onDisplayedColumnsWidthChanged.bind(this));
30337 };
30338 ScrollVisibleService.prototype.onDisplayedColumnsChanged = function () {
30339 this.update();
30340 };
30341 ScrollVisibleService.prototype.onDisplayedColumnsWidthChanged = function () {
30342 this.update();
30343 };
30344 ScrollVisibleService.prototype.update = function () {
30345 // because of column animation (which takes 200ms), we have to do this twice.
30346 // eg if user removes cols anywhere except at the RHS, then the cols on the RHS
30347 // will animate to the left to fill the gap. this animation means just after
30348 // the cols are removed, the remaining cols are still in the original location
30349 // at the start of the animation, so pre animation the H scrollbar is still needed,
30350 // but post animation it is not.
30351 this.updateImpl();
30352 setTimeout(this.updateImpl.bind(this), 500);
30353 };
30354 ScrollVisibleService.prototype.updateImpl = function () {
30355 var centerRowCtrl = this.ctrlsService.getCenterRowContainerCtrl();
30356 if (!centerRowCtrl) {
30357 return;
30358 }
30359 var params = {
30360 horizontalScrollShowing: centerRowCtrl.isHorizontalScrollShowing(),
30361 verticalScrollShowing: this.isVerticalScrollShowing()
30362 };
30363 this.setScrollsVisible(params);
30364 };
30365 ScrollVisibleService.prototype.setScrollsVisible = function (params) {
30366 var atLeastOneDifferent = this.horizontalScrollShowing !== params.horizontalScrollShowing ||
30367 this.verticalScrollShowing !== params.verticalScrollShowing;
30368 if (atLeastOneDifferent) {
30369 this.horizontalScrollShowing = params.horizontalScrollShowing;
30370 this.verticalScrollShowing = params.verticalScrollShowing;
30371 var event_1 = {
30372 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_SCROLL_VISIBILITY_CHANGED,
30373 api: this.gridApi,
30374 columnApi: this.columnApi
30375 };
30376 this.eventService.dispatchEvent(event_1);
30377 }
30378 };
30379 // used by pagination service - to know page height
30380 ScrollVisibleService.prototype.isHorizontalScrollShowing = function () {
30381 return this.horizontalScrollShowing;
30382 };
30383 // used by header container
30384 ScrollVisibleService.prototype.isVerticalScrollShowing = function () {
30385 return this.verticalScrollShowing;
30386 };
30387 __decorate([
30388 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
30389 ], ScrollVisibleService.prototype, "columnApi", void 0);
30390 __decorate([
30391 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
30392 ], ScrollVisibleService.prototype, "gridApi", void 0);
30393 __decorate([
30394 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
30395 ], ScrollVisibleService.prototype, "ctrlsService", void 0);
30396 __decorate([
30397 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
30398 ], ScrollVisibleService.prototype, "postConstruct", null);
30399 ScrollVisibleService = __decorate([
30400 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('scrollVisibleService')
30401 ], ScrollVisibleService);
30402 return ScrollVisibleService;
30403}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
30404
30405
30406
30407
30408
30409/***/ }),
30410/* 138 */
30411/***/ (function(module, __webpack_exports__, __webpack_require__) {
30412
30413"use strict";
30414__webpack_require__.r(__webpack_exports__);
30415/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MouseEventService", function() { return MouseEventService; });
30416/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
30417/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(37);
30418/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
30419/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20);
30420/* harmony import */ var _utils_event__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(21);
30421/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7);
30422/* harmony import */ var _rendering_cell_cellCtrl__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(121);
30423/**
30424 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
30425 * @version v27.3.0
30426 * @link https://www.ag-grid.com/
30427 * @license MIT
30428 */
30429var __extends = (undefined && undefined.__extends) || (function () {
30430 var extendStatics = function (d, b) {
30431 extendStatics = Object.setPrototypeOf ||
30432 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
30433 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
30434 return extendStatics(d, b);
30435 };
30436 return function (d, b) {
30437 extendStatics(d, b);
30438 function __() { this.constructor = d; }
30439 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
30440 };
30441})();
30442var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
30443 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
30444 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
30445 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
30446 return c > 3 && r && Object.defineProperty(target, key, r), r;
30447};
30448
30449
30450
30451
30452
30453
30454
30455
30456var MouseEventService = /** @class */ (function (_super) {
30457 __extends(MouseEventService, _super);
30458 function MouseEventService() {
30459 var _this = _super !== null && _super.apply(this, arguments) || this;
30460 _this.gridInstanceId = MouseEventService_1.gridInstanceSequence.next();
30461 return _this;
30462 }
30463 MouseEventService_1 = MouseEventService;
30464 // we put the instance id onto the main DOM element. this is used for events, when grids are inside grids,
30465 // so the grid can work out if the even came from this grid or a grid inside this one. see the ctrl+v logic
30466 // for where this is used.
30467 MouseEventService.prototype.stampTopLevelGridCompWithGridInstance = function (eGridDiv) {
30468 eGridDiv[MouseEventService_1.GRID_DOM_KEY] = this.gridInstanceId;
30469 };
30470 MouseEventService.prototype.getRenderedCellForEvent = function (event) {
30471 return Object(_utils_event__WEBPACK_IMPORTED_MODULE_4__["getCtrlForEvent"])(this.gridOptionsWrapper, event, _rendering_cell_cellCtrl__WEBPACK_IMPORTED_MODULE_6__["CellCtrl"].DOM_DATA_KEY_CELL_CTRL);
30472 };
30473 // walks the path of the event, and returns true if this grid is the first one that it finds. if doing
30474 // master / detail grids, and a child grid is found, then it returns false. this stops things like copy/paste
30475 // getting executed on many grids at the same time.
30476 MouseEventService.prototype.isEventFromThisGrid = function (event) {
30477 var res = this.isElementInThisGrid(event.target);
30478 return res;
30479 };
30480 MouseEventService.prototype.isElementInThisGrid = function (element) {
30481 var pointer = element;
30482 while (pointer) {
30483 var instanceId = pointer[MouseEventService_1.GRID_DOM_KEY];
30484 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["exists"])(instanceId)) {
30485 var eventFromThisGrid = instanceId === this.gridInstanceId;
30486 return eventFromThisGrid;
30487 }
30488 pointer = pointer.parentElement;
30489 }
30490 return false;
30491 };
30492 MouseEventService.prototype.getCellPositionForEvent = function (event) {
30493 var cellComp = this.getRenderedCellForEvent(event);
30494 return cellComp ? cellComp.getCellPosition() : null;
30495 };
30496 MouseEventService.prototype.getNormalisedPosition = function (event) {
30497 var gridPanelHasScrolls = this.gridOptionsWrapper.getDomLayout() === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].DOM_LAYOUT_NORMAL;
30498 var e = event;
30499 var x;
30500 var y;
30501 if (e.clientX != null || e.clientY != null) {
30502 x = e.clientX;
30503 y = e.clientY;
30504 }
30505 else {
30506 x = e.x;
30507 y = e.y;
30508 }
30509 if (gridPanelHasScrolls) {
30510 var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
30511 var vRange = gridBodyCon.getScrollFeature().getVScrollPosition();
30512 var hRange = gridBodyCon.getScrollFeature().getHScrollPosition();
30513 x += hRange.left;
30514 y += vRange.top;
30515 }
30516 return { x: x, y: y };
30517 };
30518 var MouseEventService_1;
30519 MouseEventService.gridInstanceSequence = new _utils__WEBPACK_IMPORTED_MODULE_1__["NumberSequence"]();
30520 MouseEventService.GRID_DOM_KEY = '__ag_grid_instance';
30521 __decorate([
30522 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
30523 ], MouseEventService.prototype, "ctrlsService", void 0);
30524 MouseEventService = MouseEventService_1 = __decorate([
30525 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('mouseEventService')
30526 ], MouseEventService);
30527 return MouseEventService;
30528}(_context_beanStub__WEBPACK_IMPORTED_MODULE_3__["BeanStub"]));
30529
30530
30531
30532
30533
30534/***/ }),
30535/* 139 */
30536/***/ (function(module, __webpack_exports__, __webpack_require__) {
30537
30538"use strict";
30539__webpack_require__.r(__webpack_exports__);
30540/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NavigationService", function() { return NavigationService; });
30541/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
30542/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
30543/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
30544/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(18);
30545/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(65);
30546/* harmony import */ var _rendering_cell_cellCtrl__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(121);
30547/* harmony import */ var _rendering_row_rowCtrl__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(120);
30548/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(14);
30549/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(15);
30550/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(24);
30551/**
30552 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
30553 * @version v27.3.0
30554 * @link https://www.ag-grid.com/
30555 * @license MIT
30556 */
30557var __extends = (undefined && undefined.__extends) || (function () {
30558 var extendStatics = function (d, b) {
30559 extendStatics = Object.setPrototypeOf ||
30560 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
30561 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
30562 return extendStatics(d, b);
30563 };
30564 return function (d, b) {
30565 extendStatics(d, b);
30566 function __() { this.constructor = d; }
30567 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
30568 };
30569})();
30570var __assign = (undefined && undefined.__assign) || function () {
30571 __assign = Object.assign || function(t) {
30572 for (var s, i = 1, n = arguments.length; i < n; i++) {
30573 s = arguments[i];
30574 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
30575 t[p] = s[p];
30576 }
30577 return t;
30578 };
30579 return __assign.apply(this, arguments);
30580};
30581var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
30582 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
30583 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
30584 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
30585 return c > 3 && r && Object.defineProperty(target, key, r), r;
30586};
30587
30588
30589
30590
30591
30592
30593
30594
30595
30596
30597var NavigationService = /** @class */ (function (_super) {
30598 __extends(NavigationService, _super);
30599 function NavigationService() {
30600 var _this = _super.call(this) || this;
30601 _this.onPageDown = Object(_utils_function__WEBPACK_IMPORTED_MODULE_7__["throttle"])(_this.onPageDown, 100);
30602 _this.onPageUp = Object(_utils_function__WEBPACK_IMPORTED_MODULE_7__["throttle"])(_this.onPageUp, 100);
30603 return _this;
30604 }
30605 NavigationService.prototype.postConstruct = function () {
30606 var _this = this;
30607 this.ctrlsService.whenReady(function (p) {
30608 _this.gridBodyCon = p.gridBodyCtrl;
30609 });
30610 };
30611 NavigationService.prototype.handlePageScrollingKey = function (event) {
30612 var key = event.key;
30613 var alt = event.altKey;
30614 var ctrl = event.ctrlKey || event.metaKey;
30615 var rangeServiceShouldHandleShift = !!this.rangeService && event.shiftKey;
30616 var currentCell = this.mouseEventService.getCellPositionForEvent(event);
30617 if (!currentCell) {
30618 return false;
30619 }
30620 var processed = false;
30621 switch (key) {
30622 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].PAGE_HOME:
30623 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].PAGE_END:
30624 // handle home and end when ctrl & alt are NOT pressed
30625 if (!ctrl && !alt) {
30626 this.onHomeOrEndKey(key);
30627 processed = true;
30628 }
30629 break;
30630 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].LEFT:
30631 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].RIGHT:
30632 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].UP:
30633 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].DOWN:
30634 // handle when ctrl is pressed only, if shift is pressed
30635 // it will be handled by the rangeService
30636 if (ctrl && !alt && !rangeServiceShouldHandleShift) {
30637 this.onCtrlUpDownLeftRight(key, currentCell);
30638 processed = true;
30639 }
30640 break;
30641 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].PAGE_DOWN:
30642 // handle page up and page down when ctrl & alt are NOT pressed
30643 if (!ctrl && !alt) {
30644 this.onPageDown(currentCell);
30645 processed = true;
30646 }
30647 break;
30648 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].PAGE_UP:
30649 // handle page up and page down when ctrl & alt are NOT pressed
30650 if (!ctrl && !alt) {
30651 this.onPageUp(currentCell);
30652 processed = true;
30653 }
30654 break;
30655 }
30656 if (processed) {
30657 event.preventDefault();
30658 }
30659 return processed;
30660 };
30661 NavigationService.prototype.navigateTo = function (navigateParams) {
30662 var scrollIndex = navigateParams.scrollIndex, scrollType = navigateParams.scrollType, scrollColumn = navigateParams.scrollColumn, focusIndex = navigateParams.focusIndex, focusColumn = navigateParams.focusColumn;
30663 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(scrollColumn) && !scrollColumn.isPinned()) {
30664 this.gridBodyCon.getScrollFeature().ensureColumnVisible(scrollColumn);
30665 }
30666 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(scrollIndex)) {
30667 this.gridBodyCon.getScrollFeature().ensureIndexVisible(scrollIndex, scrollType);
30668 }
30669 // make sure the cell is rendered, needed if we are to focus
30670 this.animationFrameService.flushAllFrames();
30671 // if we don't do this, the range will be left on the last cell, which will leave the last focused cell
30672 // highlighted.
30673 this.focusService.setFocusedCell(focusIndex, focusColumn, null, true);
30674 if (this.rangeService) {
30675 var cellPosition = { rowIndex: focusIndex, rowPinned: null, column: focusColumn };
30676 this.rangeService.setRangeToCell(cellPosition);
30677 }
30678 };
30679 NavigationService.prototype.onPageDown = function (gridCell) {
30680 var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
30681 var scrollPosition = gridBodyCon.getScrollFeature().getVScrollPosition();
30682 var pixelsInOnePage = this.getViewportHeight();
30683 var pagingPixelOffset = this.paginationProxy.getPixelOffset();
30684 var currentPageBottomPixel = scrollPosition.top + pixelsInOnePage;
30685 var currentPageBottomRow = this.paginationProxy.getRowIndexAtPixel(currentPageBottomPixel + pagingPixelOffset);
30686 if (this.columnModel.isAutoRowHeightActive()) {
30687 this.navigateToNextPageWithAutoHeight(gridCell, currentPageBottomRow);
30688 }
30689 else {
30690 this.navigateToNextPage(gridCell, currentPageBottomRow);
30691 }
30692 };
30693 NavigationService.prototype.onPageUp = function (gridCell) {
30694 var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
30695 var scrollPosition = gridBodyCon.getScrollFeature().getVScrollPosition();
30696 var pagingPixelOffset = this.paginationProxy.getPixelOffset();
30697 var currentPageTopPixel = scrollPosition.top;
30698 var currentPageTopRow = this.paginationProxy.getRowIndexAtPixel(currentPageTopPixel + pagingPixelOffset);
30699 if (this.columnModel.isAutoRowHeightActive()) {
30700 this.navigateToNextPageWithAutoHeight(gridCell, currentPageTopRow, true);
30701 }
30702 else {
30703 this.navigateToNextPage(gridCell, currentPageTopRow, true);
30704 }
30705 };
30706 NavigationService.prototype.navigateToNextPage = function (gridCell, scrollIndex, up) {
30707 if (up === void 0) { up = false; }
30708 var _a, _b;
30709 var pixelsInOnePage = this.getViewportHeight();
30710 var firstRow = this.paginationProxy.getPageFirstRow();
30711 var lastRow = this.paginationProxy.getPageLastRow();
30712 var pagingPixelOffset = this.paginationProxy.getPixelOffset();
30713 var currentRowNode = this.paginationProxy.getRow(gridCell.rowIndex);
30714 var rowPixelDiff = up
30715 ? (((_a = currentRowNode) === null || _a === void 0 ? void 0 : _a.rowHeight) - pixelsInOnePage - pagingPixelOffset)
30716 : (pixelsInOnePage - pagingPixelOffset);
30717 var nextCellPixel = ((_b = currentRowNode) === null || _b === void 0 ? void 0 : _b.rowTop) + rowPixelDiff;
30718 var focusIndex = this.paginationProxy.getRowIndexAtPixel(nextCellPixel + pagingPixelOffset);
30719 if (focusIndex === gridCell.rowIndex) {
30720 var diff = up ? -1 : 1;
30721 scrollIndex = focusIndex = gridCell.rowIndex + diff;
30722 }
30723 var scrollType;
30724 if (up) {
30725 scrollType = 'bottom';
30726 if (focusIndex < firstRow) {
30727 focusIndex = firstRow;
30728 }
30729 if (scrollIndex < firstRow) {
30730 scrollIndex = firstRow;
30731 }
30732 }
30733 else {
30734 scrollType = 'top';
30735 if (focusIndex > lastRow) {
30736 focusIndex = lastRow;
30737 }
30738 if (scrollIndex > lastRow) {
30739 scrollIndex = lastRow;
30740 }
30741 }
30742 if (this.isRowTallerThanView(focusIndex)) {
30743 scrollIndex = focusIndex;
30744 scrollType = 'top';
30745 }
30746 this.navigateTo({
30747 scrollIndex: scrollIndex,
30748 scrollType: scrollType,
30749 scrollColumn: null,
30750 focusIndex: focusIndex,
30751 focusColumn: gridCell.column
30752 });
30753 };
30754 NavigationService.prototype.navigateToNextPageWithAutoHeight = function (gridCell, scrollIndex, up) {
30755 var _this = this;
30756 if (up === void 0) { up = false; }
30757 // because autoHeight will calculate the height of rows after scroll
30758 // first we scroll towards the required point, then we add a small
30759 // delay to allow the height to be recalculated, check which index
30760 // should be focused and then finally navigate to that index.
30761 // TODO: we should probably have an event fired once to scrollbar has
30762 // settled and all rowHeights have been calculated instead of relying
30763 // on a setTimeout of 50ms.
30764 this.navigateTo({
30765 scrollIndex: scrollIndex,
30766 scrollType: up ? 'bottom' : 'top',
30767 scrollColumn: null,
30768 focusIndex: scrollIndex,
30769 focusColumn: gridCell.column
30770 });
30771 setTimeout(function () {
30772 var focusIndex = _this.getNextFocusIndexForAutoHeight(gridCell, up);
30773 _this.navigateTo({
30774 scrollIndex: scrollIndex,
30775 scrollType: up ? 'bottom' : 'top',
30776 scrollColumn: null,
30777 focusIndex: focusIndex,
30778 focusColumn: gridCell.column
30779 });
30780 }, 50);
30781 };
30782 NavigationService.prototype.getNextFocusIndexForAutoHeight = function (gridCell, up) {
30783 if (up === void 0) { up = false; }
30784 var _a;
30785 var step = up ? -1 : 1;
30786 var pixelsInOnePage = this.getViewportHeight();
30787 var lastRowIndex = this.paginationProxy.getPageLastRow();
30788 var pixelSum = 0;
30789 var currentIndex = gridCell.rowIndex;
30790 while (currentIndex >= 0 && currentIndex <= lastRowIndex) {
30791 var currentCell = this.paginationProxy.getRow(currentIndex);
30792 if (currentCell) {
30793 var currentCellHeight = (_a = currentCell.rowHeight, (_a !== null && _a !== void 0 ? _a : 0));
30794 if (pixelSum + currentCellHeight > pixelsInOnePage) {
30795 break;
30796 }
30797 pixelSum += currentCellHeight;
30798 }
30799 currentIndex += step;
30800 }
30801 return Math.max(0, Math.min(currentIndex, lastRowIndex));
30802 };
30803 NavigationService.prototype.getViewportHeight = function () {
30804 var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
30805 var scrollPosition = gridBodyCon.getScrollFeature().getVScrollPosition();
30806 var scrollbarWidth = this.gridOptionsWrapper.getScrollbarWidth();
30807 var pixelsInOnePage = scrollPosition.bottom - scrollPosition.top;
30808 if (this.ctrlsService.getCenterRowContainerCtrl().isHorizontalScrollShowing()) {
30809 pixelsInOnePage -= scrollbarWidth;
30810 }
30811 return pixelsInOnePage;
30812 };
30813 NavigationService.prototype.isRowTallerThanView = function (rowIndex) {
30814 var rowNode = this.paginationProxy.getRow(rowIndex);
30815 if (!rowNode) {
30816 return false;
30817 }
30818 var rowHeight = rowNode.rowHeight;
30819 if (typeof rowHeight !== 'number') {
30820 return false;
30821 }
30822 return rowHeight > this.getViewportHeight();
30823 };
30824 NavigationService.prototype.onCtrlUpDownLeftRight = function (key, gridCell) {
30825 var cellToFocus = this.cellNavigationService.getNextCellToFocus(key, gridCell, true);
30826 var rowIndex = cellToFocus.rowIndex, column = cellToFocus.column;
30827 this.navigateTo({
30828 scrollIndex: rowIndex,
30829 scrollType: null,
30830 scrollColumn: column,
30831 focusIndex: rowIndex,
30832 focusColumn: column
30833 });
30834 };
30835 // home brings focus to top left cell, end brings focus to bottom right, grid scrolled to bring
30836 // same cell into view (which means either scroll all the way up, or all the way down).
30837 NavigationService.prototype.onHomeOrEndKey = function (key) {
30838 var homeKey = key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].PAGE_HOME;
30839 var allColumns = this.columnModel.getAllDisplayedColumns();
30840 var columnToSelect = homeKey ? allColumns[0] : Object(_utils_array__WEBPACK_IMPORTED_MODULE_3__["last"])(allColumns);
30841 var scrollIndex = homeKey ? this.paginationProxy.getPageFirstRow() : this.paginationProxy.getPageLastRow();
30842 this.navigateTo({
30843 scrollIndex: scrollIndex,
30844 scrollType: null,
30845 scrollColumn: columnToSelect,
30846 focusIndex: scrollIndex,
30847 focusColumn: columnToSelect
30848 });
30849 };
30850 // result of keyboard event
30851 NavigationService.prototype.onTabKeyDown = function (previous, keyboardEvent) {
30852 var backwards = keyboardEvent.shiftKey;
30853 var movedToNextCell = this.tabToNextCellCommon(previous, backwards, keyboardEvent);
30854 if (movedToNextCell) {
30855 // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default
30856 // to the normal tabbing so user can exit the grid.
30857 keyboardEvent.preventDefault();
30858 return;
30859 }
30860 // if we didn't move to next cell, then need to tab out of the cells, ie to the header (if going
30861 // backwards)
30862 if (backwards) {
30863 var _a = previous.getRowPosition(), rowIndex = _a.rowIndex, rowPinned = _a.rowPinned;
30864 var firstRow = rowPinned ? rowIndex === 0 : rowIndex === this.paginationProxy.getPageFirstRow();
30865 if (firstRow) {
30866 keyboardEvent.preventDefault();
30867 this.focusService.focusLastHeader(keyboardEvent);
30868 }
30869 }
30870 else {
30871 // if the case it's a popup editor, the focus is on the editor and not the previous cell.
30872 // in order for the tab navigation to work, we need to focus the browser back onto the
30873 // previous cell.
30874 if (previous instanceof _rendering_cell_cellCtrl__WEBPACK_IMPORTED_MODULE_5__["CellCtrl"]) {
30875 previous.focusCell(true);
30876 }
30877 if (this.focusService.focusNextGridCoreContainer(backwards)) {
30878 keyboardEvent.preventDefault();
30879 }
30880 }
30881 };
30882 // comes from API
30883 NavigationService.prototype.tabToNextCell = function (backwards, event) {
30884 var focusedCell = this.focusService.getFocusedCell();
30885 // if no focus, then cannot navigate
30886 if (!focusedCell) {
30887 return false;
30888 }
30889 var cellOrRow = this.getCellByPosition(focusedCell);
30890 // if cell is not rendered, means user has scrolled away from the cell
30891 // or that the focusedCell is a Full Width Row
30892 if (!cellOrRow) {
30893 cellOrRow = this.rowRenderer.getRowByPosition(focusedCell);
30894 if (!cellOrRow || !cellOrRow.isFullWidth()) {
30895 return false;
30896 }
30897 }
30898 return this.tabToNextCellCommon(cellOrRow, backwards, event);
30899 };
30900 NavigationService.prototype.tabToNextCellCommon = function (previous, backwards, event) {
30901 var editing = previous.isEditing();
30902 // if cell is not editing, there is still chance row is editing if it's Full Row Editing
30903 if (!editing && previous instanceof _rendering_cell_cellCtrl__WEBPACK_IMPORTED_MODULE_5__["CellCtrl"]) {
30904 var cell = previous;
30905 var row = cell.getRowCtrl();
30906 if (row) {
30907 editing = row.isEditing();
30908 }
30909 }
30910 var res;
30911 if (editing) {
30912 // if we are editing, we know it's not a Full Width Row (RowComp)
30913 if (this.gridOptionsWrapper.isFullRowEdit()) {
30914 res = this.moveToNextEditingRow(previous, backwards, event);
30915 }
30916 else {
30917 res = this.moveToNextEditingCell(previous, backwards, event);
30918 }
30919 }
30920 else {
30921 res = this.moveToNextCellNotEditing(previous, backwards);
30922 }
30923 // if a cell wasn't found, it's possible that focus was moved to the header
30924 return res || !!this.focusService.getFocusedHeader();
30925 };
30926 NavigationService.prototype.moveToNextEditingCell = function (previousCell, backwards, event) {
30927 if (event === void 0) { event = null; }
30928 var previousPos = previousCell.getCellPosition();
30929 // need to do this before getting next cell to edit, in case the next cell
30930 // has editable function (eg colDef.editable=func() ) and it depends on the
30931 // result of this cell, so need to save updates from the first edit, in case
30932 // the value is referenced in the function.
30933 previousCell.stopEditing();
30934 // find the next cell to start editing
30935 var nextCell = this.findNextCellToFocusOn(previousPos, backwards, true);
30936 if (nextCell == null) {
30937 return false;
30938 }
30939 // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default
30940 // to the normal tabbing so user can exit the grid.
30941 nextCell.startEditing(null, null, true, event);
30942 nextCell.focusCell(false);
30943 return true;
30944 };
30945 NavigationService.prototype.moveToNextEditingRow = function (previousCell, backwards, event) {
30946 if (event === void 0) { event = null; }
30947 var previousPos = previousCell.getCellPosition();
30948 // find the next cell to start editing
30949 var nextCell = this.findNextCellToFocusOn(previousPos, backwards, true);
30950 if (nextCell == null) {
30951 return false;
30952 }
30953 var nextPos = nextCell.getCellPosition();
30954 var previousEditable = this.isCellEditable(previousPos);
30955 var nextEditable = this.isCellEditable(nextPos);
30956 var rowsMatch = nextPos && previousPos.rowIndex === nextPos.rowIndex && previousPos.rowPinned === nextPos.rowPinned;
30957 if (previousEditable) {
30958 previousCell.setFocusOutOnEditor();
30959 }
30960 if (!rowsMatch) {
30961 var pRow = previousCell.getRowCtrl();
30962 pRow.stopEditing();
30963 var nRow = nextCell.getRowCtrl();
30964 nRow.startRowEditing(undefined, undefined, undefined, event);
30965 }
30966 if (nextEditable) {
30967 nextCell.setFocusInOnEditor();
30968 nextCell.focusCell();
30969 }
30970 else {
30971 nextCell.focusCell(true);
30972 }
30973 return true;
30974 };
30975 NavigationService.prototype.moveToNextCellNotEditing = function (previousCell, backwards) {
30976 var displayedColumns = this.columnModel.getAllDisplayedColumns();
30977 var cellPos;
30978 if (previousCell instanceof _rendering_row_rowCtrl__WEBPACK_IMPORTED_MODULE_6__["RowCtrl"]) {
30979 cellPos = __assign(__assign({}, previousCell.getRowPosition()), { column: backwards ? displayedColumns[0] : Object(_utils_array__WEBPACK_IMPORTED_MODULE_3__["last"])(displayedColumns) });
30980 }
30981 else {
30982 cellPos = previousCell.getCellPosition();
30983 }
30984 // find the next cell to start editing
30985 var nextCell = this.findNextCellToFocusOn(cellPos, backwards, false);
30986 // only prevent default if we found a cell. so if user is on last cell and hits tab, then we default
30987 // to the normal tabbing so user can exit the grid.
30988 if (nextCell instanceof _rendering_cell_cellCtrl__WEBPACK_IMPORTED_MODULE_5__["CellCtrl"]) {
30989 nextCell.focusCell(true);
30990 }
30991 else if (nextCell) {
30992 return this.tryToFocusFullWidthRow(nextCell.getRowPosition(), backwards);
30993 }
30994 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(nextCell);
30995 };
30996 // called by the cell, when tab is pressed while editing.
30997 // @return: RenderedCell when navigation successful, otherwise null
30998 NavigationService.prototype.findNextCellToFocusOn = function (previousPosition, backwards, startEditing) {
30999 var nextPosition = previousPosition;
31000 while (true) {
31001 if (previousPosition !== nextPosition) {
31002 previousPosition = nextPosition;
31003 }
31004 if (!backwards) {
31005 nextPosition = this.getLastCellOfColSpan(nextPosition);
31006 }
31007 nextPosition = this.cellNavigationService.getNextTabbedCell(nextPosition, backwards);
31008 // allow user to override what cell to go to next
31009 var userFunc = this.gridOptionsWrapper.getTabToNextCellFunc();
31010 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(userFunc)) {
31011 var params = {
31012 backwards: backwards,
31013 editing: startEditing,
31014 previousCellPosition: previousPosition,
31015 nextCellPosition: nextPosition ? nextPosition : null
31016 };
31017 var userCell = userFunc(params);
31018 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(userCell)) {
31019 if (userCell.floating) {
31020 Object(_utils_function__WEBPACK_IMPORTED_MODULE_7__["doOnce"])(function () { console.warn("AG Grid: tabToNextCellFunc return type should have attributes: rowIndex, rowPinned, column. However you had 'floating', maybe you meant 'rowPinned'?"); }, 'no floating in userCell');
31021 userCell.rowPinned = userCell.floating;
31022 }
31023 nextPosition = {
31024 rowIndex: userCell.rowIndex,
31025 column: userCell.column,
31026 rowPinned: userCell.rowPinned
31027 };
31028 }
31029 else {
31030 nextPosition = null;
31031 }
31032 }
31033 // if no 'next cell', means we have got to last cell of grid, so nothing to move to,
31034 // so bottom right cell going forwards, or top left going backwards
31035 if (!nextPosition) {
31036 return null;
31037 }
31038 if (nextPosition.rowIndex < 0) {
31039 var headerLen = this.headerNavigationService.getHeaderRowCount();
31040 this.focusService.focusHeaderPosition({
31041 headerPosition: {
31042 headerRowIndex: headerLen + (nextPosition.rowIndex),
31043 column: nextPosition.column
31044 }
31045 });
31046 return null;
31047 }
31048 // if editing, but cell not editable, skip cell. we do this before we do all of
31049 // the 'ensure index visible' and 'flush all frames', otherwise if we are skipping
31050 // a bunch of cells (eg 10 rows) then all the work on ensuring cell visible is useless
31051 // (except for the last one) which causes grid to stall for a while.
31052 // note - for full row edit, we do focus non-editable cells, as the row stays in edit mode.
31053 var fullRowEdit = this.gridOptionsWrapper.isFullRowEdit();
31054 if (startEditing && !fullRowEdit) {
31055 var cellIsEditable = this.isCellEditable(nextPosition);
31056 if (!cellIsEditable) {
31057 continue;
31058 }
31059 }
31060 this.ensureCellVisible(nextPosition);
31061 // we have to call this after ensureColumnVisible - otherwise it could be a virtual column
31062 // or row that is not currently in view, hence the renderedCell would not exist
31063 var nextCell = this.getCellByPosition(nextPosition);
31064 // if next cell is fullWidth row, then no rendered cell,
31065 // as fullWidth rows have no cells, so we skip it
31066 if (!nextCell) {
31067 var row = this.rowRenderer.getRowByPosition(nextPosition);
31068 if (!row || !row.isFullWidth()) {
31069 continue;
31070 }
31071 else {
31072 return row;
31073 }
31074 }
31075 if (nextCell.isSuppressNavigable()) {
31076 continue;
31077 }
31078 // by default, when we click a cell, it gets selected into a range, so to keep keyboard navigation
31079 // consistent, we set into range here also.
31080 if (this.rangeService) {
31081 this.rangeService.setRangeToCell(nextPosition);
31082 }
31083 // we successfully tabbed onto a grid cell, so return true
31084 return nextCell;
31085 }
31086 };
31087 NavigationService.prototype.isCellEditable = function (cell) {
31088 var rowNode = this.lookupRowNodeForCell(cell);
31089 if (rowNode) {
31090 return cell.column.isCellEditable(rowNode);
31091 }
31092 return false;
31093 };
31094 NavigationService.prototype.getCellByPosition = function (cellPosition) {
31095 var rowCtrl = this.rowRenderer.getRowByPosition(cellPosition);
31096 if (!rowCtrl) {
31097 return null;
31098 }
31099 return rowCtrl.getCellCtrl(cellPosition.column);
31100 };
31101 NavigationService.prototype.lookupRowNodeForCell = function (cell) {
31102 if (cell.rowPinned === _constants_constants__WEBPACK_IMPORTED_MODULE_8__["Constants"].PINNED_TOP) {
31103 return this.pinnedRowModel.getPinnedTopRow(cell.rowIndex);
31104 }
31105 if (cell.rowPinned === _constants_constants__WEBPACK_IMPORTED_MODULE_8__["Constants"].PINNED_BOTTOM) {
31106 return this.pinnedRowModel.getPinnedBottomRow(cell.rowIndex);
31107 }
31108 return this.paginationProxy.getRow(cell.rowIndex);
31109 };
31110 // we use index for rows, but column object for columns, as the next column (by index) might not
31111 // be visible (header grouping) so it's not reliable, so using the column object instead.
31112 NavigationService.prototype.navigateToNextCell = function (event, key, currentCell, allowUserOverride) {
31113 // we keep searching for a next cell until we find one. this is how the group rows get skipped
31114 var nextCell = currentCell;
31115 var hitEdgeOfGrid = false;
31116 while (nextCell && (nextCell === currentCell || !this.isValidNavigateCell(nextCell))) {
31117 // if the current cell is spanning across multiple columns, we need to move
31118 // our current position to be the last cell on the right before finding the
31119 // the next target.
31120 if (this.gridOptionsWrapper.isEnableRtl()) {
31121 if (key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].LEFT) {
31122 nextCell = this.getLastCellOfColSpan(nextCell);
31123 }
31124 }
31125 else if (key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].RIGHT) {
31126 nextCell = this.getLastCellOfColSpan(nextCell);
31127 }
31128 nextCell = this.cellNavigationService.getNextCellToFocus(key, nextCell);
31129 // eg if going down, and nextCell=undefined, means we are gone past the last row
31130 hitEdgeOfGrid = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["missing"])(nextCell);
31131 }
31132 if (hitEdgeOfGrid && event && event.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].UP) {
31133 nextCell = {
31134 rowIndex: -1,
31135 rowPinned: null,
31136 column: currentCell.column
31137 };
31138 }
31139 // allow user to override what cell to go to next. when doing normal cell navigation (with keys)
31140 // we allow this, however if processing 'enter after edit' we don't allow override
31141 if (allowUserOverride) {
31142 var userFunc = this.gridOptionsWrapper.getNavigateToNextCellFunc();
31143 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(userFunc)) {
31144 var params = {
31145 key: key,
31146 previousCellPosition: currentCell,
31147 nextCellPosition: nextCell ? nextCell : null,
31148 event: event
31149 };
31150 var userCell = userFunc(params);
31151 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(userCell)) {
31152 if (userCell.floating) {
31153 Object(_utils_function__WEBPACK_IMPORTED_MODULE_7__["doOnce"])(function () { console.warn("AG Grid: tabToNextCellFunc return type should have attributes: rowIndex, rowPinned, column. However you had 'floating', maybe you meant 'rowPinned'?"); }, 'no floating in userCell');
31154 userCell.rowPinned = userCell.floating;
31155 }
31156 nextCell = {
31157 rowPinned: userCell.rowPinned,
31158 rowIndex: userCell.rowIndex,
31159 column: userCell.column
31160 };
31161 }
31162 else {
31163 nextCell = null;
31164 }
31165 }
31166 }
31167 // no next cell means we have reached a grid boundary, eg left, right, top or bottom of grid
31168 if (!nextCell) {
31169 return;
31170 }
31171 if (nextCell.rowIndex < 0) {
31172 var headerLen = this.headerNavigationService.getHeaderRowCount();
31173 this.focusService.focusHeaderPosition({
31174 headerPosition: { headerRowIndex: headerLen + (nextCell.rowIndex), column: currentCell.column },
31175 event: event || undefined
31176 });
31177 return;
31178 }
31179 // in case we have col spanning we get the cellComp and use it to get the
31180 // position. This was we always focus the first cell inside the spanning.
31181 var normalisedPosition = this.getNormalisedPosition(nextCell);
31182 if (normalisedPosition) {
31183 this.focusPosition(normalisedPosition);
31184 }
31185 else {
31186 this.tryToFocusFullWidthRow(nextCell);
31187 }
31188 };
31189 NavigationService.prototype.getNormalisedPosition = function (cellPosition) {
31190 // ensureCellVisible first, to make sure cell at position is rendered.
31191 this.ensureCellVisible(cellPosition);
31192 var cellComp = this.getCellByPosition(cellPosition);
31193 // not guaranteed to have a cellComp when using the SSRM as blocks are loading.
31194 if (!cellComp) {
31195 return null;
31196 }
31197 cellPosition = cellComp.getCellPosition();
31198 // we call this again, as nextCell can be different to it's previous value due to Column Spanning
31199 // (ie if cursor moving from right to left, and cell is spanning columns, then nextCell was the
31200 // last column in the group, however now it's the first column in the group). if we didn't do
31201 // ensureCellVisible again, then we could only be showing the last portion (last column) of the
31202 // merged cells.
31203 this.ensureCellVisible(cellPosition);
31204 return cellPosition;
31205 };
31206 NavigationService.prototype.tryToFocusFullWidthRow = function (position, backwards) {
31207 if (backwards === void 0) { backwards = false; }
31208 var displayedColumns = this.columnModel.getAllDisplayedColumns();
31209 var rowComp = this.rowRenderer.getRowByPosition(position);
31210 if (!rowComp || !rowComp.isFullWidth()) {
31211 return false;
31212 }
31213 var currentCellFocused = this.focusService.getFocusedCell();
31214 var cellPosition = {
31215 rowIndex: position.rowIndex,
31216 rowPinned: position.rowPinned,
31217 column: position.column || (backwards ? Object(_utils_array__WEBPACK_IMPORTED_MODULE_3__["last"])(displayedColumns) : displayedColumns[0])
31218 };
31219 this.focusPosition(cellPosition);
31220 var fromBelow = currentCellFocused != null ? this.rowPositionUtils.before(cellPosition, currentCellFocused) : false;
31221 var focusEvent = {
31222 type: _eventKeys__WEBPACK_IMPORTED_MODULE_9__["Events"].EVENT_FULL_WIDTH_ROW_FOCUSED,
31223 api: this.gridApi,
31224 columnApi: this.columnApi,
31225 rowIndex: cellPosition.rowIndex,
31226 rowPinned: cellPosition.rowPinned,
31227 column: cellPosition.column,
31228 isFullWidthCell: true,
31229 floating: cellPosition.rowPinned,
31230 fromBelow: fromBelow
31231 };
31232 this.eventService.dispatchEvent(focusEvent);
31233 return true;
31234 };
31235 NavigationService.prototype.focusPosition = function (cellPosition) {
31236 this.focusService.setFocusedCell(cellPosition.rowIndex, cellPosition.column, cellPosition.rowPinned, true);
31237 if (this.rangeService) {
31238 this.rangeService.setRangeToCell(cellPosition);
31239 }
31240 };
31241 NavigationService.prototype.isValidNavigateCell = function (cell) {
31242 var rowNode = this.rowPositionUtils.getRowNode(cell);
31243 // we do not allow focusing on detail rows and full width rows
31244 return !!rowNode;
31245 };
31246 NavigationService.prototype.getLastCellOfColSpan = function (cell) {
31247 var cellCtrl = this.getCellByPosition(cell);
31248 if (!cellCtrl) {
31249 return cell;
31250 }
31251 var colSpanningList = cellCtrl.getColSpanningList();
31252 if (colSpanningList.length === 1) {
31253 return cell;
31254 }
31255 return {
31256 rowIndex: cell.rowIndex,
31257 column: Object(_utils_array__WEBPACK_IMPORTED_MODULE_3__["last"])(colSpanningList),
31258 rowPinned: cell.rowPinned
31259 };
31260 };
31261 NavigationService.prototype.ensureCellVisible = function (gridCell) {
31262 // this scrolls the row into view
31263 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["missing"])(gridCell.rowPinned)) {
31264 this.gridBodyCon.getScrollFeature().ensureIndexVisible(gridCell.rowIndex);
31265 }
31266 if (!gridCell.column.isPinned()) {
31267 this.gridBodyCon.getScrollFeature().ensureColumnVisible(gridCell.column);
31268 }
31269 // need to nudge the scrolls for the floating items. otherwise when we set focus on a non-visible
31270 // floating cell, the scrolls get out of sync
31271 this.gridBodyCon.getScrollFeature().horizontallyScrollHeaderCenterAndFloatingCenter();
31272 // need to flush frames, to make sure the correct cells are rendered
31273 this.animationFrameService.flushAllFrames();
31274 };
31275 __decorate([
31276 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
31277 ], NavigationService.prototype, "columnApi", void 0);
31278 __decorate([
31279 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
31280 ], NavigationService.prototype, "gridApi", void 0);
31281 __decorate([
31282 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('mouseEventService')
31283 ], NavigationService.prototype, "mouseEventService", void 0);
31284 __decorate([
31285 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('paginationProxy')
31286 ], NavigationService.prototype, "paginationProxy", void 0);
31287 __decorate([
31288 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('focusService')
31289 ], NavigationService.prototype, "focusService", void 0);
31290 __decorate([
31291 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('animationFrameService')
31292 ], NavigationService.prototype, "animationFrameService", void 0);
31293 __decorate([
31294 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Optional"])('rangeService')
31295 ], NavigationService.prototype, "rangeService", void 0);
31296 __decorate([
31297 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
31298 ], NavigationService.prototype, "columnModel", void 0);
31299 __decorate([
31300 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
31301 ], NavigationService.prototype, "ctrlsService", void 0);
31302 __decorate([
31303 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowRenderer')
31304 ], NavigationService.prototype, "rowRenderer", void 0);
31305 __decorate([
31306 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('headerNavigationService')
31307 ], NavigationService.prototype, "headerNavigationService", void 0);
31308 __decorate([
31309 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])("rowPositionUtils")
31310 ], NavigationService.prototype, "rowPositionUtils", void 0);
31311 __decorate([
31312 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])("cellNavigationService")
31313 ], NavigationService.prototype, "cellNavigationService", void 0);
31314 __decorate([
31315 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])("pinnedRowModel")
31316 ], NavigationService.prototype, "pinnedRowModel", void 0);
31317 __decorate([
31318 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
31319 ], NavigationService.prototype, "postConstruct", null);
31320 NavigationService = __decorate([
31321 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('navigationService')
31322 ], NavigationService);
31323 return NavigationService;
31324}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
31325
31326
31327
31328
31329
31330/***/ }),
31331/* 140 */
31332/***/ (function(module, __webpack_exports__, __webpack_require__) {
31333
31334"use strict";
31335__webpack_require__.r(__webpack_exports__);
31336/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowContainerComp", function() { return RowContainerComp; });
31337/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
31338/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
31339/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
31340/* harmony import */ var _rowContainerCtrl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(118);
31341/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(42);
31342/* harmony import */ var _rendering_row_rowComp__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(141);
31343/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(13);
31344/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(44);
31345/**
31346 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
31347 * @version v27.3.0
31348 * @link https://www.ag-grid.com/
31349 * @license MIT
31350 */
31351var __extends = (undefined && undefined.__extends) || (function () {
31352 var extendStatics = function (d, b) {
31353 extendStatics = Object.setPrototypeOf ||
31354 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
31355 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
31356 return extendStatics(d, b);
31357 };
31358 return function (d, b) {
31359 extendStatics(d, b);
31360 function __() { this.constructor = d; }
31361 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
31362 };
31363})();
31364var __assign = (undefined && undefined.__assign) || function () {
31365 __assign = Object.assign || function(t) {
31366 for (var s, i = 1, n = arguments.length; i < n; i++) {
31367 s = arguments[i];
31368 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
31369 t[p] = s[p];
31370 }
31371 return t;
31372 };
31373 return __assign.apply(this, arguments);
31374};
31375var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
31376 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
31377 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
31378 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
31379 return c > 3 && r && Object.defineProperty(target, key, r), r;
31380};
31381
31382
31383
31384
31385
31386
31387
31388
31389function templateFactory() {
31390 var name = _widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"].elementGettingCreated.getAttribute('name');
31391 var cssClasses = _rowContainerCtrl__WEBPACK_IMPORTED_MODULE_3__["RowContainerCtrl"].getRowContainerCssClasses(name);
31392 var res;
31393 var template1 = name === _rowContainerCtrl__WEBPACK_IMPORTED_MODULE_3__["RowContainerName"].CENTER;
31394 var template2 = name === _rowContainerCtrl__WEBPACK_IMPORTED_MODULE_3__["RowContainerName"].TOP_CENTER || name === _rowContainerCtrl__WEBPACK_IMPORTED_MODULE_3__["RowContainerName"].BOTTOM_CENTER;
31395 if (template1) {
31396 res = /* html */
31397 "<div class=\"" + cssClasses.wrapper + "\" ref=\"eWrapper\" role=\"presentation\">\n <div class=\"" + cssClasses.viewport + "\" ref=\"eViewport\" role=\"presentation\">\n <div class=\"" + cssClasses.container + "\" ref=\"eContainer\"></div>\n </div>\n </div>";
31398 }
31399 else if (template2) {
31400 res = /* html */
31401 "<div class=\"" + cssClasses.viewport + "\" ref=\"eViewport\" role=\"presentation\">\n <div class=\"" + cssClasses.container + "\" ref=\"eContainer\"></div>\n </div>";
31402 }
31403 else {
31404 res = /* html */
31405 "<div class=\"" + cssClasses.container + "\" ref=\"eContainer\"></div>";
31406 }
31407 return res;
31408}
31409var RowContainerComp = /** @class */ (function (_super) {
31410 __extends(RowContainerComp, _super);
31411 function RowContainerComp() {
31412 var _this = _super.call(this, templateFactory()) || this;
31413 _this.rowComps = {};
31414 _this.name = _widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"].elementGettingCreated.getAttribute('name');
31415 _this.type = Object(_rowContainerCtrl__WEBPACK_IMPORTED_MODULE_3__["getRowContainerTypeForName"])(_this.name);
31416 return _this;
31417 }
31418 RowContainerComp.prototype.postConstruct = function () {
31419 var _this = this;
31420 var compProxy = {
31421 setViewportHeight: function (height) { return _this.eViewport.style.height = height; },
31422 setRowCtrls: function (rowCtrls) { return _this.setRowCtrls(rowCtrls); },
31423 setDomOrder: function (domOrder) {
31424 _this.domOrder = domOrder;
31425 },
31426 setContainerWidth: function (width) { return _this.eContainer.style.width = width; }
31427 };
31428 var ctrl = this.createManagedBean(new _rowContainerCtrl__WEBPACK_IMPORTED_MODULE_3__["RowContainerCtrl"](this.name));
31429 ctrl.setComp(compProxy, this.eContainer, this.eViewport, this.eWrapper);
31430 };
31431 RowContainerComp.prototype.preDestroy = function () {
31432 // destroys all row comps
31433 this.setRowCtrls([]);
31434 };
31435 RowContainerComp.prototype.setRowCtrls = function (rowCtrls) {
31436 var _this = this;
31437 var oldRows = __assign({}, this.rowComps);
31438 this.rowComps = {};
31439 this.lastPlacedElement = null;
31440 var processRow = function (rowCon) {
31441 var instanceId = rowCon.getInstanceId();
31442 var existingRowComp = oldRows[instanceId];
31443 if (existingRowComp) {
31444 _this.rowComps[instanceId] = existingRowComp;
31445 delete oldRows[instanceId];
31446 _this.ensureDomOrder(existingRowComp.getGui());
31447 }
31448 else {
31449 var rowComp = _this.newRowComp(rowCon);
31450 _this.rowComps[instanceId] = rowComp;
31451 _this.appendRow(rowComp.getGui());
31452 }
31453 };
31454 rowCtrls.forEach(processRow);
31455 Object(_utils_object__WEBPACK_IMPORTED_MODULE_6__["getAllValuesInObject"])(oldRows).forEach(function (oldRowComp) {
31456 _this.eContainer.removeChild(oldRowComp.getGui());
31457 oldRowComp.destroy();
31458 });
31459 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_7__["setAriaRole"])(this.eContainer, rowCtrls.length ? "rowgroup" : "presentation");
31460 };
31461 RowContainerComp.prototype.appendRow = function (element) {
31462 if (this.domOrder) {
31463 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["insertWithDomOrder"])(this.eContainer, element, this.lastPlacedElement);
31464 }
31465 else {
31466 this.eContainer.appendChild(element);
31467 }
31468 this.lastPlacedElement = element;
31469 };
31470 RowContainerComp.prototype.ensureDomOrder = function (eRow) {
31471 if (this.domOrder) {
31472 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["ensureDomOrder"])(this.eContainer, eRow, this.lastPlacedElement);
31473 this.lastPlacedElement = eRow;
31474 }
31475 };
31476 RowContainerComp.prototype.newRowComp = function (rowCtrl) {
31477 var pinned = _rowContainerCtrl__WEBPACK_IMPORTED_MODULE_3__["RowContainerCtrl"].getPinned(this.name);
31478 var res = new _rendering_row_rowComp__WEBPACK_IMPORTED_MODULE_5__["RowComp"](rowCtrl, this.beans, this.type);
31479 return res;
31480 };
31481 __decorate([
31482 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('beans')
31483 ], RowContainerComp.prototype, "beans", void 0);
31484 __decorate([
31485 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eViewport')
31486 ], RowContainerComp.prototype, "eViewport", void 0);
31487 __decorate([
31488 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eContainer')
31489 ], RowContainerComp.prototype, "eContainer", void 0);
31490 __decorate([
31491 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eWrapper')
31492 ], RowContainerComp.prototype, "eWrapper", void 0);
31493 __decorate([
31494 _context_context__WEBPACK_IMPORTED_MODULE_2__["PostConstruct"]
31495 ], RowContainerComp.prototype, "postConstruct", null);
31496 __decorate([
31497 _context_context__WEBPACK_IMPORTED_MODULE_2__["PreDestroy"]
31498 ], RowContainerComp.prototype, "preDestroy", null);
31499 return RowContainerComp;
31500}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
31501
31502
31503
31504
31505
31506/***/ }),
31507/* 141 */
31508/***/ (function(module, __webpack_exports__, __webpack_require__) {
31509
31510"use strict";
31511__webpack_require__.r(__webpack_exports__);
31512/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowComp", function() { return RowComp; });
31513/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
31514/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42);
31515/* harmony import */ var _cell_cellComp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(142);
31516/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(13);
31517/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(44);
31518/**
31519 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
31520 * @version v27.3.0
31521 * @link https://www.ag-grid.com/
31522 * @license MIT
31523 */
31524var __extends = (undefined && undefined.__extends) || (function () {
31525 var extendStatics = function (d, b) {
31526 extendStatics = Object.setPrototypeOf ||
31527 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
31528 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
31529 return extendStatics(d, b);
31530 };
31531 return function (d, b) {
31532 extendStatics(d, b);
31533 function __() { this.constructor = d; }
31534 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
31535 };
31536})();
31537
31538
31539
31540
31541
31542var RowComp = /** @class */ (function (_super) {
31543 __extends(RowComp, _super);
31544 function RowComp(ctrl, beans, containerType) {
31545 var _this = _super.call(this) || this;
31546 _this.cellComps = {};
31547 _this.beans = beans;
31548 _this.rowCtrl = ctrl;
31549 _this.setTemplate(/* html */ "<div comp-id=\"" + _this.getCompId() + "\" style=\"" + _this.getInitialStyle() + "\"/>");
31550 var eGui = _this.getGui();
31551 var style = eGui.style;
31552 var compProxy = {
31553 setDomOrder: function (domOrder) { return _this.domOrder = domOrder; },
31554 setCellCtrls: function (cellCtrls) { return _this.setCellCtrls(cellCtrls); },
31555 showFullWidth: function (compDetails) { return _this.showFullWidth(compDetails); },
31556 getFullWidthCellRenderer: function () { return _this.getFullWidthCellRenderer(); },
31557 addOrRemoveCssClass: function (name, on) { return _this.addOrRemoveCssClass(name, on); },
31558 setUserStyles: function (styles) { return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__["addStylesToElement"])(eGui, styles); },
31559 setTop: function (top) { return style.top = top; },
31560 setTransform: function (transform) { return style.transform = transform; },
31561 setRowIndex: function (rowIndex) { return eGui.setAttribute('row-index', rowIndex); },
31562 setRole: function (role) { return Object(_utils_aria__WEBPACK_IMPORTED_MODULE_4__["setAriaRole"])(eGui, role); },
31563 setRowId: function (rowId) { return eGui.setAttribute('row-id', rowId); },
31564 setRowBusinessKey: function (businessKey) { return eGui.setAttribute('row-business-key', businessKey); },
31565 setTabIndex: function (tabIndex) { return eGui.setAttribute('tabindex', tabIndex.toString()); }
31566 };
31567 ctrl.setComp(compProxy, _this.getGui(), containerType);
31568 return _this;
31569 }
31570 RowComp.prototype.getInitialStyle = function () {
31571 var transform = this.rowCtrl.getInitialTransform();
31572 var top = this.rowCtrl.getInitialRowTop();
31573 return transform ? "transform: " + transform : "top: " + top;
31574 };
31575 RowComp.prototype.showFullWidth = function (compDetails) {
31576 var _this = this;
31577 var callback = function (cellRenderer) {
31578 if (_this.isAlive()) {
31579 var eGui = cellRenderer.getGui();
31580 _this.getGui().appendChild(eGui);
31581 _this.rowCtrl.setupDetailRowAutoHeight(eGui);
31582 _this.setFullWidthRowComp(cellRenderer);
31583 }
31584 else {
31585 _this.beans.context.destroyBean(cellRenderer);
31586 }
31587 };
31588 // if not in cache, create new one
31589 var res = compDetails.newAgStackInstance();
31590 if (!res) {
31591 return;
31592 }
31593 res.then(callback);
31594 };
31595 RowComp.prototype.setCellCtrls = function (cellCtrls) {
31596 var _this = this;
31597 var cellsToRemove = Object.assign({}, this.cellComps);
31598 cellCtrls.forEach(function (cellCtrl) {
31599 var key = cellCtrl.getInstanceId();
31600 var existingCellComp = _this.cellComps[key];
31601 if (existingCellComp == null) {
31602 _this.newCellComp(cellCtrl);
31603 }
31604 else {
31605 cellsToRemove[key] = null;
31606 }
31607 });
31608 var cellCompsToRemove = Object(_utils_object__WEBPACK_IMPORTED_MODULE_3__["getAllValuesInObject"])(cellsToRemove)
31609 .filter(function (cellComp) { return cellComp != null; });
31610 this.destroyCells(cellCompsToRemove);
31611 this.ensureDomOrder(cellCtrls);
31612 };
31613 RowComp.prototype.ensureDomOrder = function (cellCtrls) {
31614 var _this = this;
31615 if (!this.domOrder) {
31616 return;
31617 }
31618 var elementsInOrder = [];
31619 cellCtrls.forEach(function (cellCtrl) {
31620 var cellComp = _this.cellComps[cellCtrl.getInstanceId()];
31621 if (cellComp) {
31622 elementsInOrder.push(cellComp.getGui());
31623 }
31624 });
31625 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__["setDomChildOrder"])(this.getGui(), elementsInOrder);
31626 };
31627 RowComp.prototype.newCellComp = function (cellCtrl) {
31628 var cellComp = new _cell_cellComp__WEBPACK_IMPORTED_MODULE_2__["CellComp"](this.beans, cellCtrl, this.rowCtrl.isPrintLayout(), this.getGui(), this.rowCtrl.isEditing());
31629 this.cellComps[cellCtrl.getInstanceId()] = cellComp;
31630 this.getGui().appendChild(cellComp.getGui());
31631 };
31632 RowComp.prototype.destroy = function () {
31633 _super.prototype.destroy.call(this);
31634 this.destroyAllCells();
31635 };
31636 RowComp.prototype.destroyAllCells = function () {
31637 var cellsToDestroy = Object(_utils_object__WEBPACK_IMPORTED_MODULE_3__["getAllValuesInObject"])(this.cellComps).filter(function (cp) { return cp != null; });
31638 this.destroyCells(cellsToDestroy);
31639 };
31640 RowComp.prototype.setFullWidthRowComp = function (fullWidthRowComponent) {
31641 var _this = this;
31642 if (this.fullWidthCellRenderer) {
31643 console.error('AG Grid - should not be setting fullWidthRowComponent twice');
31644 }
31645 this.fullWidthCellRenderer = fullWidthRowComponent;
31646 this.addDestroyFunc(function () {
31647 _this.fullWidthCellRenderer = _this.beans.context.destroyBean(_this.fullWidthCellRenderer);
31648 });
31649 };
31650 RowComp.prototype.getFullWidthCellRenderer = function () {
31651 return this.fullWidthCellRenderer;
31652 };
31653 RowComp.prototype.destroyCells = function (cellComps) {
31654 var _this = this;
31655 cellComps.forEach(function (cellComp) {
31656 // could be old reference, ie removed cell
31657 if (!cellComp) {
31658 return;
31659 }
31660 // check cellComp belongs in this container
31661 var instanceId = cellComp.getCtrl().getInstanceId();
31662 if (_this.cellComps[instanceId] !== cellComp) {
31663 return;
31664 }
31665 cellComp.detach();
31666 cellComp.destroy();
31667 _this.cellComps[instanceId] = null;
31668 });
31669 };
31670 return RowComp;
31671}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
31672
31673
31674
31675
31676
31677/***/ }),
31678/* 142 */
31679/***/ (function(module, __webpack_exports__, __webpack_require__) {
31680
31681"use strict";
31682__webpack_require__.r(__webpack_exports__);
31683/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CellComp", function() { return CellComp; });
31684/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
31685/* harmony import */ var _cellEditors_popupEditorWrapper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(143);
31686/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44);
31687/* harmony import */ var _utils_string__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(26);
31688/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
31689/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(42);
31690/**
31691 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
31692 * @version v27.3.0
31693 * @link https://www.ag-grid.com/
31694 * @license MIT
31695 */
31696var __extends = (undefined && undefined.__extends) || (function () {
31697 var extendStatics = function (d, b) {
31698 extendStatics = Object.setPrototypeOf ||
31699 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
31700 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
31701 return extendStatics(d, b);
31702 };
31703 return function (d, b) {
31704 extendStatics(d, b);
31705 function __() { this.constructor = d; }
31706 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
31707 };
31708})();
31709
31710
31711
31712
31713
31714
31715var CellComp = /** @class */ (function (_super) {
31716 __extends(CellComp, _super);
31717 function CellComp(beans, cellCtrl, printLayout, eRow, editingRow) {
31718 var _this = _super.call(this) || this;
31719 // every time we go into edit mode, or back again, this gets incremented.
31720 // it's the components way of dealing with the async nature of framework components,
31721 // so if a framework component takes a while to be created, we know if the object
31722 // is still relevant when creating is finished. eg we could click edit / un-edit 20
31723 // times before the first React edit component comes back - we should discard
31724 // the first 19.
31725 _this.rendererVersion = 0;
31726 _this.editorVersion = 0;
31727 _this.beans = beans;
31728 _this.column = cellCtrl.getColumn();
31729 _this.rowNode = cellCtrl.getRowNode();
31730 _this.rowCtrl = cellCtrl.getRowCtrl();
31731 _this.eRow = eRow;
31732 _this.setTemplate(/* html */ "<div comp-id=\"" + _this.getCompId() + "\"/>");
31733 var eGui = _this.getGui();
31734 _this.forceWrapper = cellCtrl.isForceWrapper();
31735 _this.refreshWrapper(false);
31736 var setAttribute = function (name, value, element) {
31737 var actualElement = element ? element : eGui;
31738 if (value != null && value != '') {
31739 actualElement.setAttribute(name, value);
31740 }
31741 else {
31742 actualElement.removeAttribute(name);
31743 }
31744 };
31745 var compProxy = {
31746 addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },
31747 setUserStyles: function (styles) { return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["addStylesToElement"])(eGui, styles); },
31748 getFocusableElement: function () { return _this.getFocusableElement(); },
31749 setTabIndex: function (tabIndex) { return setAttribute('tabindex', tabIndex.toString()); },
31750 setRole: function (role) { return Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaRole"])(eGui, role); },
31751 setColId: function (colId) { return setAttribute('col-id', colId); },
31752 setTitle: function (title) { return setAttribute('title', title); },
31753 setIncludeSelection: function (include) { return _this.includeSelection = include; },
31754 setIncludeRowDrag: function (include) { return _this.includeRowDrag = include; },
31755 setIncludeDndSource: function (include) { return _this.includeDndSource = include; },
31756 setRenderDetails: function (compDetails, valueToDisplay, force) {
31757 return _this.setRenderDetails(compDetails, valueToDisplay, force);
31758 },
31759 setEditDetails: function (compDetails, popup, position) {
31760 return _this.setEditDetails(compDetails, popup, position);
31761 },
31762 getCellEditor: function () { return _this.cellEditor || null; },
31763 getCellRenderer: function () { return _this.cellRenderer || null; },
31764 getParentOfValue: function () { return _this.getParentOfValue(); }
31765 };
31766 _this.cellCtrl = cellCtrl;
31767 cellCtrl.setComp(compProxy, _this.getGui(), _this.eCellWrapper, printLayout, editingRow);
31768 return _this;
31769 }
31770 CellComp.prototype.getParentOfValue = function () {
31771 if (this.eCellValue) {
31772 // if not editing, and using wrapper, then value goes in eCellValue
31773 return this.eCellValue;
31774 }
31775 if (this.eCellWrapper) {
31776 // if editing, and using wrapper, value (cell editor) goes in eCellWrapper
31777 return this.eCellWrapper;
31778 }
31779 // if editing or rendering, and not using wrapper, value (or comp) is directly inside cell
31780 return this.getGui();
31781 };
31782 CellComp.prototype.setRenderDetails = function (compDetails, valueToDisplay, forceNewCellRendererInstance) {
31783 // this can happen if the users asks for the cell to refresh, but we are not showing the vale as we are editing
31784 var isInlineEditing = this.cellEditor && !this.cellEditorPopupWrapper;
31785 if (isInlineEditing) {
31786 return;
31787 }
31788 // this means firstRender will be true for one pass only, as it's initialised to undefined
31789 this.firstRender = this.firstRender == null;
31790 // if display template has changed, means any previous Cell Renderer is in the wrong location
31791 var controlWrapperChanged = this.refreshWrapper(false);
31792 // all of these have dependencies on the eGui, so only do them after eGui is set
31793 if (compDetails) {
31794 var neverRefresh = forceNewCellRendererInstance || controlWrapperChanged;
31795 var cellRendererRefreshSuccessful = neverRefresh ? false : this.refreshCellRenderer(compDetails);
31796 if (!cellRendererRefreshSuccessful) {
31797 this.destroyRenderer();
31798 this.createCellRendererInstance(compDetails);
31799 }
31800 }
31801 else {
31802 this.destroyRenderer();
31803 this.insertValueWithoutCellRenderer(valueToDisplay);
31804 }
31805 };
31806 CellComp.prototype.setEditDetails = function (compDetails, popup, position) {
31807 if (compDetails) {
31808 this.createCellEditorInstance(compDetails, popup, position);
31809 }
31810 else {
31811 this.destroyEditor();
31812 }
31813 };
31814 CellComp.prototype.removeControls = function () {
31815 this.checkboxSelectionComp = this.beans.context.destroyBean(this.checkboxSelectionComp);
31816 this.dndSourceComp = this.beans.context.destroyBean(this.dndSourceComp);
31817 this.rowDraggingComp = this.beans.context.destroyBean(this.rowDraggingComp);
31818 };
31819 // returns true if wrapper was changed
31820 CellComp.prototype.refreshWrapper = function (editing) {
31821 var providingControls = this.includeRowDrag || this.includeDndSource || this.includeSelection;
31822 var usingWrapper = providingControls || this.forceWrapper;
31823 var putWrapperIn = usingWrapper && this.eCellWrapper == null;
31824 if (putWrapperIn) {
31825 this.eCellWrapper = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["loadTemplate"])("<div class=\"ag-cell-wrapper\" role=\"presentation\"></div>");
31826 this.getGui().appendChild(this.eCellWrapper);
31827 }
31828 var takeWrapperOut = !usingWrapper && this.eCellWrapper != null;
31829 if (takeWrapperOut) {
31830 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["removeFromParent"])(this.eCellWrapper);
31831 this.eCellWrapper = undefined;
31832 }
31833 this.addOrRemoveCssClass('ag-cell-value', !usingWrapper);
31834 var usingCellValue = !editing && usingWrapper;
31835 var putCellValueIn = usingCellValue && this.eCellValue == null;
31836 if (putCellValueIn) {
31837 this.eCellValue = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["loadTemplate"])("<span class=\"ag-cell-value\" role=\"presentation\"></span>");
31838 this.eCellWrapper.appendChild(this.eCellValue);
31839 }
31840 var takeCellValueOut = !usingCellValue && this.eCellValue != null;
31841 if (takeCellValueOut) {
31842 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["removeFromParent"])(this.eCellValue);
31843 this.eCellValue = undefined;
31844 }
31845 var templateChanged = putWrapperIn || takeWrapperOut || putCellValueIn || takeCellValueOut;
31846 if (templateChanged) {
31847 this.removeControls();
31848 }
31849 if (!editing && providingControls) {
31850 this.addControls();
31851 }
31852 return templateChanged;
31853 };
31854 CellComp.prototype.addControls = function () {
31855 var id = this.eCellValue.id = "cell-" + this.getCompId();
31856 var describedByIds = [];
31857 if (this.includeRowDrag) {
31858 if (this.rowDraggingComp == null) {
31859 this.rowDraggingComp = this.cellCtrl.createRowDragComp();
31860 if (this.rowDraggingComp) {
31861 // put the checkbox in before the value
31862 this.eCellWrapper.insertBefore(this.rowDraggingComp.getGui(), this.eCellValue);
31863 }
31864 }
31865 }
31866 if (this.includeDndSource) {
31867 if (this.dndSourceComp == null) {
31868 this.dndSourceComp = this.cellCtrl.createDndSource();
31869 // put the checkbox in before the value
31870 this.eCellWrapper.insertBefore(this.dndSourceComp.getGui(), this.eCellValue);
31871 }
31872 }
31873 if (this.includeSelection) {
31874 if (this.checkboxSelectionComp == null) {
31875 this.checkboxSelectionComp = this.cellCtrl.createSelectionCheckbox();
31876 this.eCellWrapper.insertBefore(this.checkboxSelectionComp.getGui(), this.eCellValue);
31877 }
31878 describedByIds.push(this.checkboxSelectionComp.getCheckboxId());
31879 }
31880 describedByIds.push(id);
31881 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaDescribedBy"])(this.getGui(), describedByIds.join(' '));
31882 };
31883 CellComp.prototype.createCellEditorInstance = function (compDetails, popup, position) {
31884 var _this = this;
31885 var versionCopy = this.editorVersion;
31886 var cellEditorPromise = compDetails.newAgStackInstance();
31887 if (!cellEditorPromise) {
31888 return;
31889 } // if empty, userComponentFactory already did a console message
31890 var params = compDetails.params;
31891 cellEditorPromise.then(function (c) { return _this.afterCellEditorCreated(versionCopy, c, params, popup, position); });
31892 // if we don't do this, and editor component is async, then there will be a period
31893 // when the component isn't present and keyboard navigation won't work - so example
31894 // of user hitting tab quickly (more quickly than renderers getting created) won't work
31895 var cellEditorAsync = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_4__["missing"])(this.cellEditor);
31896 if (cellEditorAsync && params.cellStartedEdit) {
31897 this.cellCtrl.focusCell(true);
31898 }
31899 };
31900 CellComp.prototype.insertValueWithoutCellRenderer = function (valueToDisplay) {
31901 var eParent = this.getParentOfValue();
31902 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["clearElement"])(eParent);
31903 var escapedValue = valueToDisplay != null ? Object(_utils_string__WEBPACK_IMPORTED_MODULE_3__["escapeString"])(valueToDisplay) : null;
31904 if (escapedValue != null) {
31905 eParent.innerHTML = escapedValue;
31906 }
31907 };
31908 CellComp.prototype.destroyEditorAndRenderer = function () {
31909 this.destroyRenderer();
31910 this.destroyEditor();
31911 };
31912 CellComp.prototype.destroyRenderer = function () {
31913 var context = this.beans.context;
31914 this.cellRenderer = context.destroyBean(this.cellRenderer);
31915 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["removeFromParent"])(this.cellRendererGui);
31916 this.cellRendererGui = null;
31917 this.rendererVersion++;
31918 };
31919 CellComp.prototype.destroyEditor = function () {
31920 var context = this.beans.context;
31921 if (this.hideEditorPopup) {
31922 this.hideEditorPopup();
31923 }
31924 this.hideEditorPopup = undefined;
31925 this.cellEditor = context.destroyBean(this.cellEditor);
31926 this.cellEditorPopupWrapper = context.destroyBean(this.cellEditorPopupWrapper);
31927 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["removeFromParent"])(this.cellEditorGui);
31928 this.cellEditorGui = null;
31929 this.editorVersion++;
31930 };
31931 CellComp.prototype.refreshCellRenderer = function (compClassAndParams) {
31932 if (this.cellRenderer == null || this.cellRenderer.refresh == null) {
31933 return false;
31934 }
31935 // if different Cell Renderer configured this time (eg user is using selector, and
31936 // returns different component) then don't refresh, force recreate of Cell Renderer
31937 if (this.cellRendererClass !== compClassAndParams.componentClass) {
31938 return false;
31939 }
31940 // take any custom params off of the user
31941 var result = this.cellRenderer.refresh(compClassAndParams.params);
31942 // NOTE on undefined: previous version of the cellRenderer.refresh() interface
31943 // returned nothing, if the method existed, we assumed it refreshed. so for
31944 // backwards compatibility, we assume if method exists and returns nothing,
31945 // that it was successful.
31946 return result === true || result === undefined;
31947 };
31948 CellComp.prototype.createCellRendererInstance = function (compDetails) {
31949 var _this = this;
31950 // never use task service if angularCompileRows=true, as that assume the cell renderers
31951 // are finished when the row is created. also we never use it if animation frame service
31952 // is turned off.
31953 // and lastly we never use it if doing auto-height, as the auto-height service checks the
31954 // row height directly after the cell is created, it doesn't wait around for the tasks to complete
31955 var angularCompileRows = this.beans.gridOptionsWrapper.isAngularCompileRows();
31956 var suppressAnimationFrame = this.beans.gridOptionsWrapper.isSuppressAnimationFrame();
31957 var useTaskService = !angularCompileRows && !suppressAnimationFrame;
31958 var displayComponentVersionCopy = this.rendererVersion;
31959 var componentClass = compDetails.componentClass;
31960 var createCellRendererFunc = function () {
31961 var staleTask = _this.rendererVersion !== displayComponentVersionCopy || !_this.isAlive();
31962 if (staleTask) {
31963 return;
31964 }
31965 // this can return null in the event that the user has switched from a renderer component to nothing, for example
31966 // when using a cellRendererSelect to return a component or null depending on row data etc
31967 var componentPromise = compDetails.newAgStackInstance();
31968 var callback = _this.afterCellRendererCreated.bind(_this, displayComponentVersionCopy, componentClass);
31969 if (componentPromise) {
31970 componentPromise.then(callback);
31971 }
31972 };
31973 // we only use task service when rendering for first time, which means it is not used when doing edits.
31974 // if we changed this (always use task service) would make sense, however it would break tests, possibly
31975 // test of users.
31976 if (useTaskService && this.firstRender) {
31977 this.beans.animationFrameService.createTask(createCellRendererFunc, this.rowNode.rowIndex, 'createTasksP2');
31978 }
31979 else {
31980 createCellRendererFunc();
31981 }
31982 };
31983 CellComp.prototype.getCtrl = function () {
31984 return this.cellCtrl;
31985 };
31986 CellComp.prototype.getRowCtrl = function () {
31987 return this.rowCtrl;
31988 };
31989 CellComp.prototype.getCellRenderer = function () {
31990 return this.cellRenderer;
31991 };
31992 CellComp.prototype.getCellEditor = function () {
31993 return this.cellEditor;
31994 };
31995 CellComp.prototype.afterCellRendererCreated = function (cellRendererVersion, cellRendererClass, cellRenderer) {
31996 var staleTask = !this.isAlive() || cellRendererVersion !== this.rendererVersion;
31997 if (staleTask) {
31998 this.beans.context.destroyBean(cellRenderer);
31999 return;
32000 }
32001 this.cellRenderer = cellRenderer;
32002 this.cellRendererClass = cellRendererClass;
32003 this.cellRendererGui = this.cellRenderer.getGui();
32004 if (this.cellRendererGui != null) {
32005 var eParent = this.getParentOfValue();
32006 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["clearElement"])(eParent);
32007 eParent.appendChild(this.cellRendererGui);
32008 }
32009 };
32010 CellComp.prototype.afterCellEditorCreated = function (requestVersion, cellEditor, params, popup, position) {
32011 // if editingCell=false, means user cancelled the editor before component was ready.
32012 // if versionMismatch, then user cancelled the edit, then started the edit again, and this
32013 // is the first editor which is now stale.
32014 var staleComp = requestVersion !== this.editorVersion;
32015 if (staleComp) {
32016 this.beans.context.destroyBean(cellEditor);
32017 return;
32018 }
32019 var editingCancelledByUserComp = cellEditor.isCancelBeforeStart && cellEditor.isCancelBeforeStart();
32020 if (editingCancelledByUserComp) {
32021 this.beans.context.destroyBean(cellEditor);
32022 this.cellCtrl.stopEditing();
32023 return;
32024 }
32025 if (!cellEditor.getGui) {
32026 console.warn("AG Grid: cellEditor for column " + this.column.getId() + " is missing getGui() method");
32027 this.beans.context.destroyBean(cellEditor);
32028 return;
32029 }
32030 this.cellEditor = cellEditor;
32031 this.cellEditorGui = cellEditor.getGui();
32032 var cellEditorInPopup = popup || (cellEditor.isPopup !== undefined && cellEditor.isPopup());
32033 if (cellEditorInPopup) {
32034 if (!popup) {
32035 this.cellCtrl.hackSayEditingInPopup();
32036 }
32037 this.addPopupCellEditor(params, position);
32038 }
32039 else {
32040 this.addInCellEditor();
32041 }
32042 if (cellEditor.afterGuiAttached) {
32043 cellEditor.afterGuiAttached();
32044 }
32045 };
32046 CellComp.prototype.addInCellEditor = function () {
32047 var eGui = this.getGui();
32048 // if focus is inside the cell, we move focus to the cell itself
32049 // before removing it's contents, otherwise errors could be thrown.
32050 var eDocument = this.beans.gridOptionsWrapper.getDocument();
32051 if (eGui.contains(eDocument.activeElement)) {
32052 eGui.focus();
32053 }
32054 this.destroyRenderer();
32055 this.refreshWrapper(true);
32056 this.clearParentOfValue();
32057 if (this.cellEditorGui) {
32058 var eParent = this.getParentOfValue();
32059 eParent.appendChild(this.cellEditorGui);
32060 }
32061 };
32062 CellComp.prototype.addPopupCellEditor = function (params, position) {
32063 var _this = this;
32064 if (this.beans.gridOptionsWrapper.isFullRowEdit()) {
32065 console.warn('AG Grid: popup cellEditor does not work with fullRowEdit - you cannot use them both ' +
32066 '- either turn off fullRowEdit, or stop using popup editors.');
32067 }
32068 var cellEditor = this.cellEditor;
32069 // if a popup, then we wrap in a popup editor and return the popup
32070 this.cellEditorPopupWrapper = this.beans.context.createBean(new _cellEditors_popupEditorWrapper__WEBPACK_IMPORTED_MODULE_1__["PopupEditorWrapper"](params));
32071 var ePopupGui = this.cellEditorPopupWrapper.getGui();
32072 if (this.cellEditorGui) {
32073 ePopupGui.appendChild(this.cellEditorGui);
32074 }
32075 var popupService = this.beans.popupService;
32076 var useModelPopup = this.beans.gridOptionsWrapper.isStopEditingWhenCellsLoseFocus();
32077 // see if position provided by colDef, if not then check old way of method on cellComp
32078 var positionToUse = position != null ? position : cellEditor.getPopupPosition ? cellEditor.getPopupPosition() : 'over';
32079 var positionParams = {
32080 column: this.column,
32081 rowNode: this.rowNode,
32082 type: 'popupCellEditor',
32083 eventSource: this.getGui(),
32084 ePopup: ePopupGui,
32085 keepWithinBounds: true
32086 };
32087 var positionCallback = positionToUse === 'under' ?
32088 popupService.positionPopupUnderComponent.bind(popupService, positionParams)
32089 : popupService.positionPopupOverComponent.bind(popupService, positionParams);
32090 var translate = this.beans.gridOptionsWrapper.getLocaleTextFunc();
32091 var addPopupRes = popupService.addPopup({
32092 modal: useModelPopup,
32093 eChild: ePopupGui,
32094 closeOnEsc: true,
32095 closedCallback: function () { _this.cellCtrl.onPopupEditorClosed(); },
32096 anchorToElement: this.getGui(),
32097 positionCallback: positionCallback,
32098 ariaLabel: translate('ariaLabelCellEditor', 'Cell Editor')
32099 });
32100 if (addPopupRes) {
32101 this.hideEditorPopup = addPopupRes.hideFunc;
32102 }
32103 };
32104 CellComp.prototype.detach = function () {
32105 this.eRow.removeChild(this.getGui());
32106 };
32107 // if the row is also getting destroyed, then we don't need to remove from dom,
32108 // as the row will also get removed, so no need to take out the cells from the row
32109 // if the row is going (removing is an expensive operation, so only need to remove
32110 // the top part)
32111 //
32112 // note - this is NOT called by context, as we don't wire / unwire the CellComp for performance reasons.
32113 CellComp.prototype.destroy = function () {
32114 this.cellCtrl.stopEditing();
32115 this.destroyEditorAndRenderer();
32116 this.removeControls();
32117 _super.prototype.destroy.call(this);
32118 };
32119 CellComp.prototype.clearParentOfValue = function () {
32120 var eGui = this.getGui();
32121 // if focus is inside the cell, we move focus to the cell itself
32122 // before removing it's contents, otherwise errors could be thrown.
32123 var eDocument = this.beans.gridOptionsWrapper.getDocument();
32124 if (eGui.contains(eDocument.activeElement)) {
32125 eGui.focus({
32126 preventScroll: true
32127 });
32128 }
32129 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["clearElement"])(this.getParentOfValue());
32130 };
32131 return CellComp;
32132}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
32133
32134
32135
32136
32137
32138/***/ }),
32139/* 143 */
32140/***/ (function(module, __webpack_exports__, __webpack_require__) {
32141
32142"use strict";
32143__webpack_require__.r(__webpack_exports__);
32144/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PopupEditorWrapper", function() { return PopupEditorWrapper; });
32145/* harmony import */ var _widgets_popupComponent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(85);
32146/* harmony import */ var _utils_keyboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(49);
32147/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
32148/**
32149 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
32150 * @version v27.3.0
32151 * @link https://www.ag-grid.com/
32152 * @license MIT
32153 */
32154var __extends = (undefined && undefined.__extends) || (function () {
32155 var extendStatics = function (d, b) {
32156 extendStatics = Object.setPrototypeOf ||
32157 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
32158 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
32159 return extendStatics(d, b);
32160 };
32161 return function (d, b) {
32162 extendStatics(d, b);
32163 function __() { this.constructor = d; }
32164 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
32165 };
32166})();
32167var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
32168 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
32169 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
32170 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
32171 return c > 3 && r && Object.defineProperty(target, key, r), r;
32172};
32173
32174
32175
32176var PopupEditorWrapper = /** @class */ (function (_super) {
32177 __extends(PopupEditorWrapper, _super);
32178 function PopupEditorWrapper(params) {
32179 var _this = _super.call(this, /* html */ "<div class=\"ag-popup-editor\" tabindex=\"-1\"/>") || this;
32180 _this.params = params;
32181 return _this;
32182 }
32183 PopupEditorWrapper.prototype.postConstruct = function () {
32184 this.gridOptionsWrapper.setDomData(this.getGui(), PopupEditorWrapper.DOM_KEY_POPUP_EDITOR_WRAPPER, true);
32185 this.addKeyDownListener();
32186 };
32187 PopupEditorWrapper.prototype.addKeyDownListener = function () {
32188 var _this = this;
32189 var eGui = this.getGui();
32190 var params = this.params;
32191 var listener = function (event) {
32192 if (!Object(_utils_keyboard__WEBPACK_IMPORTED_MODULE_1__["isUserSuppressingKeyboardEvent"])(_this.gridOptionsWrapper, event, params.node, params.column, true)) {
32193 params.onKeyDown(event);
32194 }
32195 };
32196 this.addManagedListener(eGui, 'keydown', listener);
32197 };
32198 PopupEditorWrapper.DOM_KEY_POPUP_EDITOR_WRAPPER = 'popupEditorWrapper';
32199 __decorate([
32200 _context_context__WEBPACK_IMPORTED_MODULE_2__["PostConstruct"]
32201 ], PopupEditorWrapper.prototype, "postConstruct", null);
32202 return PopupEditorWrapper;
32203}(_widgets_popupComponent__WEBPACK_IMPORTED_MODULE_0__["PopupComponent"]));
32204
32205
32206
32207
32208
32209/***/ }),
32210/* 144 */
32211/***/ (function(module, __webpack_exports__, __webpack_require__) {
32212
32213"use strict";
32214__webpack_require__.r(__webpack_exports__);
32215/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BodyDropPivotTarget", function() { return BodyDropPivotTarget; });
32216/* harmony import */ var _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(97);
32217/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
32218/**
32219 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
32220 * @version v27.3.0
32221 * @link https://www.ag-grid.com/
32222 * @license MIT
32223 */
32224var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
32225 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
32226 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
32227 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
32228 return c > 3 && r && Object.defineProperty(target, key, r), r;
32229};
32230
32231
32232var BodyDropPivotTarget = /** @class */ (function () {
32233 function BodyDropPivotTarget(pinned) {
32234 this.columnsToAggregate = [];
32235 this.columnsToGroup = [];
32236 this.columnsToPivot = [];
32237 this.pinned = pinned;
32238 }
32239 /** Callback for when drag enters */
32240 BodyDropPivotTarget.prototype.onDragEnter = function (draggingEvent) {
32241 var _this = this;
32242 this.clearColumnsList();
32243 // in pivot mode, we don't accept any drops if functions are read only
32244 if (this.gridOptionsWrapper.isFunctionsReadOnly()) {
32245 return;
32246 }
32247 var dragColumns = draggingEvent.dragItem.columns;
32248 if (!dragColumns) {
32249 return;
32250 }
32251 dragColumns.forEach(function (column) {
32252 // we don't allow adding secondary columns
32253 if (!column.isPrimary()) {
32254 return;
32255 }
32256 if (column.isAnyFunctionActive()) {
32257 return;
32258 }
32259 if (column.isAllowValue()) {
32260 _this.columnsToAggregate.push(column);
32261 }
32262 else if (column.isAllowRowGroup()) {
32263 _this.columnsToGroup.push(column);
32264 }
32265 else if (column.isAllowPivot()) {
32266 _this.columnsToPivot.push(column);
32267 }
32268 });
32269 };
32270 BodyDropPivotTarget.prototype.getIconName = function () {
32271 var totalColumns = this.columnsToAggregate.length + this.columnsToGroup.length + this.columnsToPivot.length;
32272 if (totalColumns > 0) {
32273 return this.pinned ? _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__["DragAndDropService"].ICON_PINNED : _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__["DragAndDropService"].ICON_MOVE;
32274 }
32275 return null;
32276 };
32277 /** Callback for when drag leaves */
32278 BodyDropPivotTarget.prototype.onDragLeave = function (draggingEvent) {
32279 // if we are taking columns out of the center, then we remove them from the report
32280 this.clearColumnsList();
32281 };
32282 BodyDropPivotTarget.prototype.clearColumnsList = function () {
32283 this.columnsToAggregate.length = 0;
32284 this.columnsToGroup.length = 0;
32285 this.columnsToPivot.length = 0;
32286 };
32287 /** Callback for when dragging */
32288 BodyDropPivotTarget.prototype.onDragging = function (draggingEvent) {
32289 };
32290 /** Callback for when drag stops */
32291 BodyDropPivotTarget.prototype.onDragStop = function (draggingEvent) {
32292 if (this.columnsToAggregate.length > 0) {
32293 this.columnModel.addValueColumns(this.columnsToAggregate, "toolPanelDragAndDrop");
32294 }
32295 if (this.columnsToGroup.length > 0) {
32296 this.columnModel.addRowGroupColumns(this.columnsToGroup, "toolPanelDragAndDrop");
32297 }
32298 if (this.columnsToPivot.length > 0) {
32299 this.columnModel.addPivotColumns(this.columnsToPivot, "toolPanelDragAndDrop");
32300 }
32301 };
32302 __decorate([
32303 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
32304 ], BodyDropPivotTarget.prototype, "columnModel", void 0);
32305 __decorate([
32306 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridOptionsWrapper')
32307 ], BodyDropPivotTarget.prototype, "gridOptionsWrapper", void 0);
32308 return BodyDropPivotTarget;
32309}());
32310
32311
32312
32313
32314
32315/***/ }),
32316/* 145 */
32317/***/ (function(module, __webpack_exports__, __webpack_require__) {
32318
32319"use strict";
32320__webpack_require__.r(__webpack_exports__);
32321/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BodyDropTarget", function() { return BodyDropTarget; });
32322/* harmony import */ var _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(97);
32323/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
32324/* harmony import */ var _moveColumnFeature__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(146);
32325/* harmony import */ var _bodyDropPivotTarget__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(144);
32326/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(15);
32327/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(20);
32328/**
32329 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
32330 * @version v27.3.0
32331 * @link https://www.ag-grid.com/
32332 * @license MIT
32333 */
32334var __extends = (undefined && undefined.__extends) || (function () {
32335 var extendStatics = function (d, b) {
32336 extendStatics = Object.setPrototypeOf ||
32337 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
32338 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
32339 return extendStatics(d, b);
32340 };
32341 return function (d, b) {
32342 extendStatics(d, b);
32343 function __() { this.constructor = d; }
32344 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
32345 };
32346})();
32347var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
32348 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
32349 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
32350 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
32351 return c > 3 && r && Object.defineProperty(target, key, r), r;
32352};
32353
32354
32355
32356
32357
32358
32359var BodyDropTarget = /** @class */ (function (_super) {
32360 __extends(BodyDropTarget, _super);
32361 function BodyDropTarget(pinned, eContainer) {
32362 var _this = _super.call(this) || this;
32363 _this.pinned = pinned;
32364 _this.eContainer = eContainer;
32365 return _this;
32366 }
32367 BodyDropTarget.prototype.postConstruct = function () {
32368 var _this = this;
32369 this.ctrlsService.whenReady(function (p) {
32370 switch (_this.pinned) {
32371 case _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].PINNED_LEFT:
32372 _this.eSecondaryContainers = [
32373 [p.gridBodyCtrl.getBodyViewportElement(), p.leftRowContainerCtrl.getContainerElement()],
32374 [p.bottomLeftRowContainerCtrl.getContainerElement()],
32375 [p.topLeftRowContainerCtrl.getContainerElement()]
32376 ];
32377 break;
32378 case _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].PINNED_RIGHT:
32379 _this.eSecondaryContainers = [
32380 [p.gridBodyCtrl.getBodyViewportElement(), p.rightRowContainerCtrl.getContainerElement()],
32381 [p.bottomRightRowContainerCtrl.getContainerElement()],
32382 [p.topRightRowContainerCtrl.getContainerElement()]
32383 ];
32384 break;
32385 default:
32386 _this.eSecondaryContainers = [
32387 [p.gridBodyCtrl.getBodyViewportElement(), p.centerRowContainerCtrl.getViewportElement()],
32388 [p.bottomCenterRowContainerCtrl.getViewportElement()],
32389 [p.topCenterRowContainerCtrl.getViewportElement()]
32390 ];
32391 break;
32392 }
32393 });
32394 };
32395 BodyDropTarget.prototype.isInterestedIn = function (type) {
32396 return type === _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__["DragSourceType"].HeaderCell ||
32397 (type === _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__["DragSourceType"].ToolPanel && this.gridOptionsWrapper.isAllowDragFromColumnsToolPanel());
32398 };
32399 BodyDropTarget.prototype.getSecondaryContainers = function () {
32400 return this.eSecondaryContainers;
32401 };
32402 BodyDropTarget.prototype.getContainer = function () {
32403 return this.eContainer;
32404 };
32405 BodyDropTarget.prototype.init = function () {
32406 this.moveColumnFeature = this.createManagedBean(new _moveColumnFeature__WEBPACK_IMPORTED_MODULE_2__["MoveColumnFeature"](this.pinned, this.eContainer));
32407 this.bodyDropPivotTarget = this.createManagedBean(new _bodyDropPivotTarget__WEBPACK_IMPORTED_MODULE_3__["BodyDropPivotTarget"](this.pinned));
32408 this.dragAndDropService.addDropTarget(this);
32409 };
32410 BodyDropTarget.prototype.getIconName = function () {
32411 return this.currentDropListener.getIconName();
32412 };
32413 // we want to use the bodyPivotTarget if the user is dragging columns in from the toolPanel
32414 // and we are in pivot mode, as it has to logic to set pivot/value/group on the columns when
32415 // dropped into the grid's body.
32416 BodyDropTarget.prototype.isDropColumnInPivotMode = function (draggingEvent) {
32417 // in pivot mode, then if moving a column (ie didn't come from toolpanel) then it's
32418 // a standard column move, however if it came from the toolpanel, then we are introducing
32419 // dimensions or values to the grid
32420 return this.columnModel.isPivotMode() && draggingEvent.dragSource.type === _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_0__["DragSourceType"].ToolPanel;
32421 };
32422 BodyDropTarget.prototype.onDragEnter = function (draggingEvent) {
32423 // we pick the drop listener depending on whether we are in pivot mode are not. if we are
32424 // in pivot mode, then dropping cols changes the row group, pivot, value stats. otherwise
32425 // we change visibility state and position.
32426 this.currentDropListener = this.isDropColumnInPivotMode(draggingEvent) ? this.bodyDropPivotTarget : this.moveColumnFeature;
32427 this.currentDropListener.onDragEnter(draggingEvent);
32428 };
32429 BodyDropTarget.prototype.onDragLeave = function (params) {
32430 this.currentDropListener.onDragLeave(params);
32431 };
32432 BodyDropTarget.prototype.onDragging = function (params) {
32433 this.currentDropListener.onDragging(params);
32434 };
32435 BodyDropTarget.prototype.onDragStop = function (params) {
32436 this.currentDropListener.onDragStop(params);
32437 };
32438 __decorate([
32439 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('dragAndDropService')
32440 ], BodyDropTarget.prototype, "dragAndDropService", void 0);
32441 __decorate([
32442 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
32443 ], BodyDropTarget.prototype, "columnModel", void 0);
32444 __decorate([
32445 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('ctrlsService')
32446 ], BodyDropTarget.prototype, "ctrlsService", void 0);
32447 __decorate([
32448 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
32449 ], BodyDropTarget.prototype, "postConstruct", null);
32450 __decorate([
32451 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
32452 ], BodyDropTarget.prototype, "init", null);
32453 return BodyDropTarget;
32454}(_context_beanStub__WEBPACK_IMPORTED_MODULE_5__["BeanStub"]));
32455
32456
32457
32458
32459
32460/***/ }),
32461/* 146 */
32462/***/ (function(module, __webpack_exports__, __webpack_require__) {
32463
32464"use strict";
32465__webpack_require__.r(__webpack_exports__);
32466/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MoveColumnFeature", function() { return MoveColumnFeature; });
32467/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
32468/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15);
32469/* harmony import */ var _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(97);
32470/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7);
32471/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(18);
32472/**
32473 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
32474 * @version v27.3.0
32475 * @link https://www.ag-grid.com/
32476 * @license MIT
32477 */
32478var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
32479 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
32480 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
32481 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
32482 return c > 3 && r && Object.defineProperty(target, key, r), r;
32483};
32484
32485
32486
32487
32488
32489var MoveColumnFeature = /** @class */ (function () {
32490 function MoveColumnFeature(pinned, eContainer) {
32491 this.needToMoveLeft = false;
32492 this.needToMoveRight = false;
32493 this.pinned = pinned;
32494 this.eContainer = eContainer;
32495 this.centerContainer = !Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["exists"])(pinned);
32496 }
32497 MoveColumnFeature.prototype.init = function () {
32498 var _this = this;
32499 this.ctrlsService.whenReady(function () {
32500 _this.gridBodyCon = _this.ctrlsService.getGridBodyCtrl();
32501 });
32502 };
32503 MoveColumnFeature.prototype.getIconName = function () {
32504 return this.pinned ? _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["DragAndDropService"].ICON_PINNED : _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["DragAndDropService"].ICON_MOVE;
32505 };
32506 MoveColumnFeature.prototype.onDragEnter = function (draggingEvent) {
32507 // we do dummy drag, so make sure column appears in the right location when first placed
32508 var columns = draggingEvent.dragItem.columns;
32509 var dragCameFromToolPanel = draggingEvent.dragSource.type === _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["DragSourceType"].ToolPanel;
32510 if (dragCameFromToolPanel) {
32511 // the if statement doesn't work if drag leaves grid, then enters again
32512 this.setColumnsVisible(columns, true, "uiColumnDragged");
32513 }
32514 else {
32515 // restore previous state of visible columns upon re-entering. this means if the user drags
32516 // a group out, and then drags the group back in, only columns that were originally visible
32517 // will be visible again. otherwise a group with three columns (but only two visible) could
32518 // be dragged out, then when it's dragged in again, all three are visible. this stops that.
32519 var visibleState_1 = draggingEvent.dragItem.visibleState;
32520 var visibleColumns = (columns || []).filter(function (column) { return visibleState_1[column.getId()]; });
32521 this.setColumnsVisible(visibleColumns, true, "uiColumnDragged");
32522 }
32523 this.setColumnsPinned(columns, this.pinned, "uiColumnDragged");
32524 this.onDragging(draggingEvent, true);
32525 };
32526 MoveColumnFeature.prototype.onDragLeave = function (draggingEvent) {
32527 var hideColumnOnExit = !this.gridOptionsWrapper.isSuppressDragLeaveHidesColumns() && !draggingEvent.fromNudge;
32528 if (hideColumnOnExit) {
32529 var dragItem = draggingEvent.dragSource.getDragItem();
32530 var columns = dragItem.columns;
32531 this.setColumnsVisible(columns, false, "uiColumnDragged");
32532 }
32533 this.ensureIntervalCleared();
32534 };
32535 MoveColumnFeature.prototype.setColumnsVisible = function (columns, visible, source) {
32536 if (source === void 0) { source = "api"; }
32537 if (columns) {
32538 var allowedCols = columns.filter(function (c) { return !c.getColDef().lockVisible; });
32539 this.columnModel.setColumnsVisible(allowedCols, visible, source);
32540 }
32541 };
32542 MoveColumnFeature.prototype.setColumnsPinned = function (columns, pinned, source) {
32543 if (source === void 0) { source = "api"; }
32544 if (columns) {
32545 var allowedCols = columns.filter(function (c) { return !c.getColDef().lockPinned; });
32546 this.columnModel.setColumnsPinned(allowedCols, pinned, source);
32547 }
32548 };
32549 MoveColumnFeature.prototype.onDragStop = function () {
32550 this.ensureIntervalCleared();
32551 };
32552 MoveColumnFeature.prototype.normaliseX = function (x) {
32553 // flip the coordinate if doing RTL
32554 if (this.gridOptionsWrapper.isEnableRtl()) {
32555 var clientWidth = this.eContainer.clientWidth;
32556 x = clientWidth - x;
32557 }
32558 // adjust for scroll only if centre container (the pinned containers don't scroll)
32559 if (this.centerContainer) {
32560 x += this.ctrlsService.getCenterRowContainerCtrl().getCenterViewportScrollLeft();
32561 }
32562 return x;
32563 };
32564 MoveColumnFeature.prototype.checkCenterForScrolling = function (xAdjustedForScroll) {
32565 if (this.centerContainer) {
32566 // scroll if the mouse has gone outside the grid (or just outside the scrollable part if pinning)
32567 // putting in 50 buffer, so even if user gets to edge of grid, a scroll will happen
32568 var firstVisiblePixel = this.ctrlsService.getCenterRowContainerCtrl().getCenterViewportScrollLeft();
32569 var lastVisiblePixel = firstVisiblePixel + this.ctrlsService.getCenterRowContainerCtrl().getCenterWidth();
32570 if (this.gridOptionsWrapper.isEnableRtl()) {
32571 this.needToMoveRight = xAdjustedForScroll < (firstVisiblePixel + 50);
32572 this.needToMoveLeft = xAdjustedForScroll > (lastVisiblePixel - 50);
32573 }
32574 else {
32575 this.needToMoveLeft = xAdjustedForScroll < (firstVisiblePixel + 50);
32576 this.needToMoveRight = xAdjustedForScroll > (lastVisiblePixel - 50);
32577 }
32578 if (this.needToMoveLeft || this.needToMoveRight) {
32579 this.ensureIntervalStarted();
32580 }
32581 else {
32582 this.ensureIntervalCleared();
32583 }
32584 }
32585 };
32586 MoveColumnFeature.prototype.onDragging = function (draggingEvent, fromEnter) {
32587 var _this = this;
32588 if (fromEnter === void 0) { fromEnter = false; }
32589 this.lastDraggingEvent = draggingEvent;
32590 // if moving up or down (ie not left or right) then do nothing
32591 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["missing"])(draggingEvent.hDirection)) {
32592 return;
32593 }
32594 var mouseXNormalised = this.normaliseX(draggingEvent.x);
32595 // if the user is dragging into the panel, ie coming from the side panel into the main grid,
32596 // we don't want to scroll the grid this time, it would appear like the table is jumping
32597 // each time a column is dragged in.
32598 if (!fromEnter) {
32599 this.checkCenterForScrolling(mouseXNormalised);
32600 }
32601 var hDirectionNormalised = this.normaliseDirection(draggingEvent.hDirection);
32602 var dragSourceType = draggingEvent.dragSource.type;
32603 var columnsToMove = draggingEvent.dragSource.getDragItem().columns;
32604 columnsToMove = columnsToMove.filter(function (col) {
32605 if (col.getColDef().lockPinned) {
32606 // if locked return true only if both col and container are same pin type.
32607 // double equals (==) here on purpose so that null==undefined is true (for not pinned options)
32608 return col.getPinned() == _this.pinned;
32609 }
32610 // if not pin locked, then always allowed to be in this container
32611 return true;
32612 });
32613 this.attemptMoveColumns(dragSourceType, columnsToMove, hDirectionNormalised, mouseXNormalised, fromEnter);
32614 };
32615 MoveColumnFeature.prototype.normaliseDirection = function (hDirection) {
32616 if (this.gridOptionsWrapper.isEnableRtl()) {
32617 switch (hDirection) {
32618 case _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["HorizontalDirection"].Left: return _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["HorizontalDirection"].Right;
32619 case _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["HorizontalDirection"].Right: return _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["HorizontalDirection"].Left;
32620 default: console.error("AG Grid: Unknown direction " + hDirection);
32621 }
32622 }
32623 else {
32624 return hDirection;
32625 }
32626 };
32627 // returns the index of the first column in the list ONLY if the cols are all beside
32628 // each other. if the cols are not beside each other, then returns null
32629 MoveColumnFeature.prototype.calculateOldIndex = function (movingCols) {
32630 var gridCols = this.columnModel.getAllGridColumns();
32631 var indexes = Object(_utils_array__WEBPACK_IMPORTED_MODULE_4__["sortNumerically"])(movingCols.map(function (col) { return gridCols.indexOf(col); }));
32632 var firstIndex = indexes[0];
32633 var lastIndex = Object(_utils_array__WEBPACK_IMPORTED_MODULE_4__["last"])(indexes);
32634 var spread = lastIndex - firstIndex;
32635 var gapsExist = spread !== indexes.length - 1;
32636 return gapsExist ? null : firstIndex;
32637 };
32638 MoveColumnFeature.prototype.attemptMoveColumns = function (dragSourceType, allMovingColumns, hDirection, mouseX, fromEnter) {
32639 var draggingLeft = hDirection === _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["HorizontalDirection"].Left;
32640 var draggingRight = hDirection === _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["HorizontalDirection"].Right;
32641 // it is important to sort the moving columns as they are in grid columns, as the list of moving columns
32642 // could themselves be part of 'married children' groups, which means we need to maintain the order within
32643 // the moving list.
32644 var allMovingColumnsOrdered = allMovingColumns.slice();
32645 this.columnModel.sortColumnsLikeGridColumns(allMovingColumnsOrdered);
32646 var validMoves = this.calculateValidMoves(allMovingColumnsOrdered, draggingRight, mouseX);
32647 // if cols are not adjacent, then this returns null. when moving, we constrain the direction of the move
32648 // (ie left or right) to the mouse direction. however
32649 var oldIndex = this.calculateOldIndex(allMovingColumnsOrdered);
32650 if (validMoves.length === 0) {
32651 return;
32652 }
32653 var firstValidMove = validMoves[0];
32654 // the two check below stop an error when the user grabs a group my a middle column, then
32655 // it is possible the mouse pointer is to the right of a column while been dragged left.
32656 // so we need to make sure that the mouse pointer is actually left of the left most column
32657 // if moving left, and right of the right most column if moving right
32658 // we check 'fromEnter' below so we move the column to the new spot if the mouse is coming from
32659 // outside the grid, eg if the column is moving from side panel, mouse is moving left, then we should
32660 // place the column to the RHS even if the mouse is moving left and the column is already on
32661 // the LHS. otherwise we stick to the rule described above.
32662 var constrainDirection = oldIndex !== null && !fromEnter;
32663 // don't consider 'fromEnter' when dragging header cells, otherwise group can jump to opposite direction of drag
32664 if (dragSourceType == _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["DragSourceType"].HeaderCell) {
32665 constrainDirection = oldIndex !== null;
32666 }
32667 if (constrainDirection) {
32668 // only allow left drag if this column is moving left
32669 if (draggingLeft && firstValidMove >= oldIndex) {
32670 return;
32671 }
32672 // only allow right drag if this column is moving right
32673 if (draggingRight && firstValidMove <= oldIndex) {
32674 return;
32675 }
32676 }
32677 for (var i = 0; i < validMoves.length; i++) {
32678 var move = validMoves[i];
32679 if (!this.columnModel.doesMovePassRules(allMovingColumnsOrdered, move)) {
32680 continue;
32681 }
32682 this.columnModel.moveColumns(allMovingColumnsOrdered, move, "uiColumnDragged");
32683 // important to return here, so once we do the first valid move, we don't try do any more
32684 return;
32685 }
32686 };
32687 MoveColumnFeature.prototype.calculateValidMoves = function (movingCols, draggingRight, mouseX) {
32688 var isMoveBlocked = this.gridOptionsWrapper.isSuppressMovableColumns() || movingCols.some(function (col) { return col.getColDef().suppressMovable; });
32689 if (isMoveBlocked) {
32690 return [];
32691 }
32692 // this is the list of cols on the screen, so it's these we use when comparing the x mouse position
32693 var allDisplayedCols = this.columnModel.getDisplayedColumns(this.pinned);
32694 // but this list is the list of all cols, when we move a col it's the index within this list that gets used,
32695 // so the result we return has to be and index location for this list
32696 var allGridCols = this.columnModel.getAllGridColumns();
32697 var movingDisplayedCols = allDisplayedCols.filter(function (col) { return Object(_utils_array__WEBPACK_IMPORTED_MODULE_4__["includes"])(movingCols, col); });
32698 var otherDisplayedCols = allDisplayedCols.filter(function (col) { return !Object(_utils_array__WEBPACK_IMPORTED_MODULE_4__["includes"])(movingCols, col); });
32699 var otherGridCols = allGridCols.filter(function (col) { return !Object(_utils_array__WEBPACK_IMPORTED_MODULE_4__["includes"])(movingCols, col); });
32700 // work out how many DISPLAYED columns fit before the 'x' position. this gives us the displayIndex.
32701 // for example, if cols are a,b,c,d and we find a,b fit before 'x', then we want to place the moving
32702 // col between b and c (so that it is under the mouse position).
32703 var displayIndex = 0;
32704 var availableWidth = mouseX;
32705 // if we are dragging right, then the columns will be to the left of the mouse, so we also want to
32706 // include the width of the moving columns
32707 if (draggingRight) {
32708 var widthOfMovingDisplayedCols_1 = 0;
32709 movingDisplayedCols.forEach(function (col) { return widthOfMovingDisplayedCols_1 += col.getActualWidth(); });
32710 availableWidth -= widthOfMovingDisplayedCols_1;
32711 }
32712 if (availableWidth > 0) {
32713 // now count how many of the displayed columns will fit to the left
32714 for (var i = 0; i < otherDisplayedCols.length; i++) {
32715 var col = otherDisplayedCols[i];
32716 availableWidth -= col.getActualWidth();
32717 if (availableWidth < 0) {
32718 break;
32719 }
32720 displayIndex++;
32721 }
32722 // trial and error, if going right, we adjust by one, i didn't manage to quantify why, but it works
32723 if (draggingRight) {
32724 displayIndex++;
32725 }
32726 }
32727 // the display index is with respect to all the showing columns, however when we move, it's with
32728 // respect to all grid columns, so we need to translate from display index to grid index
32729 var firstValidMove;
32730 if (displayIndex > 0) {
32731 var leftColumn = otherDisplayedCols[displayIndex - 1];
32732 firstValidMove = otherGridCols.indexOf(leftColumn) + 1;
32733 }
32734 else {
32735 firstValidMove = otherGridCols.indexOf(otherDisplayedCols[0]);
32736 if (firstValidMove === -1) {
32737 firstValidMove = 0;
32738 }
32739 }
32740 var validMoves = [firstValidMove];
32741 var numberComparator = function (a, b) { return a - b; };
32742 // add in other valid moves due to hidden columns and married children. for example, a particular
32743 // move might break a group that has married children (so move isn't valid), however there could
32744 // be hidden columns (not displayed) that we could jump over to make the move valid. because
32745 // they are hidden, user doesn't see any different, however it allows moves that would otherwise
32746 // not work. for example imagine a group with 9 columns and all columns are hidden except the
32747 // middle one (so 4 hidden to left, 4 hidden to right), then when moving 'firstValidMove' will
32748 // be relative to the not-shown column, however we need to consider the move jumping over all the
32749 // hidden children. if we didn't do this, then if the group just described was at the end (RHS) of the
32750 // grid, there would be no way to put a column after it (as the grid would only consider beside the
32751 // visible column, which would fail valid move rules).
32752 if (draggingRight) {
32753 // if dragging right, then we add all the additional moves to the right. so in other words
32754 // if the next move is not valid, find the next move to the right that is valid.
32755 var pointer = firstValidMove + 1;
32756 var lastIndex = allGridCols.length - 1;
32757 while (pointer <= lastIndex) {
32758 validMoves.push(pointer);
32759 pointer++;
32760 }
32761 // adding columns here means the order is now messed up
32762 validMoves.sort(numberComparator);
32763 }
32764 else {
32765 // if dragging left we do the reverse of dragging right, we add in all the valid moves to the
32766 // left. however we also have to consider moves to the right for all hidden columns first.
32767 // (this logic is hard to reason with, it was worked out with trial and error,
32768 // more observation rather than science).
32769 // add moves to the right
32770 var pointer = firstValidMove;
32771 var lastIndex = allGridCols.length - 1;
32772 var displacedCol = allGridCols[pointer];
32773 while (pointer <= lastIndex && this.isColumnHidden(allDisplayedCols, displacedCol)) {
32774 pointer++;
32775 validMoves.push(pointer);
32776 displacedCol = allGridCols[pointer];
32777 }
32778 // add moves to the left
32779 pointer = firstValidMove - 1;
32780 var firstDisplayIndex = 0;
32781 while (pointer >= firstDisplayIndex) {
32782 validMoves.push(pointer);
32783 pointer--;
32784 }
32785 // adding columns here means the order is now messed up
32786 validMoves.sort(numberComparator).reverse();
32787 }
32788 return validMoves;
32789 };
32790 // isHidden takes into account visible=false and group=closed, ie it is not displayed
32791 MoveColumnFeature.prototype.isColumnHidden = function (displayedColumns, col) {
32792 return displayedColumns.indexOf(col) < 0;
32793 };
32794 MoveColumnFeature.prototype.ensureIntervalStarted = function () {
32795 if (!this.movingIntervalId) {
32796 this.intervalCount = 0;
32797 this.failedMoveAttempts = 0;
32798 this.movingIntervalId = window.setInterval(this.moveInterval.bind(this), 100);
32799 if (this.needToMoveLeft) {
32800 this.dragAndDropService.setGhostIcon(_dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["DragAndDropService"].ICON_LEFT, true);
32801 }
32802 else {
32803 this.dragAndDropService.setGhostIcon(_dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["DragAndDropService"].ICON_RIGHT, true);
32804 }
32805 }
32806 };
32807 MoveColumnFeature.prototype.ensureIntervalCleared = function () {
32808 if (this.movingIntervalId) {
32809 window.clearInterval(this.movingIntervalId);
32810 this.movingIntervalId = null;
32811 this.dragAndDropService.setGhostIcon(_dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["DragAndDropService"].ICON_MOVE);
32812 }
32813 };
32814 MoveColumnFeature.prototype.moveInterval = function () {
32815 // the amounts we move get bigger at each interval, so the speed accelerates, starting a bit slow
32816 // and getting faster. this is to give smoother user experience. we max at 100px to limit the speed.
32817 var pixelsToMove;
32818 this.intervalCount++;
32819 pixelsToMove = 10 + (this.intervalCount * 5);
32820 if (pixelsToMove > 100) {
32821 pixelsToMove = 100;
32822 }
32823 var pixelsMoved = null;
32824 var scrollFeature = this.gridBodyCon.getScrollFeature();
32825 if (this.needToMoveLeft) {
32826 pixelsMoved = scrollFeature.scrollHorizontally(-pixelsToMove);
32827 }
32828 else if (this.needToMoveRight) {
32829 pixelsMoved = scrollFeature.scrollHorizontally(pixelsToMove);
32830 }
32831 if (pixelsMoved !== 0) {
32832 this.onDragging(this.lastDraggingEvent);
32833 this.failedMoveAttempts = 0;
32834 }
32835 else {
32836 // we count the failed move attempts. if we fail to move 7 times, then we pin the column.
32837 // this is how we achieve pining by dragging the column to the edge of the grid.
32838 this.failedMoveAttempts++;
32839 var columns = this.lastDraggingEvent.dragItem.columns;
32840 var columnsThatCanPin = columns.filter(function (c) { return !c.getColDef().lockPinned; });
32841 if (columnsThatCanPin.length > 0) {
32842 this.dragAndDropService.setGhostIcon(_dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["DragAndDropService"].ICON_PINNED);
32843 if (this.failedMoveAttempts > 7) {
32844 var pinType = this.needToMoveLeft ? _constants_constants__WEBPACK_IMPORTED_MODULE_1__["Constants"].PINNED_LEFT : _constants_constants__WEBPACK_IMPORTED_MODULE_1__["Constants"].PINNED_RIGHT;
32845 this.setColumnsPinned(columnsThatCanPin, pinType, "uiColumnDragged");
32846 this.dragAndDropService.nudge();
32847 }
32848 }
32849 }
32850 };
32851 __decorate([
32852 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
32853 ], MoveColumnFeature.prototype, "columnModel", void 0);
32854 __decorate([
32855 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('dragAndDropService')
32856 ], MoveColumnFeature.prototype, "dragAndDropService", void 0);
32857 __decorate([
32858 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridOptionsWrapper')
32859 ], MoveColumnFeature.prototype, "gridOptionsWrapper", void 0);
32860 __decorate([
32861 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
32862 ], MoveColumnFeature.prototype, "ctrlsService", void 0);
32863 __decorate([
32864 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
32865 ], MoveColumnFeature.prototype, "init", null);
32866 return MoveColumnFeature;
32867}());
32868
32869
32870
32871
32872
32873/***/ }),
32874/* 147 */
32875/***/ (function(module, __webpack_exports__, __webpack_require__) {
32876
32877"use strict";
32878__webpack_require__.r(__webpack_exports__);
32879/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CssClassApplier", function() { return CssClassApplier; });
32880/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
32881/**
32882 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
32883 * @version v27.3.0
32884 * @link https://www.ag-grid.com/
32885 * @license MIT
32886 */
32887var __read = (undefined && undefined.__read) || function (o, n) {
32888 var m = typeof Symbol === "function" && o[Symbol.iterator];
32889 if (!m) return o;
32890 var i = m.call(o), r, ar = [], e;
32891 try {
32892 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
32893 }
32894 catch (error) { e = { error: error }; }
32895 finally {
32896 try {
32897 if (r && !r.done && (m = i["return"])) m.call(i);
32898 }
32899 finally { if (e) throw e.error; }
32900 }
32901 return ar;
32902};
32903var __spread = (undefined && undefined.__spread) || function () {
32904 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
32905 return ar;
32906};
32907
32908var CssClassApplier = /** @class */ (function () {
32909 function CssClassApplier() {
32910 }
32911 CssClassApplier.getHeaderClassesFromColDef = function (abstractColDef, gridOptionsWrapper, column, columnGroup) {
32912 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_0__["missing"])(abstractColDef)) {
32913 return [];
32914 }
32915 return this.getColumnClassesFromCollDef(abstractColDef.headerClass, abstractColDef, gridOptionsWrapper, column, columnGroup);
32916 };
32917 CssClassApplier.getToolPanelClassesFromColDef = function (abstractColDef, gridOptionsWrapper, column, columnGroup) {
32918 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_0__["missing"])(abstractColDef)) {
32919 return [];
32920 }
32921 return this.getColumnClassesFromCollDef(abstractColDef.toolPanelClass, abstractColDef, gridOptionsWrapper, column, columnGroup);
32922 };
32923 CssClassApplier.getClassParams = function (abstractColDef, gridOptionsWrapper, column, columnGroup) {
32924 return {
32925 // bad naming, as colDef here can be a group or a column,
32926 // however most people won't appreciate the difference,
32927 // so keeping it as colDef to avoid confusion.
32928 colDef: abstractColDef,
32929 column: column,
32930 columnGroup: columnGroup,
32931 api: gridOptionsWrapper.getApi(),
32932 columnApi: gridOptionsWrapper.getColumnApi(),
32933 context: gridOptionsWrapper.getContext()
32934 };
32935 };
32936 CssClassApplier.getColumnClassesFromCollDef = function (classesOrFunc, abstractColDef, gridOptionsWrapper, column, columnGroup) {
32937 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_0__["missing"])(classesOrFunc)) {
32938 return [];
32939 }
32940 var classToUse;
32941 if (typeof classesOrFunc === 'function') {
32942 var params = this.getClassParams(abstractColDef, gridOptionsWrapper, column, columnGroup);
32943 classToUse = classesOrFunc(params);
32944 }
32945 else {
32946 classToUse = classesOrFunc;
32947 }
32948 if (typeof classToUse === 'string') {
32949 return [classToUse];
32950 }
32951 if (Array.isArray(classToUse)) {
32952 return __spread(classToUse);
32953 }
32954 return [];
32955 };
32956 return CssClassApplier;
32957}());
32958
32959
32960
32961
32962
32963/***/ }),
32964/* 148 */
32965/***/ (function(module, __webpack_exports__, __webpack_require__) {
32966
32967"use strict";
32968__webpack_require__.r(__webpack_exports__);
32969/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderRowContainerComp", function() { return HeaderRowContainerComp; });
32970/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
32971/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
32972/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
32973/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(13);
32974/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(36);
32975/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(57);
32976/* harmony import */ var _row_headerRowComp__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(149);
32977/* harmony import */ var _headerRowContainerCtrl__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(152);
32978/**
32979 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
32980 * @version v27.3.0
32981 * @link https://www.ag-grid.com/
32982 * @license MIT
32983 */
32984var __extends = (undefined && undefined.__extends) || (function () {
32985 var extendStatics = function (d, b) {
32986 extendStatics = Object.setPrototypeOf ||
32987 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
32988 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
32989 return extendStatics(d, b);
32990 };
32991 return function (d, b) {
32992 extendStatics(d, b);
32993 function __() { this.constructor = d; }
32994 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
32995 };
32996})();
32997var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
32998 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
32999 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33000 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
33001 return c > 3 && r && Object.defineProperty(target, key, r), r;
33002};
33003
33004
33005
33006
33007
33008
33009
33010
33011var HeaderRowContainerComp = /** @class */ (function (_super) {
33012 __extends(HeaderRowContainerComp, _super);
33013 function HeaderRowContainerComp(pinned) {
33014 var _this = _super.call(this) || this;
33015 _this.headerRowComps = {};
33016 _this.rowCompsList = [];
33017 _this.pinned = pinned;
33018 return _this;
33019 }
33020 HeaderRowContainerComp.prototype.init = function () {
33021 var _this = this;
33022 this.selectAndSetTemplate();
33023 var compProxy = {
33024 addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },
33025 setCtrls: function (ctrls) { return _this.setCtrls(ctrls); },
33026 // only gets called for center section
33027 setCenterWidth: function (width) { return _this.eCenterContainer.style.width = width; },
33028 setContainerTransform: function (transform) { return _this.eCenterContainer.style.transform = transform; },
33029 // only gets called for pinned sections
33030 setPinnedContainerWidth: function (width) {
33031 var eGui = _this.getGui();
33032 eGui.style.width = width;
33033 eGui.style.maxWidth = width;
33034 eGui.style.minWidth = width;
33035 }
33036 };
33037 var ctrl = this.createManagedBean(new _headerRowContainerCtrl__WEBPACK_IMPORTED_MODULE_7__["HeaderRowContainerCtrl"](this.pinned));
33038 ctrl.setComp(compProxy, this.getGui());
33039 };
33040 HeaderRowContainerComp.prototype.selectAndSetTemplate = function () {
33041 var pinnedLeft = this.pinned == _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_LEFT;
33042 var pinnedRight = this.pinned == _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_RIGHT;
33043 var template = pinnedLeft ? HeaderRowContainerComp.PINNED_LEFT_TEMPLATE :
33044 pinnedRight ? HeaderRowContainerComp.PINNED_RIGHT_TEMPLATE : HeaderRowContainerComp.CENTER_TEMPLATE;
33045 this.setTemplate(template);
33046 // for left and right, we add rows directly to the root element,
33047 // but for center container we add elements to the child container.
33048 this.eRowContainer = this.eCenterContainer ? this.eCenterContainer : this.getGui();
33049 };
33050 HeaderRowContainerComp.prototype.destroyRowComps = function () {
33051 this.setCtrls([]);
33052 };
33053 HeaderRowContainerComp.prototype.destroyRowComp = function (rowComp) {
33054 this.destroyBean(rowComp);
33055 this.eRowContainer.removeChild(rowComp.getGui());
33056 };
33057 HeaderRowContainerComp.prototype.setCtrls = function (ctrls) {
33058 var _this = this;
33059 var oldRowComps = this.headerRowComps;
33060 this.headerRowComps = {};
33061 this.rowCompsList = [];
33062 var prevGui;
33063 var appendEnsuringDomOrder = function (rowComp) {
33064 var eGui = rowComp.getGui();
33065 var notAlreadyIn = eGui.parentElement != _this.eRowContainer;
33066 if (notAlreadyIn) {
33067 _this.eRowContainer.appendChild(eGui);
33068 }
33069 if (prevGui) {
33070 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["ensureDomOrder"])(_this.eRowContainer, eGui, prevGui);
33071 }
33072 prevGui = eGui;
33073 };
33074 ctrls.forEach(function (ctrl) {
33075 var ctrlId = ctrl.getInstanceId();
33076 var existingComp = oldRowComps[ctrlId];
33077 delete oldRowComps[ctrlId];
33078 var rowComp = existingComp ? existingComp : _this.createBean(new _row_headerRowComp__WEBPACK_IMPORTED_MODULE_6__["HeaderRowComp"](ctrl));
33079 _this.headerRowComps[ctrlId] = rowComp;
33080 _this.rowCompsList.push(rowComp);
33081 appendEnsuringDomOrder(rowComp);
33082 });
33083 Object(_utils_object__WEBPACK_IMPORTED_MODULE_3__["getAllValuesInObject"])(oldRowComps).forEach(function (c) { return _this.destroyRowComp(c); });
33084 };
33085 HeaderRowContainerComp.PINNED_LEFT_TEMPLATE = "<div class=\"ag-pinned-left-header\" role=\"presentation\"/>";
33086 HeaderRowContainerComp.PINNED_RIGHT_TEMPLATE = "<div class=\"ag-pinned-right-header\" role=\"presentation\"/>";
33087 HeaderRowContainerComp.CENTER_TEMPLATE = "<div class=\"ag-header-viewport\" role=\"presentation\">\n <div class=\"ag-header-container\" ref=\"eCenterContainer\" role=\"rowgroup\"></div>\n </div>";
33088 __decorate([
33089 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_5__["RefSelector"])('eCenterContainer')
33090 ], HeaderRowContainerComp.prototype, "eCenterContainer", void 0);
33091 __decorate([
33092 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
33093 ], HeaderRowContainerComp.prototype, "init", null);
33094 __decorate([
33095 _context_context__WEBPACK_IMPORTED_MODULE_1__["PreDestroy"]
33096 ], HeaderRowContainerComp.prototype, "destroyRowComps", null);
33097 return HeaderRowContainerComp;
33098}(_widgets_component__WEBPACK_IMPORTED_MODULE_4__["Component"]));
33099
33100
33101
33102
33103
33104/***/ }),
33105/* 149 */
33106/***/ (function(module, __webpack_exports__, __webpack_require__) {
33107
33108"use strict";
33109__webpack_require__.r(__webpack_exports__);
33110/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderRowType", function() { return HeaderRowType; });
33111/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderRowComp", function() { return HeaderRowComp; });
33112/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
33113/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(44);
33114/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
33115/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(13);
33116/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(36);
33117/* harmony import */ var _cells_column_headerCellComp__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(150);
33118/* harmony import */ var _cells_columnGroup_headerGroupCellComp__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(151);
33119/* harmony import */ var _cells_floatingFilter_headerFilterCellComp__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(108);
33120/**
33121 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
33122 * @version v27.3.0
33123 * @link https://www.ag-grid.com/
33124 * @license MIT
33125 */
33126var __extends = (undefined && undefined.__extends) || (function () {
33127 var extendStatics = function (d, b) {
33128 extendStatics = Object.setPrototypeOf ||
33129 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
33130 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
33131 return extendStatics(d, b);
33132 };
33133 return function (d, b) {
33134 extendStatics(d, b);
33135 function __() { this.constructor = d; }
33136 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
33137 };
33138})();
33139var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
33140 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
33141 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33142 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
33143 return c > 3 && r && Object.defineProperty(target, key, r), r;
33144};
33145
33146
33147
33148
33149
33150
33151
33152
33153var HeaderRowType;
33154(function (HeaderRowType) {
33155 HeaderRowType["COLUMN_GROUP"] = "group";
33156 HeaderRowType["COLUMN"] = "column";
33157 HeaderRowType["FLOATING_FILTER"] = "filter";
33158})(HeaderRowType || (HeaderRowType = {}));
33159var HeaderRowComp = /** @class */ (function (_super) {
33160 __extends(HeaderRowComp, _super);
33161 function HeaderRowComp(ctrl) {
33162 var _this = _super.call(this) || this;
33163 _this.headerComps = {};
33164 var extraClass = ctrl.getType() == HeaderRowType.COLUMN_GROUP ? "ag-header-row-column-group" :
33165 ctrl.getType() == HeaderRowType.FLOATING_FILTER ? "ag-header-row-column-filter" : "ag-header-row-column";
33166 _this.setTemplate(/* html */ "<div class=\"ag-header-row " + extraClass + "\" role=\"row\"></div>");
33167 _this.ctrl = ctrl;
33168 return _this;
33169 }
33170 //noinspection JSUnusedLocalSymbols
33171 HeaderRowComp.prototype.init = function () {
33172 var _this = this;
33173 var compProxy = {
33174 setTransform: function (transform) { return _this.getGui().style.transform = transform; },
33175 setHeight: function (height) { return _this.getGui().style.height = height; },
33176 setTop: function (top) { return _this.getGui().style.top = top; },
33177 setHeaderCtrls: function (ctrls) { return _this.setHeaderCtrls(ctrls); },
33178 setWidth: function (width) { return _this.getGui().style.width = width; },
33179 setAriaRowIndex: function (rowIndex) { return Object(_utils_aria__WEBPACK_IMPORTED_MODULE_1__["setAriaRowIndex"])(_this.getGui(), rowIndex); }
33180 };
33181 this.ctrl.setComp(compProxy);
33182 };
33183 HeaderRowComp.prototype.destroyHeaderCtrls = function () {
33184 this.setHeaderCtrls([]);
33185 };
33186 HeaderRowComp.prototype.setHeaderCtrls = function (ctrls) {
33187 var _this = this;
33188 if (!this.isAlive()) {
33189 return;
33190 }
33191 var oldComps = this.headerComps;
33192 this.headerComps = {};
33193 ctrls.forEach(function (ctrl) {
33194 var id = ctrl.getInstanceId();
33195 var comp = oldComps[id];
33196 delete oldComps[id];
33197 if (comp == null) {
33198 comp = _this.createHeaderComp(ctrl);
33199 _this.getGui().appendChild(comp.getGui());
33200 }
33201 _this.headerComps[id] = comp;
33202 });
33203 Object(_utils_object__WEBPACK_IMPORTED_MODULE_3__["iterateObject"])(oldComps, function (id, comp) {
33204 _this.getGui().removeChild(comp.getGui());
33205 _this.destroyBean(comp);
33206 });
33207 var ensureDomOrder = this.gridOptionsWrapper.isEnsureDomOrder();
33208 if (ensureDomOrder) {
33209 var comps = Object(_utils_object__WEBPACK_IMPORTED_MODULE_3__["getAllValuesInObject"])(this.headerComps);
33210 // ordering the columns by left position orders them in the order they appear on the screen
33211 comps.sort(function (a, b) {
33212 var leftA = a.getCtrl().getColumnGroupChild().getLeft();
33213 var leftB = b.getCtrl().getColumnGroupChild().getLeft();
33214 return leftA - leftB;
33215 });
33216 var elementsInOrder = comps.map(function (c) { return c.getGui(); });
33217 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setDomChildOrder"])(this.getGui(), elementsInOrder);
33218 }
33219 };
33220 HeaderRowComp.prototype.createHeaderComp = function (headerCtrl) {
33221 var result;
33222 switch (this.ctrl.getType()) {
33223 case HeaderRowType.COLUMN_GROUP:
33224 result = new _cells_columnGroup_headerGroupCellComp__WEBPACK_IMPORTED_MODULE_6__["HeaderGroupCellComp"](headerCtrl);
33225 break;
33226 case HeaderRowType.FLOATING_FILTER:
33227 result = new _cells_floatingFilter_headerFilterCellComp__WEBPACK_IMPORTED_MODULE_7__["HeaderFilterCellComp"](headerCtrl);
33228 break;
33229 default:
33230 result = new _cells_column_headerCellComp__WEBPACK_IMPORTED_MODULE_5__["HeaderCellComp"](headerCtrl);
33231 break;
33232 }
33233 this.createBean(result);
33234 result.setParentComponent(this);
33235 return result;
33236 };
33237 __decorate([
33238 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
33239 ], HeaderRowComp.prototype, "init", null);
33240 __decorate([
33241 _context_context__WEBPACK_IMPORTED_MODULE_0__["PreDestroy"]
33242 ], HeaderRowComp.prototype, "destroyHeaderCtrls", null);
33243 return HeaderRowComp;
33244}(_widgets_component__WEBPACK_IMPORTED_MODULE_4__["Component"]));
33245
33246
33247
33248
33249
33250/***/ }),
33251/* 150 */
33252/***/ (function(module, __webpack_exports__, __webpack_require__) {
33253
33254"use strict";
33255__webpack_require__.r(__webpack_exports__);
33256/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderCellComp", function() { return HeaderCellComp; });
33257/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
33258/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(44);
33259/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(57);
33260/* harmony import */ var _abstractCell_abstractHeaderCellComp__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(109);
33261/**
33262 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
33263 * @version v27.3.0
33264 * @link https://www.ag-grid.com/
33265 * @license MIT
33266 */
33267var __extends = (undefined && undefined.__extends) || (function () {
33268 var extendStatics = function (d, b) {
33269 extendStatics = Object.setPrototypeOf ||
33270 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
33271 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
33272 return extendStatics(d, b);
33273 };
33274 return function (d, b) {
33275 extendStatics(d, b);
33276 function __() { this.constructor = d; }
33277 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
33278 };
33279})();
33280var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
33281 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
33282 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33283 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
33284 return c > 3 && r && Object.defineProperty(target, key, r), r;
33285};
33286
33287
33288
33289
33290var HeaderCellComp = /** @class */ (function (_super) {
33291 __extends(HeaderCellComp, _super);
33292 function HeaderCellComp(ctrl) {
33293 var _this = _super.call(this, HeaderCellComp.TEMPLATE, ctrl) || this;
33294 _this.headerCompVersion = 0;
33295 _this.column = ctrl.getColumnGroupChild();
33296 _this.pinned = ctrl.getPinned();
33297 return _this;
33298 }
33299 HeaderCellComp.prototype.postConstruct = function () {
33300 var _this = this;
33301 var eGui = this.getGui();
33302 var setAttribute = function (name, value, element) {
33303 var actualElement = element ? element : eGui;
33304 if (value != null && value != '') {
33305 actualElement.setAttribute(name, value);
33306 }
33307 else {
33308 actualElement.removeAttribute(name);
33309 }
33310 };
33311 var compProxy = {
33312 setWidth: function (width) { return eGui.style.width = width; },
33313 addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },
33314 setColId: function (id) { return setAttribute('col-id', id); },
33315 setTitle: function (title) { return setAttribute('title', title); },
33316 setAriaDescription: function (label) { return Object(_utils_aria__WEBPACK_IMPORTED_MODULE_1__["setAriaDescription"])(eGui, label); },
33317 setAriaSort: function (sort) { return sort ? Object(_utils_aria__WEBPACK_IMPORTED_MODULE_1__["setAriaSort"])(eGui, sort) : Object(_utils_aria__WEBPACK_IMPORTED_MODULE_1__["removeAriaSort"])(eGui); },
33318 setUserCompDetails: function (compDetails) { return _this.setUserCompDetails(compDetails); },
33319 getUserCompInstance: function () { return _this.headerComp; }
33320 };
33321 this.ctrl.setComp(compProxy, this.getGui(), this.eResize);
33322 var selectAllGui = this.ctrl.getSelectAllGui();
33323 this.eResize.insertAdjacentElement('afterend', selectAllGui);
33324 };
33325 HeaderCellComp.prototype.destroyHeaderComp = function () {
33326 if (this.headerComp) {
33327 this.getGui().removeChild(this.headerCompGui);
33328 this.headerComp = this.destroyBean(this.headerComp);
33329 this.headerCompGui = undefined;
33330 }
33331 };
33332 HeaderCellComp.prototype.setUserCompDetails = function (compDetails) {
33333 var _this = this;
33334 this.headerCompVersion++;
33335 var versionCopy = this.headerCompVersion;
33336 compDetails.newAgStackInstance().then(function (comp) { return _this.afterCompCreated(versionCopy, comp); });
33337 };
33338 HeaderCellComp.prototype.afterCompCreated = function (version, headerComp) {
33339 if (version != this.headerCompVersion || !this.isAlive()) {
33340 this.destroyBean(headerComp);
33341 return;
33342 }
33343 this.destroyHeaderComp();
33344 this.headerComp = headerComp;
33345 this.headerCompGui = headerComp.getGui();
33346 this.getGui().appendChild(this.headerCompGui);
33347 this.ctrl.setDragSource(this.headerCompGui);
33348 };
33349 HeaderCellComp.TEMPLATE = "<div class=\"ag-header-cell\" role=\"columnheader\" tabindex=\"-1\">\n <div ref=\"eResize\" class=\"ag-header-cell-resize\" role=\"presentation\"></div>\n </div>";
33350 __decorate([
33351 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('eResize')
33352 ], HeaderCellComp.prototype, "eResize", void 0);
33353 __decorate([
33354 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
33355 ], HeaderCellComp.prototype, "postConstruct", null);
33356 __decorate([
33357 _context_context__WEBPACK_IMPORTED_MODULE_0__["PreDestroy"]
33358 ], HeaderCellComp.prototype, "destroyHeaderComp", null);
33359 return HeaderCellComp;
33360}(_abstractCell_abstractHeaderCellComp__WEBPACK_IMPORTED_MODULE_3__["AbstractHeaderCellComp"]));
33361
33362
33363
33364
33365
33366/***/ }),
33367/* 151 */
33368/***/ (function(module, __webpack_exports__, __webpack_require__) {
33369
33370"use strict";
33371__webpack_require__.r(__webpack_exports__);
33372/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderGroupCellComp", function() { return HeaderGroupCellComp; });
33373/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
33374/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
33375/* harmony import */ var _abstractCell_abstractHeaderCellComp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(109);
33376/**
33377 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
33378 * @version v27.3.0
33379 * @link https://www.ag-grid.com/
33380 * @license MIT
33381 */
33382var __extends = (undefined && undefined.__extends) || (function () {
33383 var extendStatics = function (d, b) {
33384 extendStatics = Object.setPrototypeOf ||
33385 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
33386 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
33387 return extendStatics(d, b);
33388 };
33389 return function (d, b) {
33390 extendStatics(d, b);
33391 function __() { this.constructor = d; }
33392 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
33393 };
33394})();
33395var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
33396 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
33397 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33398 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
33399 return c > 3 && r && Object.defineProperty(target, key, r), r;
33400};
33401
33402
33403
33404var HeaderGroupCellComp = /** @class */ (function (_super) {
33405 __extends(HeaderGroupCellComp, _super);
33406 function HeaderGroupCellComp(ctrl) {
33407 return _super.call(this, HeaderGroupCellComp.TEMPLATE, ctrl) || this;
33408 }
33409 HeaderGroupCellComp.prototype.postConstruct = function () {
33410 var _this = this;
33411 var eGui = this.getGui();
33412 var setAttribute = function (key, value) {
33413 return value != undefined ? eGui.setAttribute(key, value) : eGui.removeAttribute(key);
33414 };
33415 var compProxy = {
33416 addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },
33417 addOrRemoveResizableCssClass: function (cssClassName, on) { return _this.eResize.classList.toggle(cssClassName, on); },
33418 setWidth: function (width) { return eGui.style.width = width; },
33419 setColId: function (id) { return eGui.setAttribute("col-id", id); },
33420 setAriaExpanded: function (expanded) { return setAttribute('aria-expanded', expanded); },
33421 setTitle: function (title) { return setAttribute("title", title); },
33422 setUserCompDetails: function (details) { return _this.setUserCompDetails(details); }
33423 };
33424 this.ctrl.setComp(compProxy, eGui, this.eResize);
33425 };
33426 HeaderGroupCellComp.prototype.setUserCompDetails = function (details) {
33427 var _this = this;
33428 details.newAgStackInstance().then(function (comp) { return _this.afterHeaderCompCreated(comp); });
33429 };
33430 HeaderGroupCellComp.prototype.afterHeaderCompCreated = function (headerGroupComp) {
33431 var _this = this;
33432 var destroyFunc = function () { return _this.destroyBean(headerGroupComp); };
33433 if (!this.isAlive()) {
33434 destroyFunc();
33435 return;
33436 }
33437 this.getGui().appendChild(headerGroupComp.getGui());
33438 this.addDestroyFunc(destroyFunc);
33439 this.ctrl.setDragSource(headerGroupComp.getGui());
33440 };
33441 HeaderGroupCellComp.TEMPLATE = "<div class=\"ag-header-group-cell\" role=\"columnheader\" tabindex=\"-1\">\n <div ref=\"eResize\" class=\"ag-header-cell-resize\" role=\"presentation\"></div>\n </div>";
33442 __decorate([
33443 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('userComponentFactory')
33444 ], HeaderGroupCellComp.prototype, "userComponentFactory", void 0);
33445 __decorate([
33446 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eResize')
33447 ], HeaderGroupCellComp.prototype, "eResize", void 0);
33448 __decorate([
33449 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
33450 ], HeaderGroupCellComp.prototype, "postConstruct", null);
33451 return HeaderGroupCellComp;
33452}(_abstractCell_abstractHeaderCellComp__WEBPACK_IMPORTED_MODULE_2__["AbstractHeaderCellComp"]));
33453
33454
33455
33456
33457
33458/***/ }),
33459/* 152 */
33460/***/ (function(module, __webpack_exports__, __webpack_require__) {
33461
33462"use strict";
33463__webpack_require__.r(__webpack_exports__);
33464/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderRowContainerCtrl", function() { return HeaderRowContainerCtrl; });
33465/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
33466/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
33467/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
33468/* harmony import */ var _entities_column__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10);
33469/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(24);
33470/* harmony import */ var _gridBodyComp_centerWidthFeature__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(136);
33471/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(37);
33472/* harmony import */ var _columnDrag_bodyDropTarget__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(145);
33473/* harmony import */ var _row_headerRowComp__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(149);
33474/* harmony import */ var _row_headerRowCtrl__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(153);
33475/**
33476 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
33477 * @version v27.3.0
33478 * @link https://www.ag-grid.com/
33479 * @license MIT
33480 */
33481var __extends = (undefined && undefined.__extends) || (function () {
33482 var extendStatics = function (d, b) {
33483 extendStatics = Object.setPrototypeOf ||
33484 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
33485 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
33486 return extendStatics(d, b);
33487 };
33488 return function (d, b) {
33489 extendStatics(d, b);
33490 function __() { this.constructor = d; }
33491 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
33492 };
33493})();
33494var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
33495 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
33496 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33497 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
33498 return c > 3 && r && Object.defineProperty(target, key, r), r;
33499};
33500var __read = (undefined && undefined.__read) || function (o, n) {
33501 var m = typeof Symbol === "function" && o[Symbol.iterator];
33502 if (!m) return o;
33503 var i = m.call(o), r, ar = [], e;
33504 try {
33505 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
33506 }
33507 catch (error) { e = { error: error }; }
33508 finally {
33509 try {
33510 if (r && !r.done && (m = i["return"])) m.call(i);
33511 }
33512 finally { if (e) throw e.error; }
33513 }
33514 return ar;
33515};
33516var __spread = (undefined && undefined.__spread) || function () {
33517 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
33518 return ar;
33519};
33520
33521
33522
33523
33524
33525
33526
33527
33528
33529
33530var HeaderRowContainerCtrl = /** @class */ (function (_super) {
33531 __extends(HeaderRowContainerCtrl, _super);
33532 function HeaderRowContainerCtrl(pinned) {
33533 var _this = _super.call(this) || this;
33534 _this.groupsRowCtrls = [];
33535 _this.pinned = pinned;
33536 return _this;
33537 }
33538 HeaderRowContainerCtrl.prototype.setComp = function (comp, eGui) {
33539 this.comp = comp;
33540 this.setupCenterWidth();
33541 this.setupPinnedWidth();
33542 this.setupDragAndDrop(eGui);
33543 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_GRID_COLUMNS_CHANGED, this.onGridColumnsChanged.bind(this));
33544 this.ctrlsService.registerHeaderContainer(this, this.pinned);
33545 if (this.columnModel.isReady()) {
33546 this.refresh();
33547 }
33548 };
33549 HeaderRowContainerCtrl.prototype.setupDragAndDrop = function (dropContainer) {
33550 var bodyDropTarget = new _columnDrag_bodyDropTarget__WEBPACK_IMPORTED_MODULE_7__["BodyDropTarget"](this.pinned, dropContainer);
33551 this.createManagedBean(bodyDropTarget);
33552 };
33553 HeaderRowContainerCtrl.prototype.refresh = function (keepColumns) {
33554 var _this = this;
33555 if (keepColumns === void 0) { keepColumns = false; }
33556 var sequence = new _utils__WEBPACK_IMPORTED_MODULE_6__["NumberSequence"]();
33557 var focusedHeaderPosition = this.focusService.getFocusHeaderToUseAfterRefresh();
33558 var refreshColumnGroups = function () {
33559 var groupRowCount = _this.columnModel.getHeaderRowCount() - 1;
33560 _this.groupsRowCtrls = _this.destroyBeans(_this.groupsRowCtrls);
33561 for (var i = 0; i < groupRowCount; i++) {
33562 var ctrl = _this.createBean(new _row_headerRowCtrl__WEBPACK_IMPORTED_MODULE_9__["HeaderRowCtrl"](sequence.next(), _this.pinned, _row_headerRowComp__WEBPACK_IMPORTED_MODULE_8__["HeaderRowType"].COLUMN_GROUP));
33563 _this.groupsRowCtrls.push(ctrl);
33564 }
33565 };
33566 var refreshColumns = function () {
33567 var rowIndex = sequence.next();
33568 var needNewInstance = _this.columnsRowCtrl == null || !keepColumns || _this.columnsRowCtrl.getRowIndex() !== rowIndex;
33569 if (needNewInstance) {
33570 _this.destroyBean(_this.columnsRowCtrl);
33571 _this.columnsRowCtrl = _this.createBean(new _row_headerRowCtrl__WEBPACK_IMPORTED_MODULE_9__["HeaderRowCtrl"](rowIndex, _this.pinned, _row_headerRowComp__WEBPACK_IMPORTED_MODULE_8__["HeaderRowType"].COLUMN));
33572 }
33573 };
33574 var refreshFilters = function () {
33575 var includeFloatingFilter = _this.columnModel.hasFloatingFilters();
33576 var destroyPreviousComp = function () {
33577 _this.filtersRowCtrl = _this.destroyBean(_this.filtersRowCtrl);
33578 };
33579 if (!includeFloatingFilter) {
33580 destroyPreviousComp();
33581 return;
33582 }
33583 var rowIndex = sequence.next();
33584 if (_this.filtersRowCtrl) {
33585 var rowIndexMismatch = _this.filtersRowCtrl.getRowIndex() !== rowIndex;
33586 if (!keepColumns || rowIndexMismatch) {
33587 destroyPreviousComp();
33588 }
33589 }
33590 if (!_this.filtersRowCtrl) {
33591 _this.filtersRowCtrl = _this.createBean(new _row_headerRowCtrl__WEBPACK_IMPORTED_MODULE_9__["HeaderRowCtrl"](rowIndex, _this.pinned, _row_headerRowComp__WEBPACK_IMPORTED_MODULE_8__["HeaderRowType"].FLOATING_FILTER));
33592 }
33593 };
33594 refreshColumnGroups();
33595 refreshColumns();
33596 refreshFilters();
33597 var allCtrls = this.getAllCtrls();
33598 this.comp.setCtrls(allCtrls);
33599 this.restoreFocusOnHeader(focusedHeaderPosition);
33600 };
33601 HeaderRowContainerCtrl.prototype.restoreFocusOnHeader = function (position) {
33602 if (position == null || position.column.getPinned() != this.pinned) {
33603 return;
33604 }
33605 this.focusService.focusHeaderPosition({ headerPosition: position });
33606 };
33607 HeaderRowContainerCtrl.prototype.getAllCtrls = function () {
33608 var res = __spread(this.groupsRowCtrls, [this.columnsRowCtrl]);
33609 if (this.filtersRowCtrl) {
33610 res.push(this.filtersRowCtrl);
33611 }
33612 return res;
33613 };
33614 // grid cols have changed - this also means the number of rows in the header can have
33615 // changed. so we remove all the old rows and insert new ones for a complete refresh
33616 HeaderRowContainerCtrl.prototype.onGridColumnsChanged = function () {
33617 this.refresh(true);
33618 };
33619 HeaderRowContainerCtrl.prototype.setupCenterWidth = function () {
33620 var _this = this;
33621 if (this.pinned != null) {
33622 return;
33623 }
33624 this.createManagedBean(new _gridBodyComp_centerWidthFeature__WEBPACK_IMPORTED_MODULE_5__["CenterWidthFeature"](function (width) { return _this.comp.setCenterWidth(width + "px"); }));
33625 };
33626 HeaderRowContainerCtrl.prototype.setHorizontalScroll = function (offset) {
33627 this.comp.setContainerTransform("translateX(" + offset + "px)");
33628 };
33629 HeaderRowContainerCtrl.prototype.setupPinnedWidth = function () {
33630 var _this = this;
33631 if (this.pinned == null) {
33632 return;
33633 }
33634 var pinningLeft = this.pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_LEFT;
33635 var pinningRight = this.pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_RIGHT;
33636 var listener = function () {
33637 var width = pinningLeft ? _this.pinnedWidthService.getPinnedLeftWidth() : _this.pinnedWidthService.getPinnedRightWidth();
33638 if (width == null) {
33639 return;
33640 } // can happen at initialisation, width not yet set
33641 var hidden = width == 0;
33642 var isRtl = _this.gridOptionsWrapper.isEnableRtl();
33643 var scrollbarWidth = _this.gridOptionsWrapper.getScrollbarWidth();
33644 // if there is a scroll showing (and taking up space, so Windows, and not iOS)
33645 // in the body, then we add extra space to keep header aligned with the body,
33646 // as body width fits the cols and the scrollbar
33647 var addPaddingForScrollbar = _this.scrollVisibleService.isVerticalScrollShowing() && ((isRtl && pinningLeft) || (!isRtl && pinningRight));
33648 var widthWithPadding = addPaddingForScrollbar ? width + scrollbarWidth : width;
33649 _this.comp.setPinnedContainerWidth(widthWithPadding + 'px');
33650 _this.comp.addOrRemoveCssClass('ag-hidden', hidden);
33651 };
33652 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_LEFT_PINNED_WIDTH_CHANGED, listener);
33653 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_RIGHT_PINNED_WIDTH_CHANGED, listener);
33654 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_SCROLL_VISIBILITY_CHANGED, listener);
33655 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_SCROLLBAR_WIDTH_CHANGED, listener);
33656 };
33657 HeaderRowContainerCtrl.prototype.getHeaderCtrlForColumn = function (column) {
33658 if (column instanceof _entities_column__WEBPACK_IMPORTED_MODULE_3__["Column"]) {
33659 if (!this.columnsRowCtrl) {
33660 return;
33661 }
33662 return this.columnsRowCtrl.getHeaderCellCtrl(column);
33663 }
33664 if (this.groupsRowCtrls.length === 0) {
33665 return;
33666 }
33667 for (var i = 0; i < this.groupsRowCtrls.length; i++) {
33668 var ctrl = this.groupsRowCtrls[i].getHeaderCellCtrl(column);
33669 if (ctrl) {
33670 return ctrl;
33671 }
33672 }
33673 };
33674 HeaderRowContainerCtrl.prototype.getHtmlElementForColumnHeader = function (column) {
33675 /* tslint:enable */
33676 var cellCtrl = this.getHeaderCtrlForColumn(column);
33677 if (!cellCtrl) {
33678 return null;
33679 }
33680 return cellCtrl.getGui();
33681 };
33682 HeaderRowContainerCtrl.prototype.getRowType = function (rowIndex) {
33683 var allCtrls = this.getAllCtrls();
33684 var ctrl = allCtrls[rowIndex];
33685 return ctrl ? ctrl.getType() : undefined;
33686 };
33687 HeaderRowContainerCtrl.prototype.focusHeader = function (rowIndex, column, event) {
33688 var allCtrls = this.getAllCtrls();
33689 var ctrl = allCtrls[rowIndex];
33690 if (!ctrl) {
33691 return false;
33692 }
33693 return ctrl.focusHeader(column, event);
33694 };
33695 HeaderRowContainerCtrl.prototype.getRowCount = function () {
33696 return this.getAllCtrls().length;
33697 };
33698 __decorate([
33699 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('ctrlsService')
33700 ], HeaderRowContainerCtrl.prototype, "ctrlsService", void 0);
33701 __decorate([
33702 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('scrollVisibleService')
33703 ], HeaderRowContainerCtrl.prototype, "scrollVisibleService", void 0);
33704 __decorate([
33705 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('pinnedWidthService')
33706 ], HeaderRowContainerCtrl.prototype, "pinnedWidthService", void 0);
33707 __decorate([
33708 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('columnModel')
33709 ], HeaderRowContainerCtrl.prototype, "columnModel", void 0);
33710 __decorate([
33711 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('focusService')
33712 ], HeaderRowContainerCtrl.prototype, "focusService", void 0);
33713 return HeaderRowContainerCtrl;
33714}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
33715
33716
33717
33718
33719
33720/***/ }),
33721/* 153 */
33722/***/ (function(module, __webpack_exports__, __webpack_require__) {
33723
33724"use strict";
33725__webpack_require__.r(__webpack_exports__);
33726/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderRowCtrl", function() { return HeaderRowCtrl; });
33727/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
33728/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
33729/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
33730/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(24);
33731/* harmony import */ var _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(112);
33732/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(43);
33733/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(13);
33734/* harmony import */ var _cells_floatingFilter_headerFilterCellCtrl__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(154);
33735/* harmony import */ var _cells_column_headerCellCtrl__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(160);
33736/* harmony import */ var _cells_columnGroup_headerGroupCellCtrl__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(164);
33737/* harmony import */ var _headerRowComp__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(149);
33738/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(7);
33739/**
33740 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
33741 * @version v27.3.0
33742 * @link https://www.ag-grid.com/
33743 * @license MIT
33744 */
33745var __extends = (undefined && undefined.__extends) || (function () {
33746 var extendStatics = function (d, b) {
33747 extendStatics = Object.setPrototypeOf ||
33748 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
33749 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
33750 return extendStatics(d, b);
33751 };
33752 return function (d, b) {
33753 extendStatics(d, b);
33754 function __() { this.constructor = d; }
33755 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
33756 };
33757})();
33758var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
33759 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
33760 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
33761 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
33762 return c > 3 && r && Object.defineProperty(target, key, r), r;
33763};
33764
33765
33766
33767
33768
33769
33770
33771
33772
33773
33774
33775
33776var instanceIdSequence = 0;
33777var HeaderRowCtrl = /** @class */ (function (_super) {
33778 __extends(HeaderRowCtrl, _super);
33779 function HeaderRowCtrl(rowIndex, pinned, type) {
33780 var _this = _super.call(this) || this;
33781 _this.instanceId = instanceIdSequence++;
33782 _this.headerCellCtrls = {};
33783 _this.rowIndex = rowIndex;
33784 _this.pinned = pinned;
33785 _this.type = type;
33786 return _this;
33787 }
33788 HeaderRowCtrl.prototype.getInstanceId = function () {
33789 return this.instanceId;
33790 };
33791 HeaderRowCtrl.prototype.setComp = function (comp) {
33792 this.comp = comp;
33793 this.onRowHeightChanged();
33794 this.onVirtualColumnsChanged();
33795 this.setWidth();
33796 this.addEventListeners();
33797 if (Object(_utils_browser__WEBPACK_IMPORTED_MODULE_5__["isBrowserSafari"])()) {
33798 // fix for a Safari rendering bug that caused the header to flicker above chart panels
33799 // as you move the mouse over the header
33800 this.comp.setTransform('translateZ(0)');
33801 }
33802 comp.setAriaRowIndex(this.rowIndex + 1);
33803 };
33804 HeaderRowCtrl.prototype.addEventListeners = function () {
33805 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_COLUMN_RESIZED, this.onColumnResized.bind(this));
33806 // when print layout changes, it changes what columns are in what section
33807 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__["GridOptionsWrapper"].PROP_DOM_LAYOUT, this.onDisplayedColumnsChanged.bind(this));
33808 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));
33809 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_VIRTUAL_COLUMNS_CHANGED, this.onVirtualColumnsChanged.bind(this));
33810 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__["GridOptionsWrapper"].PROP_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));
33811 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__["GridOptionsWrapper"].PROP_PIVOT_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));
33812 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__["GridOptionsWrapper"].PROP_GROUP_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));
33813 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__["GridOptionsWrapper"].PROP_PIVOT_GROUP_HEADER_HEIGHT, this.onRowHeightChanged.bind(this));
33814 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__["GridOptionsWrapper"].PROP_FLOATING_FILTERS_HEIGHT, this.onRowHeightChanged.bind(this));
33815 };
33816 HeaderRowCtrl.prototype.getHeaderCellCtrl = function (column) {
33817 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_11__["values"])(this.headerCellCtrls).find(function (cellCtrl) { return cellCtrl.getColumnGroupChild() === column; });
33818 };
33819 HeaderRowCtrl.prototype.onDisplayedColumnsChanged = function () {
33820 this.onVirtualColumnsChanged();
33821 this.setWidth();
33822 };
33823 HeaderRowCtrl.prototype.getType = function () {
33824 return this.type;
33825 };
33826 HeaderRowCtrl.prototype.onColumnResized = function () {
33827 this.setWidth();
33828 };
33829 HeaderRowCtrl.prototype.setWidth = function () {
33830 var width = this.getWidthForRow();
33831 this.comp.setWidth(width + "px");
33832 };
33833 HeaderRowCtrl.prototype.getWidthForRow = function () {
33834 var printLayout = this.gridOptionsWrapper.getDomLayout() === _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].DOM_LAYOUT_PRINT;
33835 if (printLayout) {
33836 var pinned = this.pinned != null;
33837 if (pinned) {
33838 return 0;
33839 }
33840 return this.columnModel.getContainerWidth(_constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_RIGHT)
33841 + this.columnModel.getContainerWidth(_constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_LEFT)
33842 + this.columnModel.getContainerWidth(null);
33843 }
33844 // if not printing, just return the width as normal
33845 return this.columnModel.getContainerWidth(this.pinned);
33846 };
33847 HeaderRowCtrl.prototype.onRowHeightChanged = function () {
33848 var headerRowCount = this.columnModel.getHeaderRowCount();
33849 var sizes = [];
33850 var numberOfFloating = 0;
33851 var groupHeight;
33852 var headerHeight;
33853 if (this.columnModel.hasFloatingFilters()) {
33854 headerRowCount++;
33855 numberOfFloating = 1;
33856 }
33857 if (this.columnModel.isPivotMode()) {
33858 groupHeight = this.gridOptionsWrapper.getPivotGroupHeaderHeight();
33859 headerHeight = this.gridOptionsWrapper.getPivotHeaderHeight();
33860 }
33861 else {
33862 groupHeight = this.gridOptionsWrapper.getGroupHeaderHeight();
33863 headerHeight = this.gridOptionsWrapper.getHeaderHeight();
33864 }
33865 var numberOfNonGroups = 1 + numberOfFloating;
33866 var numberOfGroups = headerRowCount - numberOfNonGroups;
33867 for (var i = 0; i < numberOfGroups; i++) {
33868 sizes.push(groupHeight);
33869 }
33870 sizes.push(headerHeight);
33871 for (var i = 0; i < numberOfFloating; i++) {
33872 sizes.push(this.gridOptionsWrapper.getFloatingFiltersHeight());
33873 }
33874 var rowHeight = 0;
33875 for (var i = 0; i < this.rowIndex; i++) {
33876 rowHeight += sizes[i];
33877 }
33878 this.comp.setTop(rowHeight + 'px');
33879 this.comp.setHeight(sizes[this.rowIndex] + 'px');
33880 };
33881 HeaderRowCtrl.prototype.getPinned = function () {
33882 return this.pinned;
33883 };
33884 HeaderRowCtrl.prototype.getRowIndex = function () {
33885 return this.rowIndex;
33886 };
33887 HeaderRowCtrl.prototype.onVirtualColumnsChanged = function () {
33888 var _this = this;
33889 var oldCtrls = this.headerCellCtrls;
33890 this.headerCellCtrls = {};
33891 var columns = this.getColumnsInViewport();
33892 columns.forEach(function (child) {
33893 // skip groups that have no displayed children. this can happen when the group is broken,
33894 // and this section happens to have nothing to display for the open / closed state.
33895 // (a broken group is one that is split, ie columns in the group have a non-group column
33896 // in between them)
33897 if (child.isEmptyGroup()) {
33898 return;
33899 }
33900 var idOfChild = child.getUniqueId();
33901 // if we already have this cell rendered, do nothing
33902 var headerCtrl = oldCtrls[idOfChild];
33903 delete oldCtrls[idOfChild];
33904 // it's possible there is a new Column with the same ID, but it's for a different Column.
33905 // this is common with pivoting, where the pivot cols change, but the id's are still pivot_0,
33906 // pivot_1 etc. so if new col but same ID, need to remove the old col here first as we are
33907 // about to replace it in the this.headerComps map.
33908 var forOldColumn = headerCtrl && headerCtrl.getColumnGroupChild() != child;
33909 if (forOldColumn) {
33910 _this.destroyBean(headerCtrl);
33911 headerCtrl = undefined;
33912 }
33913 if (headerCtrl == null) {
33914 switch (_this.type) {
33915 case _headerRowComp__WEBPACK_IMPORTED_MODULE_10__["HeaderRowType"].FLOATING_FILTER:
33916 headerCtrl = _this.createBean(new _cells_floatingFilter_headerFilterCellCtrl__WEBPACK_IMPORTED_MODULE_7__["HeaderFilterCellCtrl"](child, _this));
33917 break;
33918 case _headerRowComp__WEBPACK_IMPORTED_MODULE_10__["HeaderRowType"].COLUMN_GROUP:
33919 headerCtrl = _this.createBean(new _cells_columnGroup_headerGroupCellCtrl__WEBPACK_IMPORTED_MODULE_9__["HeaderGroupCellCtrl"](child, _this));
33920 break;
33921 default:
33922 headerCtrl = _this.createBean(new _cells_column_headerCellCtrl__WEBPACK_IMPORTED_MODULE_8__["HeaderCellCtrl"](child, _this));
33923 break;
33924 }
33925 }
33926 _this.headerCellCtrls[idOfChild] = headerCtrl;
33927 });
33928 // we want to keep columns that are focused, otherwise keyboard navigation breaks
33929 var isFocusedAndDisplayed = function (ctrl) {
33930 var isFocused = _this.focusService.isHeaderWrapperFocused(ctrl);
33931 if (!isFocused) {
33932 return false;
33933 }
33934 var isDisplayed = _this.columnModel.isDisplayed(ctrl.getColumnGroupChild());
33935 return isDisplayed;
33936 };
33937 Object(_utils_object__WEBPACK_IMPORTED_MODULE_6__["iterateObject"])(oldCtrls, function (id, oldCtrl) {
33938 var keepCtrl = isFocusedAndDisplayed(oldCtrl);
33939 if (keepCtrl) {
33940 _this.headerCellCtrls[id] = oldCtrl;
33941 }
33942 else {
33943 _this.destroyBean(oldCtrl);
33944 }
33945 });
33946 var ctrlsToDisplay = Object(_utils_object__WEBPACK_IMPORTED_MODULE_6__["getAllValuesInObject"])(this.headerCellCtrls);
33947 this.comp.setHeaderCtrls(ctrlsToDisplay);
33948 };
33949 HeaderRowCtrl.prototype.destroyCtrls = function () {
33950 var _this = this;
33951 Object(_utils_object__WEBPACK_IMPORTED_MODULE_6__["iterateObject"])(this.headerCellCtrls, function (key, ctrl) {
33952 _this.destroyBean(ctrl);
33953 });
33954 this.headerCellCtrls = {};
33955 };
33956 HeaderRowCtrl.prototype.getColumnsInViewport = function () {
33957 var printLayout = this.gridOptionsWrapper.getDomLayout() === _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].DOM_LAYOUT_PRINT;
33958 return printLayout ? this.getColumnsInViewportPrintLayout() : this.getColumnsInViewportNormalLayout();
33959 };
33960 HeaderRowCtrl.prototype.getColumnsInViewportPrintLayout = function () {
33961 var _this = this;
33962 // for print layout, we add all columns into the center
33963 if (this.pinned != null) {
33964 return [];
33965 }
33966 var viewportColumns = [];
33967 var actualDepth = this.getActualDepth();
33968 [_constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_LEFT, null, _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_RIGHT].forEach(function (pinned) {
33969 var items = _this.columnModel.getVirtualHeaderGroupRow(pinned, actualDepth);
33970 viewportColumns = viewportColumns.concat(items);
33971 });
33972 return viewportColumns;
33973 };
33974 HeaderRowCtrl.prototype.getActualDepth = function () {
33975 return this.type == _headerRowComp__WEBPACK_IMPORTED_MODULE_10__["HeaderRowType"].FLOATING_FILTER ? this.rowIndex - 1 : this.rowIndex;
33976 };
33977 HeaderRowCtrl.prototype.getColumnsInViewportNormalLayout = function () {
33978 // when in normal layout, we add the columns for that container only
33979 return this.columnModel.getVirtualHeaderGroupRow(this.pinned, this.getActualDepth());
33980 };
33981 HeaderRowCtrl.prototype.focusHeader = function (column, event) {
33982 var allCtrls = Object(_utils_object__WEBPACK_IMPORTED_MODULE_6__["getAllValuesInObject"])(this.headerCellCtrls);
33983 var ctrl = allCtrls.find(function (ctrl) { return ctrl.getColumnGroupChild() == column; });
33984 if (!ctrl) {
33985 return false;
33986 }
33987 ctrl.focus(event);
33988 return true;
33989 };
33990 __decorate([
33991 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('columnModel')
33992 ], HeaderRowCtrl.prototype, "columnModel", void 0);
33993 __decorate([
33994 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('focusService')
33995 ], HeaderRowCtrl.prototype, "focusService", void 0);
33996 __decorate([
33997 _context_context__WEBPACK_IMPORTED_MODULE_2__["PreDestroy"]
33998 ], HeaderRowCtrl.prototype, "destroyCtrls", null);
33999 return HeaderRowCtrl;
34000}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
34001
34002
34003
34004
34005
34006/***/ }),
34007/* 154 */
34008/***/ (function(module, __webpack_exports__, __webpack_require__) {
34009
34010"use strict";
34011__webpack_require__.r(__webpack_exports__);
34012/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderFilterCellCtrl", function() { return HeaderFilterCellCtrl; });
34013/* harmony import */ var _abstractCell_abstractHeaderCellCtrl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(155);
34014/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65);
34015/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
34016/* harmony import */ var _entities_column__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10);
34017/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(23);
34018/* harmony import */ var _gridApi__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(156);
34019/* harmony import */ var _rendering_features_setLeftFeature__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(158);
34020/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(42);
34021/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(48);
34022/* harmony import */ var _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(64);
34023/* harmony import */ var _hoverFeature__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(159);
34024/* harmony import */ var _components_framework_componentTypes__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(103);
34025/**
34026 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
34027 * @version v27.3.0
34028 * @link https://www.ag-grid.com/
34029 * @license MIT
34030 */
34031var __extends = (undefined && undefined.__extends) || (function () {
34032 var extendStatics = function (d, b) {
34033 extendStatics = Object.setPrototypeOf ||
34034 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
34035 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
34036 return extendStatics(d, b);
34037 };
34038 return function (d, b) {
34039 extendStatics(d, b);
34040 function __() { this.constructor = d; }
34041 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
34042 };
34043})();
34044var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
34045 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
34046 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
34047 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
34048 return c > 3 && r && Object.defineProperty(target, key, r), r;
34049};
34050
34051
34052
34053
34054
34055
34056
34057
34058
34059
34060
34061
34062var HeaderFilterCellCtrl = /** @class */ (function (_super) {
34063 __extends(HeaderFilterCellCtrl, _super);
34064 function HeaderFilterCellCtrl(column, parentRowCtrl) {
34065 var _this = _super.call(this, column, parentRowCtrl) || this;
34066 _this.column = column;
34067 return _this;
34068 }
34069 HeaderFilterCellCtrl.prototype.setComp = function (comp, eGui, eButtonShowMainFilter, eFloatingFilterBody) {
34070 _super.prototype.setGui.call(this, eGui);
34071 this.comp = comp;
34072 this.eButtonShowMainFilter = eButtonShowMainFilter;
34073 this.eFloatingFilterBody = eFloatingFilterBody;
34074 var colDef = this.column.getColDef();
34075 var filterExists = !!colDef.filter || !!colDef.filterFramework;
34076 var floatingFilterExists = !!colDef.floatingFilter;
34077 this.active = filterExists && floatingFilterExists;
34078 this.setupWidth();
34079 this.setupLeft();
34080 this.setupHover();
34081 this.setupFocus();
34082 this.setupUserComp();
34083 this.setupSyncWithFilter();
34084 this.setupUi();
34085 this.addManagedListener(this.eButtonShowMainFilter, 'click', this.showParentFilter.bind(this));
34086 };
34087 HeaderFilterCellCtrl.prototype.setupUi = function () {
34088 this.comp.addOrRemoveButtonWrapperCssClass('ag-hidden', !this.active || this.suppressFilterButton);
34089 if (!this.active) {
34090 return;
34091 }
34092 this.comp.addOrRemoveBodyCssClass('ag-floating-filter-full-body', this.suppressFilterButton);
34093 this.comp.addOrRemoveBodyCssClass('ag-floating-filter-body', !this.suppressFilterButton);
34094 var eMenuIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_8__["createIconNoSpan"])('filter', this.gridOptionsWrapper, this.column);
34095 if (eMenuIcon) {
34096 this.eButtonShowMainFilter.appendChild(eMenuIcon);
34097 }
34098 };
34099 HeaderFilterCellCtrl.prototype.setupFocus = function () {
34100 this.createManagedBean(new _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_9__["ManagedFocusFeature"](this.eGui, {
34101 shouldStopEventPropagation: this.shouldStopEventPropagation.bind(this),
34102 onTabKeyDown: this.onTabKeyDown.bind(this),
34103 handleKeyDown: this.handleKeyDown.bind(this),
34104 onFocusIn: this.onFocusIn.bind(this)
34105 }));
34106 };
34107 HeaderFilterCellCtrl.prototype.onTabKeyDown = function (e) {
34108 var eDocument = this.gridOptionsWrapper.getDocument();
34109 var activeEl = eDocument.activeElement;
34110 var wrapperHasFocus = activeEl === this.eGui;
34111 if (wrapperHasFocus) {
34112 return;
34113 }
34114 var nextFocusableEl = this.focusService.findNextFocusableElement(this.eGui, null, e.shiftKey);
34115 if (nextFocusableEl) {
34116 this.beans.headerNavigationService.scrollToColumn(this.column);
34117 e.preventDefault();
34118 nextFocusableEl.focus();
34119 return;
34120 }
34121 var nextFocusableColumn = this.findNextColumnWithFloatingFilter(e.shiftKey);
34122 if (!nextFocusableColumn) {
34123 return;
34124 }
34125 if (this.focusService.focusHeaderPosition({
34126 headerPosition: {
34127 headerRowIndex: this.getParentRowCtrl().getRowIndex(),
34128 column: nextFocusableColumn
34129 },
34130 event: e
34131 })) {
34132 e.preventDefault();
34133 }
34134 };
34135 HeaderFilterCellCtrl.prototype.findNextColumnWithFloatingFilter = function (backwards) {
34136 var columModel = this.beans.columnModel;
34137 var nextCol = this.column;
34138 do {
34139 nextCol = backwards
34140 ? columModel.getDisplayedColBefore(nextCol)
34141 : columModel.getDisplayedColAfter(nextCol);
34142 if (!nextCol) {
34143 break;
34144 }
34145 } while (!nextCol.getColDef().filter || !nextCol.getColDef().floatingFilter);
34146 return nextCol;
34147 };
34148 HeaderFilterCellCtrl.prototype.handleKeyDown = function (e) {
34149 var eDocument = this.gridOptionsWrapper.getDocument();
34150 var activeEl = eDocument.activeElement;
34151 var wrapperHasFocus = activeEl === this.eGui;
34152 switch (e.key) {
34153 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].UP:
34154 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].DOWN:
34155 if (!wrapperHasFocus) {
34156 e.preventDefault();
34157 }
34158 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].LEFT:
34159 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].RIGHT:
34160 if (wrapperHasFocus) {
34161 return;
34162 }
34163 e.stopPropagation();
34164 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].ENTER:
34165 if (wrapperHasFocus) {
34166 if (this.focusService.focusInto(this.eGui)) {
34167 e.preventDefault();
34168 }
34169 }
34170 break;
34171 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].ESCAPE:
34172 if (!wrapperHasFocus) {
34173 this.eGui.focus();
34174 }
34175 }
34176 };
34177 HeaderFilterCellCtrl.prototype.onFocusIn = function (e) {
34178 var isRelatedWithin = this.eGui.contains(e.relatedTarget);
34179 // when the focus is already within the component,
34180 // we default to the browser's behavior
34181 if (isRelatedWithin) {
34182 return;
34183 }
34184 var notFromHeaderWrapper = !!e.relatedTarget && !e.relatedTarget.classList.contains('ag-floating-filter');
34185 var fromWithinHeader = !!e.relatedTarget && Object(_utils_dom__WEBPACK_IMPORTED_MODULE_7__["isElementChildOfClass"])(e.relatedTarget, 'ag-floating-filter');
34186 if (notFromHeaderWrapper && fromWithinHeader && e.target === this.eGui) {
34187 var lastFocusEvent = this.lastFocusEvent;
34188 var fromTab = !!(lastFocusEvent && lastFocusEvent.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].TAB);
34189 if (lastFocusEvent && fromTab) {
34190 var shouldFocusLast = lastFocusEvent.shiftKey;
34191 this.focusService.focusInto(this.eGui, shouldFocusLast);
34192 }
34193 }
34194 var rowIndex = this.getRowIndex();
34195 this.beans.focusService.setFocusedHeader(rowIndex, this.column);
34196 };
34197 HeaderFilterCellCtrl.prototype.setupHover = function () {
34198 var _this = this;
34199 this.createManagedBean(new _hoverFeature__WEBPACK_IMPORTED_MODULE_10__["HoverFeature"]([this.column], this.eGui));
34200 var listener = function () {
34201 if (!_this.gridOptionsWrapper.isColumnHoverHighlight()) {
34202 return;
34203 }
34204 var hovered = _this.columnHoverService.isHovered(_this.column);
34205 _this.comp.addOrRemoveCssClass('ag-column-hover', hovered);
34206 };
34207 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_COLUMN_HOVER_CHANGED, listener);
34208 listener();
34209 };
34210 HeaderFilterCellCtrl.prototype.setupLeft = function () {
34211 var setLeftFeature = new _rendering_features_setLeftFeature__WEBPACK_IMPORTED_MODULE_6__["SetLeftFeature"](this.column, this.eGui, this.beans);
34212 this.createManagedBean(setLeftFeature);
34213 };
34214 HeaderFilterCellCtrl.prototype.setupUserComp = function () {
34215 var _this = this;
34216 if (!this.active) {
34217 return;
34218 }
34219 var colDef = this.column.getColDef();
34220 var filterParams = this.filterManager.createFilterParams(this.column, colDef);
34221 var finalFilterParams = this.userComponentFactory.mergeParamsWithApplicationProvidedParams(colDef, _components_framework_componentTypes__WEBPACK_IMPORTED_MODULE_11__["FilterComponent"], filterParams);
34222 var defaultFloatingFilterType = this.userComponentFactory.getDefaultFloatingFilterType(colDef);
34223 if (defaultFloatingFilterType == null) {
34224 defaultFloatingFilterType = 'agReadOnlyFloatingFilter';
34225 }
34226 var params = {
34227 column: this.column,
34228 filterParams: finalFilterParams,
34229 currentParentModel: function () { return _this.currentParentModel(); },
34230 parentFilterInstance: function (cb) { return _this.parentFilterInstance(cb); },
34231 showParentFilter: function () { return _this.showParentFilter(); },
34232 suppressFilterButton: false // This one might be overridden from the colDef
34233 };
34234 // this is unusual - we need a params value OUTSIDE the component the params are for.
34235 // the params are for the floating filter component, but this property is actually for the wrapper.
34236 this.suppressFilterButton = colDef.floatingFilterComponentParams ? !!colDef.floatingFilterComponentParams.suppressFilterButton : false;
34237 var compDetails = this.userComponentFactory.getFloatingFilterCompDetails(colDef, params, defaultFloatingFilterType);
34238 if (compDetails) {
34239 this.comp.setCompDetails(compDetails);
34240 }
34241 };
34242 HeaderFilterCellCtrl.prototype.currentParentModel = function () {
34243 var filterComponent = this.getFilterComponent(false);
34244 return filterComponent ? filterComponent.resolveNow(null, function (filter) { return filter && filter.getModel(); }) : null;
34245 };
34246 HeaderFilterCellCtrl.prototype.getFilterComponent = function (createIfDoesNotExist) {
34247 if (createIfDoesNotExist === void 0) { createIfDoesNotExist = true; }
34248 return this.filterManager.getFilterComponent(this.column, 'NO_UI', createIfDoesNotExist);
34249 };
34250 HeaderFilterCellCtrl.prototype.parentFilterInstance = function (callback) {
34251 var filterComponent = this.getFilterComponent();
34252 if (filterComponent == null) {
34253 return;
34254 }
34255 filterComponent.then(function (instance) {
34256 callback(Object(_gridApi__WEBPACK_IMPORTED_MODULE_5__["unwrapUserComp"])(instance));
34257 });
34258 };
34259 HeaderFilterCellCtrl.prototype.showParentFilter = function () {
34260 var eventSource = this.suppressFilterButton ? this.eFloatingFilterBody : this.eButtonShowMainFilter;
34261 this.menuFactory.showMenuAfterButtonClick(this.column, eventSource, 'floatingFilter', 'filterMenuTab', ['filterMenuTab']);
34262 };
34263 HeaderFilterCellCtrl.prototype.setupSyncWithFilter = function () {
34264 var _this = this;
34265 if (!this.active) {
34266 return;
34267 }
34268 var syncWithFilter = function (filterChangedEvent) {
34269 var compPromise = _this.comp.getFloatingFilterComp();
34270 if (!compPromise) {
34271 return;
34272 }
34273 var parentModel = _this.currentParentModel();
34274 compPromise.then(function (comp) {
34275 if (comp) {
34276 comp.onParentModelChanged(parentModel, filterChangedEvent);
34277 }
34278 });
34279 };
34280 this.addManagedListener(this.column, _entities_column__WEBPACK_IMPORTED_MODULE_3__["Column"].EVENT_FILTER_CHANGED, syncWithFilter);
34281 if (this.filterManager.isFilterActive(this.column)) {
34282 syncWithFilter(null);
34283 }
34284 };
34285 HeaderFilterCellCtrl.prototype.setupWidth = function () {
34286 var _this = this;
34287 var listener = function () {
34288 var width = _this.column.getActualWidth() + "px";
34289 _this.comp.setWidth(width);
34290 };
34291 this.addManagedListener(this.column, _entities_column__WEBPACK_IMPORTED_MODULE_3__["Column"].EVENT_WIDTH_CHANGED, listener);
34292 listener();
34293 };
34294 __decorate([
34295 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('userComponentFactory')
34296 ], HeaderFilterCellCtrl.prototype, "userComponentFactory", void 0);
34297 __decorate([
34298 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('filterManager')
34299 ], HeaderFilterCellCtrl.prototype, "filterManager", void 0);
34300 __decorate([
34301 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('columnHoverService')
34302 ], HeaderFilterCellCtrl.prototype, "columnHoverService", void 0);
34303 __decorate([
34304 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('gridApi')
34305 ], HeaderFilterCellCtrl.prototype, "gridApi", void 0);
34306 __decorate([
34307 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('menuFactory')
34308 ], HeaderFilterCellCtrl.prototype, "menuFactory", void 0);
34309 __decorate([
34310 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('beans')
34311 ], HeaderFilterCellCtrl.prototype, "beans", void 0);
34312 return HeaderFilterCellCtrl;
34313}(_abstractCell_abstractHeaderCellCtrl__WEBPACK_IMPORTED_MODULE_0__["AbstractHeaderCellCtrl"]));
34314
34315
34316
34317
34318
34319/***/ }),
34320/* 155 */
34321/***/ (function(module, __webpack_exports__, __webpack_require__) {
34322
34323"use strict";
34324__webpack_require__.r(__webpack_exports__);
34325/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AbstractHeaderCellCtrl", function() { return AbstractHeaderCellCtrl; });
34326/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
34327/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
34328/* harmony import */ var _utils_keyboard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(49);
34329/**
34330 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
34331 * @version v27.3.0
34332 * @link https://www.ag-grid.com/
34333 * @license MIT
34334 */
34335var __extends = (undefined && undefined.__extends) || (function () {
34336 var extendStatics = function (d, b) {
34337 extendStatics = Object.setPrototypeOf ||
34338 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
34339 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
34340 return extendStatics(d, b);
34341 };
34342 return function (d, b) {
34343 extendStatics(d, b);
34344 function __() { this.constructor = d; }
34345 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
34346 };
34347})();
34348var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
34349 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
34350 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
34351 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
34352 return c > 3 && r && Object.defineProperty(target, key, r), r;
34353};
34354
34355
34356
34357var instanceIdSequence = 0;
34358var AbstractHeaderCellCtrl = /** @class */ (function (_super) {
34359 __extends(AbstractHeaderCellCtrl, _super);
34360 function AbstractHeaderCellCtrl(columnGroupChild, parentRowCtrl) {
34361 var _this = _super.call(this) || this;
34362 _this.lastFocusEvent = null;
34363 _this.columnGroupChild = columnGroupChild;
34364 _this.parentRowCtrl = parentRowCtrl;
34365 // unique id to this instance, including the column ID to help with debugging in React as it's used in 'key'
34366 _this.instanceId = columnGroupChild.getUniqueId() + '-' + instanceIdSequence++;
34367 return _this;
34368 }
34369 AbstractHeaderCellCtrl.prototype.shouldStopEventPropagation = function (e) {
34370 var _a = this.focusService.getFocusedHeader(), headerRowIndex = _a.headerRowIndex, column = _a.column;
34371 return Object(_utils_keyboard__WEBPACK_IMPORTED_MODULE_2__["isUserSuppressingHeaderKeyboardEvent"])(this.gridOptionsWrapper, e, headerRowIndex, column);
34372 };
34373 AbstractHeaderCellCtrl.prototype.setGui = function (eGui) {
34374 this.eGui = eGui;
34375 this.addDomData();
34376 };
34377 AbstractHeaderCellCtrl.prototype.addDomData = function () {
34378 var _this = this;
34379 var key = AbstractHeaderCellCtrl.DOM_DATA_KEY_HEADER_CTRL;
34380 this.gridOptionsWrapper.setDomData(this.eGui, key, this);
34381 this.addDestroyFunc(function () { return _this.gridOptionsWrapper.setDomData(_this.eGui, key, null); });
34382 };
34383 AbstractHeaderCellCtrl.prototype.getGui = function () {
34384 return this.eGui;
34385 };
34386 AbstractHeaderCellCtrl.prototype.focus = function (event) {
34387 if (!this.eGui) {
34388 return false;
34389 }
34390 this.lastFocusEvent = event || null;
34391 this.eGui.focus();
34392 return true;
34393 };
34394 AbstractHeaderCellCtrl.prototype.getRowIndex = function () {
34395 return this.parentRowCtrl.getRowIndex();
34396 };
34397 AbstractHeaderCellCtrl.prototype.getParentRowCtrl = function () {
34398 return this.parentRowCtrl;
34399 };
34400 AbstractHeaderCellCtrl.prototype.getPinned = function () {
34401 return this.parentRowCtrl.getPinned();
34402 };
34403 AbstractHeaderCellCtrl.prototype.getInstanceId = function () {
34404 return this.instanceId;
34405 };
34406 AbstractHeaderCellCtrl.prototype.getColumnGroupChild = function () {
34407 return this.columnGroupChild;
34408 };
34409 AbstractHeaderCellCtrl.DOM_DATA_KEY_HEADER_CTRL = 'headerCtrl';
34410 __decorate([
34411 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('focusService')
34412 ], AbstractHeaderCellCtrl.prototype, "focusService", void 0);
34413 return AbstractHeaderCellCtrl;
34414}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
34415
34416
34417
34418
34419
34420/***/ }),
34421/* 156 */
34422/***/ (function(module, __webpack_exports__, __webpack_require__) {
34423
34424"use strict";
34425__webpack_require__.r(__webpack_exports__);
34426/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "unwrapUserComp", function() { return unwrapUserComp; });
34427/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GridApi", function() { return GridApi; });
34428/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
34429/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
34430/* harmony import */ var _entities_sideBar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(113);
34431/* harmony import */ var _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(112);
34432/* harmony import */ var _interfaces_iClientSideRowModel__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(157);
34433/* harmony import */ var _interfaces_iExcelCreator__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(105);
34434/* harmony import */ var _modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(16);
34435/* harmony import */ var _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(17);
34436/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(14);
34437/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(7);
34438/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(13);
34439/* harmony import */ var _utils_string__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(26);
34440/**
34441 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
34442 * @version v27.3.0
34443 * @link https://www.ag-grid.com/
34444 * @license MIT
34445 */
34446var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
34447 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
34448 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
34449 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
34450 return c > 3 && r && Object.defineProperty(target, key, r), r;
34451};
34452
34453
34454
34455
34456
34457
34458
34459
34460
34461
34462
34463
34464function unwrapUserComp(comp) {
34465 var compAsAny = comp;
34466 var isProxy = compAsAny != null && compAsAny.getFrameworkComponentInstance != null;
34467 return isProxy ? compAsAny.getFrameworkComponentInstance() : comp;
34468}
34469var GridApi = /** @class */ (function () {
34470 function GridApi() {
34471 this.detailGridInfoMap = {};
34472 this.destroyCalled = false;
34473 }
34474 GridApi.prototype.registerOverlayWrapperComp = function (overlayWrapperComp) {
34475 this.overlayWrapperComp = overlayWrapperComp;
34476 };
34477 GridApi.prototype.registerSideBarComp = function (sideBarComp) {
34478 this.sideBarComp = sideBarComp;
34479 };
34480 GridApi.prototype.init = function () {
34481 var _this = this;
34482 switch (this.rowModel.getType()) {
34483 case _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE:
34484 this.clientSideRowModel = this.rowModel;
34485 break;
34486 case _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].ROW_MODEL_TYPE_INFINITE:
34487 this.infiniteRowModel = this.rowModel;
34488 break;
34489 case _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].ROW_MODEL_TYPE_SERVER_SIDE:
34490 this.serverSideRowModel = this.rowModel;
34491 break;
34492 }
34493 this.ctrlsService.whenReady(function () {
34494 _this.gridBodyCtrl = _this.ctrlsService.getGridBodyCtrl();
34495 });
34496 };
34497 /** Used internally by grid. Not intended to be used by the client. Interface may change between releases. */
34498 GridApi.prototype.__getAlignedGridService = function () {
34499 return this.alignedGridsService;
34500 };
34501 /** Used internally by grid. Not intended to be used by the client. Interface may change between releases. */
34502 GridApi.prototype.__getContext = function () {
34503 return this.context;
34504 };
34505 /** Register a detail grid with the master grid when it is created. */
34506 GridApi.prototype.addDetailGridInfo = function (id, gridInfo) {
34507 this.detailGridInfoMap[id] = gridInfo;
34508 };
34509 /** Unregister a detail grid from the master grid when it is destroyed. */
34510 GridApi.prototype.removeDetailGridInfo = function (id) {
34511 this.detailGridInfoMap[id] = undefined;
34512 };
34513 /** Returns the `DetailGridInfo` corresponding to the supplied `detailGridId`. */
34514 GridApi.prototype.getDetailGridInfo = function (id) {
34515 return this.detailGridInfoMap[id];
34516 };
34517 /** Iterates through each `DetailGridInfo` in the grid and calls the supplied callback on each. */
34518 GridApi.prototype.forEachDetailGridInfo = function (callback) {
34519 var index = 0;
34520 Object(_utils_object__WEBPACK_IMPORTED_MODULE_10__["iterateObject"])(this.detailGridInfoMap, function (id, gridInfo) {
34521 // check for undefined, as old references will still be lying around
34522 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(gridInfo)) {
34523 callback(gridInfo, index);
34524 index++;
34525 }
34526 });
34527 };
34528 /** Similar to `exportDataAsCsv`, except returns the result as a string rather than download it. */
34529 GridApi.prototype.getDataAsCsv = function (params) {
34530 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].CsvExportModule, 'api.getDataAsCsv')) {
34531 return this.csvCreator.getDataAsCsv(params);
34532 }
34533 };
34534 /** Downloads a CSV export of the grid's data. */
34535 GridApi.prototype.exportDataAsCsv = function (params) {
34536 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].CsvExportModule, 'api.exportDataAsCSv')) {
34537 this.csvCreator.exportDataAsCsv(params);
34538 }
34539 };
34540 GridApi.prototype.getExcelExportMode = function (params) {
34541 var baseParams = this.gridOptionsWrapper.getDefaultExportParams('excel');
34542 var mergedParams = Object.assign({ exportMode: 'xlsx' }, baseParams, params);
34543 return mergedParams.exportMode;
34544 };
34545 /** Similar to `exportDataAsExcel`, except instead of downloading a file, it will return a [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) to be processed by the user. */
34546 GridApi.prototype.getDataAsExcel = function (params) {
34547 if (!_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].ExcelExportModule, 'api.getDataAsExcel')) {
34548 return;
34549 }
34550 var exportMode = this.getExcelExportMode(params);
34551 if (this.excelCreator.getFactoryMode(exportMode) === _interfaces_iExcelCreator__WEBPACK_IMPORTED_MODULE_5__["ExcelFactoryMode"].MULTI_SHEET) {
34552 console.warn('AG Grid: The Excel Exporter is currently on Multi Sheet mode. End that operation by calling `api.getMultipleSheetAsExcel()` or `api.exportMultipleSheetsAsExcel()`');
34553 return;
34554 }
34555 return this.excelCreator.getDataAsExcel(params);
34556 };
34557 /** Downloads an Excel export of the grid's data. */
34558 GridApi.prototype.exportDataAsExcel = function (params) {
34559 if (!_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].ExcelExportModule, 'api.exportDataAsExcel')) {
34560 return;
34561 }
34562 var exportMode = this.getExcelExportMode(params);
34563 if (this.excelCreator.getFactoryMode(exportMode) === _interfaces_iExcelCreator__WEBPACK_IMPORTED_MODULE_5__["ExcelFactoryMode"].MULTI_SHEET) {
34564 console.warn('AG Grid: The Excel Exporter is currently on Multi Sheet mode. End that operation by calling `api.getMultipleSheetAsExcel()` or `api.exportMultipleSheetsAsExcel()`');
34565 return;
34566 }
34567 this.excelCreator.exportDataAsExcel(params);
34568 };
34569 /** This is method to be used to get the grid's data as a sheet, that will later be exported either by `getMultipleSheetsAsExcel()` or `exportMultipleSheetsAsExcel()`. */
34570 GridApi.prototype.getSheetDataForExcel = function (params) {
34571 if (!_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].ExcelExportModule, 'api.getSheetDataForExcel')) {
34572 return;
34573 }
34574 var exportMode = this.getExcelExportMode(params);
34575 this.excelCreator.setFactoryMode(_interfaces_iExcelCreator__WEBPACK_IMPORTED_MODULE_5__["ExcelFactoryMode"].MULTI_SHEET, exportMode);
34576 return this.excelCreator.getSheetDataForExcel(params);
34577 };
34578 /** Similar to `exportMultipleSheetsAsExcel`, except instead of downloading a file, it will return a [Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) to be processed by the user. */
34579 GridApi.prototype.getMultipleSheetsAsExcel = function (params) {
34580 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].ExcelExportModule, 'api.getMultipleSheetsAsExcel')) {
34581 return this.excelCreator.getMultipleSheetsAsExcel(params);
34582 }
34583 };
34584 /** Downloads an Excel export of multiple sheets in one file. */
34585 GridApi.prototype.exportMultipleSheetsAsExcel = function (params) {
34586 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].ExcelExportModule, 'api.exportMultipleSheetsAsExcel')) {
34587 return this.excelCreator.exportMultipleSheetsAsExcel(params);
34588 }
34589 };
34590 /** @deprecated */
34591 GridApi.prototype.setEnterpriseDatasource = function (datasource) {
34592 console.warn("AG Grid: since version 18.x, api.setEnterpriseDatasource() should be replaced with api.setServerSideDatasource()");
34593 this.setServerSideDatasource(datasource);
34594 };
34595 /**
34596 * Sets an ARIA property in the grid panel (element with `role=\"grid\"`), and removes an ARIA property when the value is null.
34597 *
34598 * Example: `api.setGridAriaProperty('label', 'my grid')` will set `aria-label=\"my grid\"`.
34599 *
34600 * `api.setGridAriaProperty('label', null)` will remove the `aria-label` attribute from the grid element.
34601 */
34602 GridApi.prototype.setGridAriaProperty = function (property, value) {
34603 if (!property) {
34604 return;
34605 }
34606 var eGrid = this.ctrlsService.getGridBodyCtrl().getGui();
34607 var ariaProperty = "aria-" + property;
34608 if (value === null) {
34609 eGrid.removeAttribute(ariaProperty);
34610 }
34611 else {
34612 eGrid.setAttribute(ariaProperty, value);
34613 }
34614 };
34615 /** Set new datasource for Server-Side Row Model. */
34616 GridApi.prototype.setServerSideDatasource = function (datasource) {
34617 if (this.serverSideRowModel) {
34618 // should really have an IEnterpriseRowModel interface, so we are not casting to any
34619 this.serverSideRowModel.setDatasource(datasource);
34620 }
34621 else {
34622 console.warn("AG Grid: you can only use an enterprise datasource when gridOptions.rowModelType is '" + _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].ROW_MODEL_TYPE_SERVER_SIDE + "'");
34623 }
34624 };
34625 /** Set new datasource for Infinite Row Model. */
34626 GridApi.prototype.setDatasource = function (datasource) {
34627 if (this.gridOptionsWrapper.isRowModelInfinite()) {
34628 this.rowModel.setDatasource(datasource);
34629 }
34630 else {
34631 console.warn("AG Grid: you can only use a datasource when gridOptions.rowModelType is '" + _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].ROW_MODEL_TYPE_INFINITE + "'");
34632 }
34633 };
34634 /** Set new datasource for Viewport Row Model. */
34635 GridApi.prototype.setViewportDatasource = function (viewportDatasource) {
34636 if (this.gridOptionsWrapper.isRowModelViewport()) {
34637 // this is bad coding, because it's using an interface that's exposed in the enterprise.
34638 // really we should create an interface in the core for viewportDatasource and let
34639 // the enterprise implement it, rather than casting to 'any' here
34640 this.rowModel.setViewportDatasource(viewportDatasource);
34641 }
34642 else {
34643 console.warn("AG Grid: you can only use a viewport datasource when gridOptions.rowModelType is '" + _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].ROW_MODEL_TYPE_VIEWPORT + "'");
34644 }
34645 };
34646 /** Set the row data. */
34647 GridApi.prototype.setRowData = function (rowData) {
34648 // immutable service is part of the CSRM module, if missing, no CSRM
34649 var missingImmutableService = this.immutableService == null;
34650 if (missingImmutableService) {
34651 console.warn('AG Grid: you can only set rowData when using the Client Side Row Model');
34652 return;
34653 }
34654 // if no keys provided provided for rows, then we can tread the operation as Immutable
34655 if (this.immutableService.isActive()) {
34656 this.immutableService.setRowData(rowData);
34657 }
34658 else {
34659 this.selectionService.reset();
34660 this.clientSideRowModel.setRowData(rowData);
34661 }
34662 };
34663 /** @deprecated */
34664 GridApi.prototype.setFloatingTopRowData = function (rows) {
34665 console.warn('AG Grid: since v12, api.setFloatingTopRowData() is now api.setPinnedTopRowData()');
34666 this.setPinnedTopRowData(rows);
34667 };
34668 /** @deprecated */
34669 GridApi.prototype.setFloatingBottomRowData = function (rows) {
34670 console.warn('AG Grid: since v12, api.setFloatingBottomRowData() is now api.setPinnedBottomRowData()');
34671 this.setPinnedBottomRowData(rows);
34672 };
34673 /** @deprecated */
34674 GridApi.prototype.getFloatingTopRowCount = function () {
34675 console.warn('AG Grid: since v12, api.getFloatingTopRowCount() is now api.getPinnedTopRowCount()');
34676 return this.getPinnedTopRowCount();
34677 };
34678 /** @deprecated */
34679 GridApi.prototype.getFloatingBottomRowCount = function () {
34680 console.warn('AG Grid: since v12, api.getFloatingBottomRowCount() is now api.getPinnedBottomRowCount()');
34681 return this.getPinnedBottomRowCount();
34682 };
34683 /** @deprecated */
34684 GridApi.prototype.getFloatingTopRow = function (index) {
34685 console.warn('AG Grid: since v12, api.getFloatingTopRow() is now api.getPinnedTopRow()');
34686 return this.getPinnedTopRow(index);
34687 };
34688 /** @deprecated */
34689 GridApi.prototype.getFloatingBottomRow = function (index) {
34690 console.warn('AG Grid: since v12, api.getFloatingBottomRow() is now api.getPinnedBottomRow()');
34691 return this.getPinnedBottomRow(index);
34692 };
34693 /** Set the top pinned rows. Call with no rows / undefined to clear top pinned rows. */
34694 GridApi.prototype.setPinnedTopRowData = function (rows) {
34695 this.pinnedRowModel.setPinnedTopRowData(rows);
34696 };
34697 /** Set the bottom pinned rows. Call with no rows / undefined to clear bottom pinned rows. */
34698 GridApi.prototype.setPinnedBottomRowData = function (rows) {
34699 this.pinnedRowModel.setPinnedBottomRowData(rows);
34700 };
34701 /** Gets the number of top pinned rows. */
34702 GridApi.prototype.getPinnedTopRowCount = function () {
34703 return this.pinnedRowModel.getPinnedTopRowCount();
34704 };
34705 /** Gets the number of bottom pinned rows. */
34706 GridApi.prototype.getPinnedBottomRowCount = function () {
34707 return this.pinnedRowModel.getPinnedBottomRowCount();
34708 };
34709 /** Gets the top pinned row with the specified index. */
34710 GridApi.prototype.getPinnedTopRow = function (index) {
34711 return this.pinnedRowModel.getPinnedTopRow(index);
34712 };
34713 /** Gets the top pinned row with the specified index. */
34714 GridApi.prototype.getPinnedBottomRow = function (index) {
34715 return this.pinnedRowModel.getPinnedBottomRow(index);
34716 };
34717 /**
34718 * Call to set new column definitions. The grid will redraw all the column headers, and then redraw all of the rows.
34719 */
34720 GridApi.prototype.setColumnDefs = function (colDefs, source) {
34721 if (source === void 0) { source = "api"; }
34722 this.columnModel.setColumnDefs(colDefs, source);
34723 };
34724 /** Call to set new auto group column definition. The grid will recreate any auto-group columns if present. */
34725 GridApi.prototype.setAutoGroupColumnDef = function (colDef, source) {
34726 if (source === void 0) { source = "api"; }
34727 this.gridOptionsWrapper.setProperty('autoGroupColumnDef', colDef, true);
34728 };
34729 /** Call to set new Default Column Definition. */
34730 GridApi.prototype.setDefaultColDef = function (colDef, source) {
34731 if (source === void 0) { source = "api"; }
34732 this.gridOptionsWrapper.setProperty('defaultColDef', colDef, true);
34733 };
34734 GridApi.prototype.expireValueCache = function () {
34735 this.valueCache.expire();
34736 };
34737 /**
34738 * Returns an object with two properties:
34739 * - `top`: The top pixel position of the current scroll in the grid
34740 * - `bottom`: The bottom pixel position of the current scroll in the grid
34741 */
34742 GridApi.prototype.getVerticalPixelRange = function () {
34743 return this.gridBodyCtrl.getScrollFeature().getVScrollPosition();
34744 };
34745 /**
34746 * Returns an object with two properties:
34747 * - `left`: The left pixel position of the current scroll in the grid
34748 * - `right`: The right pixel position of the current scroll in the grid
34749 */
34750 GridApi.prototype.getHorizontalPixelRange = function () {
34751 return this.gridBodyCtrl.getScrollFeature().getHScrollPosition();
34752 };
34753 /** If `true`, the horizontal scrollbar will always be present, even if not required. Otherwise, it will only be displayed when necessary. */
34754 GridApi.prototype.setAlwaysShowHorizontalScroll = function (show) {
34755 this.gridOptionsWrapper.setProperty('alwaysShowHorizontalScroll', show);
34756 };
34757 /** If `true`, the vertical scrollbar will always be present, even if not required. Otherwise it will only be displayed when necessary. */
34758 GridApi.prototype.setAlwaysShowVerticalScroll = function (show) {
34759 this.gridOptionsWrapper.setProperty('alwaysShowVerticalScroll', show);
34760 };
34761 /** Force refresh all tool panels by calling their `refresh` method. */
34762 GridApi.prototype.refreshToolPanel = function () {
34763 if (!this.sideBarComp) {
34764 return;
34765 }
34766 this.sideBarComp.refresh();
34767 };
34768 /** Performs change detection on all cells, refreshing cells where required. */
34769 GridApi.prototype.refreshCells = function (params) {
34770 if (params === void 0) { params = {}; }
34771 if (Array.isArray(params)) {
34772 // the old version of refreshCells() took an array of rowNodes for the first argument
34773 console.warn('since AG Grid v11.1, refreshCells() now takes parameters, please see the documentation.');
34774 return;
34775 }
34776 this.rowRenderer.refreshCells(params);
34777 };
34778 /** Flash rows, columns or individual cells. */
34779 GridApi.prototype.flashCells = function (params) {
34780 if (params === void 0) { params = {}; }
34781 this.rowRenderer.flashCells(params);
34782 };
34783 /** Remove row(s) from the DOM and recreate them again from scratch. */
34784 GridApi.prototype.redrawRows = function (params) {
34785 if (params === void 0) { params = {}; }
34786 var rowNodes = params ? params.rowNodes : undefined;
34787 this.rowRenderer.redrawRows(rowNodes);
34788 };
34789 GridApi.prototype.setFunctionsReadOnly = function (readOnly) {
34790 this.gridOptionsWrapper.setProperty('functionsReadOnly', readOnly);
34791 };
34792 /** Redraws the header. Useful if a column name changes, or something else that changes how the column header is displayed. */
34793 GridApi.prototype.refreshHeader = function () {
34794 this.ctrlsService.getHeaderRowContainerCtrls().forEach(function (c) { return c.refresh(); });
34795 };
34796 /** Returns `true` if any filter is set. This includes quick filter, advanced filter or external filter. */
34797 GridApi.prototype.isAnyFilterPresent = function () {
34798 return this.filterManager.isAnyFilterPresent();
34799 };
34800 /** Returns `true` if any column filter is set, otherwise `false`. */
34801 GridApi.prototype.isColumnFilterPresent = function () {
34802 return this.filterManager.isColumnFilterPresent() || this.filterManager.isAggregateFilterPresent();
34803 };
34804 /** Returns `true` if the quick filter is set, otherwise `false`. */
34805 GridApi.prototype.isQuickFilterPresent = function () {
34806 return this.filterManager.isQuickFilterPresent();
34807 };
34808 /**
34809 * Returns the row model inside the table.
34810 * From here you can see the original rows, rows after filter has been applied,
34811 * rows after aggregation has been applied, and the final set of 'to be displayed' rows.
34812 */
34813 GridApi.prototype.getModel = function () {
34814 return this.rowModel;
34815 };
34816 /** Expand or collapse a specific row node. */
34817 GridApi.prototype.setRowNodeExpanded = function (rowNode, expanded) {
34818 if (rowNode) {
34819 rowNode.setExpanded(expanded);
34820 }
34821 };
34822 /**
34823 * If after getting the model, you expand or collapse a group, call this method to inform the grid.
34824 * It will work out the final set of 'to be displayed' rows again (i.e. expand or collapse the group visually).
34825 */
34826 GridApi.prototype.onGroupExpandedOrCollapsed = function (deprecated_refreshFromIndex) {
34827 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(this.clientSideRowModel)) {
34828 console.warn('AG Grid: cannot call onGroupExpandedOrCollapsed unless using normal row model');
34829 }
34830 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(deprecated_refreshFromIndex)) {
34831 console.warn('AG Grid: api.onGroupExpandedOrCollapsed - refreshFromIndex parameter is no longer used, the grid will refresh all rows');
34832 }
34833 // we don't really want the user calling this if only one rowNode was expanded, instead they should be
34834 // calling rowNode.setExpanded(boolean) - this way we do a 'keepRenderedRows=false' so that the whole
34835 // grid gets refreshed again - otherwise the row with the rowNodes that were changed won't get updated,
34836 // and thus the expand icon in the group cell won't get 'opened' or 'closed'.
34837 this.clientSideRowModel.refreshModel({ step: _interfaces_iClientSideRowModel__WEBPACK_IMPORTED_MODULE_4__["ClientSideRowModelSteps"].MAP });
34838 };
34839 GridApi.prototype.refreshInMemoryRowModel = function (step) {
34840 console.warn("ag-grid: since version 18.x, api.refreshInMemoryRowModel() should be replaced with api.refreshClientSideRowModel()");
34841 this.refreshClientSideRowModel(step);
34842 };
34843 /** Gets the Client-Side Row Model to refresh, executing the grouping, filtering and sorting again. */
34844 GridApi.prototype.refreshClientSideRowModel = function (step) {
34845 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(this.clientSideRowModel)) {
34846 console.warn('cannot call refreshClientSideRowModel unless using normal row model');
34847 }
34848 var paramsStep = _interfaces_iClientSideRowModel__WEBPACK_IMPORTED_MODULE_4__["ClientSideRowModelSteps"].EVERYTHING;
34849 var stepsMapped = {
34850 group: _interfaces_iClientSideRowModel__WEBPACK_IMPORTED_MODULE_4__["ClientSideRowModelSteps"].EVERYTHING,
34851 filter: _interfaces_iClientSideRowModel__WEBPACK_IMPORTED_MODULE_4__["ClientSideRowModelSteps"].FILTER,
34852 map: _interfaces_iClientSideRowModel__WEBPACK_IMPORTED_MODULE_4__["ClientSideRowModelSteps"].MAP,
34853 aggregate: _interfaces_iClientSideRowModel__WEBPACK_IMPORTED_MODULE_4__["ClientSideRowModelSteps"].AGGREGATE,
34854 sort: _interfaces_iClientSideRowModel__WEBPACK_IMPORTED_MODULE_4__["ClientSideRowModelSteps"].SORT,
34855 pivot: _interfaces_iClientSideRowModel__WEBPACK_IMPORTED_MODULE_4__["ClientSideRowModelSteps"].PIVOT
34856 };
34857 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(step)) {
34858 paramsStep = stepsMapped[step];
34859 }
34860 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(paramsStep)) {
34861 console.error("AG Grid: invalid step " + step + ", available steps are " + Object.keys(stepsMapped).join(', '));
34862 return;
34863 }
34864 var animate = !this.gridOptionsWrapper.isSuppressAnimationFrame();
34865 var modelParams = {
34866 step: paramsStep,
34867 keepRenderedRows: true,
34868 keepEditingRows: true,
34869 animate: animate
34870 };
34871 this.clientSideRowModel.refreshModel(modelParams);
34872 };
34873 /** Returns `true` when there are no more animation frames left to process. */
34874 GridApi.prototype.isAnimationFrameQueueEmpty = function () {
34875 return this.animationFrameService.isQueueEmpty();
34876 };
34877 GridApi.prototype.flushAllAnimationFrames = function () {
34878 this.animationFrameService.flushAllFrames();
34879 };
34880 /**
34881 * Returns the row node with the given ID.
34882 * The row node ID is the one you provide from the callback `getRowId(params)`,
34883 * otherwise the ID is a number (cast as string) auto-generated by the grid when
34884 * the row data is set.
34885 */
34886 GridApi.prototype.getRowNode = function (id) {
34887 return this.rowModel.getRowNode(id);
34888 };
34889 /**
34890 * Gets the sizes that various UI elements will be rendered at with the current theme.
34891 * If you override the row or header height using `gridOptions`, the override value you provided will be returned.
34892 */
34893 GridApi.prototype.getSizesForCurrentTheme = function () {
34894 return {
34895 rowHeight: this.gridOptionsWrapper.getRowHeightAsNumber(),
34896 headerHeight: this.gridOptionsWrapper.getHeaderHeight()
34897 };
34898 };
34899 /** Expand all groups. */
34900 GridApi.prototype.expandAll = function () {
34901 if (this.clientSideRowModel) {
34902 this.clientSideRowModel.expandOrCollapseAll(true);
34903 }
34904 else if (this.serverSideRowModel) {
34905 this.serverSideRowModel.expandAll(true);
34906 }
34907 else {
34908 console.warn('AG Grid: expandAll only works with Client Side Row Model and Server Side Row Model');
34909 }
34910 };
34911 /** Collapse all groups. */
34912 GridApi.prototype.collapseAll = function () {
34913 if (this.clientSideRowModel) {
34914 this.clientSideRowModel.expandOrCollapseAll(false);
34915 }
34916 else if (this.serverSideRowModel) {
34917 this.serverSideRowModel.expandAll(false);
34918 }
34919 else {
34920 console.warn('AG Grid: collapseAll only works with Client Side Row Model and Server Side Row Model');
34921 }
34922 };
34923 /** Gets the tool panel instance corresponding to the supplied `id`. */
34924 GridApi.prototype.getToolPanelInstance = function (id) {
34925 if (!this.sideBarComp) {
34926 console.warn('AG Grid: toolPanel is only available in AG Grid Enterprise');
34927 return;
34928 }
34929 var comp = this.sideBarComp.getToolPanelInstance(id);
34930 return unwrapUserComp(comp);
34931 };
34932 GridApi.prototype.addVirtualRowListener = function (eventName, rowIndex, callback) {
34933 if (typeof eventName !== 'string') {
34934 console.warn('AG Grid: addVirtualRowListener is deprecated, please use addRenderedRowListener.');
34935 }
34936 this.addRenderedRowListener(eventName, rowIndex, callback);
34937 };
34938 /**
34939 * Registers a callback to a virtual row.
34940 * A virtual row is a row that is visually rendered on the screen (rows that are not visible because of the scroll position are not rendered).
34941 * Unlike normal events, you do not need to unregister rendered row listeners.
34942 * When the rendered row is removed from the grid, all associated rendered row listeners will also be removed.
34943 * Currently supports only one event, `virtualRowRemoved`;
34944 * listen for this event if your `cellRenderer` needs to do cleanup when the row no longer exists.
34945 */
34946 GridApi.prototype.addRenderedRowListener = function (eventName, rowIndex, callback) {
34947 if (eventName === 'virtualRowSelected') {
34948 console.warn("AG Grid: event virtualRowSelected is deprecated, to register for individual row\n selection events, add a listener directly to the row node.");
34949 }
34950 this.rowRenderer.addRenderedRowListener(eventName, rowIndex, callback);
34951 };
34952 /** Pass a quick filter text into the grid for filtering. */
34953 GridApi.prototype.setQuickFilter = function (newFilter) {
34954 this.filterManager.setQuickFilter(newFilter);
34955 };
34956 GridApi.prototype.selectIndex = function (index, tryMulti, suppressEvents) {
34957 console.warn('AG Grid: do not use api for selection, call node.setSelected(value) instead');
34958 if (suppressEvents) {
34959 console.warn('AG Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');
34960 }
34961 this.selectionService.selectIndex(index, tryMulti);
34962 };
34963 GridApi.prototype.deselectIndex = function (index, suppressEvents) {
34964 if (suppressEvents === void 0) { suppressEvents = false; }
34965 console.warn('AG Grid: do not use api for selection, call node.setSelected(value) instead');
34966 if (suppressEvents) {
34967 console.warn('AG Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');
34968 }
34969 this.selectionService.deselectIndex(index);
34970 };
34971 GridApi.prototype.selectNode = function (node, tryMulti, suppressEvents) {
34972 if (tryMulti === void 0) { tryMulti = false; }
34973 if (suppressEvents === void 0) { suppressEvents = false; }
34974 console.warn('AG Grid: API for selection is deprecated, call node.setSelected(value) instead');
34975 if (suppressEvents) {
34976 console.warn('AG Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');
34977 }
34978 node.setSelectedParams({ newValue: true, clearSelection: !tryMulti });
34979 };
34980 GridApi.prototype.deselectNode = function (node, suppressEvents) {
34981 if (suppressEvents === void 0) { suppressEvents = false; }
34982 console.warn('AG Grid: API for selection is deprecated, call node.setSelected(value) instead');
34983 if (suppressEvents) {
34984 console.warn('AG Grid: suppressEvents is no longer supported, stop listening for the event if you no longer want it');
34985 }
34986 node.setSelectedParams({ newValue: false });
34987 };
34988 /** Select all rows, regardless of filtering and rows that are not visible due to grouping being enabled and their groups not expanded. */
34989 GridApi.prototype.selectAll = function () {
34990 this.selectionService.selectAllRowNodes();
34991 };
34992 /** Clear all row selections, regardless of filtering. */
34993 GridApi.prototype.deselectAll = function () {
34994 this.selectionService.deselectAllRowNodes();
34995 };
34996 /** Select all filtered rows. */
34997 GridApi.prototype.selectAllFiltered = function () {
34998 this.selectionService.selectAllRowNodes(true);
34999 };
35000 /** Clear all filtered selections. */
35001 GridApi.prototype.deselectAllFiltered = function () {
35002 this.selectionService.deselectAllRowNodes(true);
35003 };
35004 GridApi.prototype.recomputeAggregates = function () {
35005 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(this.clientSideRowModel)) {
35006 console.warn('cannot call recomputeAggregates unless using normal row model');
35007 }
35008 console.warn("recomputeAggregates is deprecated, please call api.refreshClientSideRowModel('aggregate') instead");
35009 this.clientSideRowModel.refreshModel({ step: _interfaces_iClientSideRowModel__WEBPACK_IMPORTED_MODULE_4__["ClientSideRowModelSteps"].AGGREGATE });
35010 };
35011 /** Sets columns to adjust in size to fit the grid horizontally. */
35012 GridApi.prototype.sizeColumnsToFit = function () {
35013 this.gridBodyCtrl.sizeColumnsToFit();
35014 };
35015 /** Show the 'loading' overlay. */
35016 GridApi.prototype.showLoadingOverlay = function () {
35017 this.overlayWrapperComp.showLoadingOverlay();
35018 };
35019 /** Show the 'no rows' overlay. */
35020 GridApi.prototype.showNoRowsOverlay = function () {
35021 this.overlayWrapperComp.showNoRowsOverlay();
35022 };
35023 /** Hides the overlay if showing. */
35024 GridApi.prototype.hideOverlay = function () {
35025 this.overlayWrapperComp.hideOverlay();
35026 };
35027 GridApi.prototype.isNodeSelected = function (node) {
35028 console.warn('AG Grid: no need to call api.isNodeSelected(), just call node.isSelected() instead');
35029 return node.isSelected();
35030 };
35031 GridApi.prototype.getSelectedNodesById = function () {
35032 console.error('AG Grid: since version 3.4, getSelectedNodesById no longer exists, use getSelectedNodes() instead');
35033 return null;
35034 };
35035 /**
35036 * Returns a list of selected nodes.
35037 * Getting the underlying node (rather than the data) is useful when working with tree / aggregated data,
35038 * as the node can be traversed.
35039 */
35040 GridApi.prototype.getSelectedNodes = function () {
35041 return this.selectionService.getSelectedNodes();
35042 };
35043 /** Returns a list of selected rows (i.e. row data that you provided). */
35044 GridApi.prototype.getSelectedRows = function () {
35045 return this.selectionService.getSelectedRows();
35046 };
35047 /**
35048 * Returns a list of all selected nodes at 'best cost', a feature to be used with groups / trees.
35049 * If a group has all its children selected, then the group appears in the result, but not the children.
35050 * Designed for use with `'children'` as the group selection type, where groups don't actually appear in the selection normally.
35051 */
35052 GridApi.prototype.getBestCostNodeSelection = function () {
35053 return this.selectionService.getBestCostNodeSelection();
35054 };
35055 /** Retrieve rendered nodes. Due to virtualisation this will contain only the current visible rows and those in the buffer. */
35056 GridApi.prototype.getRenderedNodes = function () {
35057 return this.rowRenderer.getRenderedNodes();
35058 };
35059 GridApi.prototype.ensureColIndexVisible = function (index) {
35060 console.warn('AG Grid: ensureColIndexVisible(index) no longer supported, use ensureColumnVisible(colKey) instead.');
35061 };
35062 /**
35063 * Ensures the column is visible by scrolling the table if needed.
35064 * @param key - The column to ensure visible
35065 * @param position - Where the column will be positioned.
35066 * - `auto` - Scrolls the minimum amount to make sure the column is visible.
35067 * - `start` - Scrolls the column to the start of the viewport.
35068 * - `middle` - Scrolls the column to the middle of the viewport.
35069 * - `end` - Scrolls the column to the end of the viewport.
35070 */
35071 GridApi.prototype.ensureColumnVisible = function (key, position) {
35072 if (position === void 0) { position = 'auto'; }
35073 this.gridBodyCtrl.getScrollFeature().ensureColumnVisible(key, position);
35074 };
35075 /**
35076 * Ensures the row index is visible by vertically scrolling the grid.
35077 * If a position of `'top'`, `'middle'` or `'bottom'` is supplied, the grid will scroll the grid to place the row at the top, middle or bottom respectively.
35078 * Otherwise, the grid will do the minimum scrolling possible to show the row.
35079 * i.e.
35080 * - if the grid needs to scroll up then it will scroll so that the row is at the top,
35081 * - if the grid needs to scroll down then it will scroll so that the row is at the bottom,
35082 * - if the row is already in view then the grid will do nothing.
35083 */
35084 GridApi.prototype.ensureIndexVisible = function (index, position) {
35085 this.gridBodyCtrl.getScrollFeature().ensureIndexVisible(index, position);
35086 };
35087 /**
35088 * Ensures a row node is visible, scrolling the grid if needed.
35089 * Provide either:
35090 * - the node,
35091 * - the data object
35092 * - a comparator function (that takes the node as a parameter, and returns `true` for match or `false` for no match).
35093 */
35094 GridApi.prototype.ensureNodeVisible = function (comparator, position) {
35095 if (position === void 0) { position = null; }
35096 this.gridBodyCtrl.getScrollFeature().ensureNodeVisible(comparator, position);
35097 };
35098 /**
35099 * Similar to `forEachNode`, except lists all the leaf nodes.
35100 * This effectively goes through all the data that you provided to the grid before the grid performed any grouping.
35101 * If using tree data, goes through all the nodes for the data you provided, including nodes that have children,
35102 * but excluding groups the grid created where gaps were missing in the hierarchy.
35103 */
35104 GridApi.prototype.forEachLeafNode = function (callback) {
35105 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(this.clientSideRowModel)) {
35106 console.warn('cannot call forEachNode unless using normal row model');
35107 }
35108 this.clientSideRowModel.forEachLeafNode(callback);
35109 };
35110 /**
35111 * Iterates through each node (row) in the grid and calls the callback for each node.
35112 * This works similar to the `forEach` method on a JavaScript array.
35113 * This is called for every node, ignoring any filtering or sorting applied within the grid.
35114 * If using the Infinite Row Model, then this gets called for each page loaded in the page cache.
35115 */
35116 GridApi.prototype.forEachNode = function (callback) {
35117 this.rowModel.forEachNode(callback);
35118 };
35119 /** Similar to `forEachNode`, except skips any filtered out data. */
35120 GridApi.prototype.forEachNodeAfterFilter = function (callback) {
35121 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(this.clientSideRowModel)) {
35122 console.warn('cannot call forEachNodeAfterFilter unless using normal row model');
35123 }
35124 this.clientSideRowModel.forEachNodeAfterFilter(callback);
35125 };
35126 /** Similar to `forEachNodeAfterFilter`, except the callbacks are called in the order the rows are displayed in the grid. */
35127 GridApi.prototype.forEachNodeAfterFilterAndSort = function (callback) {
35128 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(this.clientSideRowModel)) {
35129 console.warn('cannot call forEachNodeAfterFilterAndSort unless using normal row model');
35130 }
35131 this.clientSideRowModel.forEachNodeAfterFilterAndSort(callback);
35132 };
35133 /**
35134 * Returns the filter component instance for a column.
35135 * `key` can be a string field name or a ColDef object (matches on object reference, useful if field names are not unique).
35136 * If your filter is created asynchronously, `getFilterInstance` will return `null` so you will need to use the `callback` to access the filter instance instead.
35137 */
35138 GridApi.prototype.getFilterInstance = function (key, callback) {
35139 var res = this.getFilterInstanceImpl(key, function (instance) {
35140 if (!callback) {
35141 return;
35142 }
35143 var unwrapped = unwrapUserComp(instance);
35144 callback(unwrapped);
35145 });
35146 var unwrapped = unwrapUserComp(res);
35147 return unwrapped;
35148 };
35149 GridApi.prototype.getFilterInstanceImpl = function (key, callback) {
35150 var column = this.columnModel.getPrimaryColumn(key);
35151 if (!column) {
35152 return undefined;
35153 }
35154 var filterPromise = this.filterManager.getFilterComponent(column, 'NO_UI');
35155 var currentValue = filterPromise && filterPromise.resolveNow(null, function (filterComp) { return filterComp; });
35156 if (currentValue) {
35157 setTimeout(callback, 0, currentValue);
35158 }
35159 else if (filterPromise) {
35160 filterPromise.then(function (comp) {
35161 callback(comp);
35162 });
35163 }
35164 return currentValue;
35165 };
35166 /** Destroys a filter. Useful to force a particular filter to be created from scratch again. */
35167 GridApi.prototype.destroyFilter = function (key) {
35168 var column = this.columnModel.getPrimaryColumn(key);
35169 if (column) {
35170 return this.filterManager.destroyFilter(column, "filterDestroyed");
35171 }
35172 };
35173 /** Gets the status panel instance corresponding to the supplied `id`. */
35174 GridApi.prototype.getStatusPanel = function (key) {
35175 if (!this.statusBarService) {
35176 return;
35177 }
35178 var comp = this.statusBarService.getStatusPanel(key);
35179 return unwrapUserComp(comp);
35180 };
35181 GridApi.prototype.getColumnDef = function (key) {
35182 var column = this.columnModel.getPrimaryColumn(key);
35183 if (column) {
35184 return column.getColDef();
35185 }
35186 return null;
35187 };
35188 /**
35189 * Returns the current column definitions.
35190 */
35191 GridApi.prototype.getColumnDefs = function () { return this.columnModel.getColumnDefs(); };
35192 /** Informs the grid that a filter has changed. This is typically called after a filter change through one of the filter APIs. */
35193 GridApi.prototype.onFilterChanged = function () {
35194 this.filterManager.onFilterChanged();
35195 };
35196 /**
35197 * Gets the grid to act as if the sort was changed.
35198 * Useful if you update some values and want to get the grid to reorder them according to the new values.
35199 */
35200 GridApi.prototype.onSortChanged = function () {
35201 this.sortController.onSortChanged('api');
35202 };
35203 /** Sets the state of all the advanced filters. Provide it with what you get from `getFilterModel()` to restore filter state. */
35204 GridApi.prototype.setFilterModel = function (model) {
35205 this.filterManager.setFilterModel(model);
35206 };
35207 /** Gets the current state of all the advanced filters. Used for saving filter state. */
35208 GridApi.prototype.getFilterModel = function () {
35209 return this.filterManager.getFilterModel();
35210 };
35211 /** Returns the focused cell (or the last focused cell if the grid lost focus). */
35212 GridApi.prototype.getFocusedCell = function () {
35213 return this.focusService.getFocusedCell();
35214 };
35215 /** Clears the focused cell. */
35216 GridApi.prototype.clearFocusedCell = function () {
35217 return this.focusService.clearFocusedCell();
35218 };
35219 /** Sets the focus to the specified cell. `rowPinned` can be either 'top', 'bottom' or null (for not pinned). */
35220 GridApi.prototype.setFocusedCell = function (rowIndex, colKey, rowPinned) {
35221 this.focusService.setFocusedCell(rowIndex, colKey, rowPinned, true);
35222 };
35223 /** Sets the `suppressRowDrag` property. */
35224 GridApi.prototype.setSuppressRowDrag = function (value) {
35225 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_SUPPRESS_ROW_DRAG, value);
35226 };
35227 /** Sets the `suppressMoveWhenRowDragging` property. */
35228 GridApi.prototype.setSuppressMoveWhenRowDragging = function (value) {
35229 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_SUPPRESS_MOVE_WHEN_ROW_DRAG, value);
35230 };
35231 /** Sets the `suppressRowClickSelection` property. */
35232 GridApi.prototype.setSuppressRowClickSelection = function (value) {
35233 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_SUPPRESS_ROW_CLICK_SELECTION, value);
35234 };
35235 /** Adds a drop zone outside of the grid where rows can be dropped. */
35236 GridApi.prototype.addRowDropZone = function (params) {
35237 this.gridBodyCtrl.getRowDragFeature().addRowDropZone(params);
35238 };
35239 /** Removes an external drop zone added by `addRowDropZone`. */
35240 GridApi.prototype.removeRowDropZone = function (params) {
35241 var activeDropTarget = this.dragAndDropService.findExternalZone(params);
35242 if (activeDropTarget) {
35243 this.dragAndDropService.removeDropTarget(activeDropTarget);
35244 }
35245 };
35246 /** Returns the `RowDropZoneParams` to be used by another grid's `addRowDropZone` method. */
35247 GridApi.prototype.getRowDropZoneParams = function (events) {
35248 return this.gridBodyCtrl.getRowDragFeature().getRowDropZone(events);
35249 };
35250 /** Sets the height in pixels for the row containing the column label header. */
35251 GridApi.prototype.setHeaderHeight = function (headerHeight) {
35252 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_HEADER_HEIGHT, headerHeight);
35253 };
35254 /**
35255 * Switch between layout options: `normal`, `autoHeight`, `print`.
35256 * Defaults to `normal` if no domLayout provided.
35257 */
35258 GridApi.prototype.setDomLayout = function (domLayout) {
35259 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_DOM_LAYOUT, domLayout);
35260 };
35261 /** Sets the `enableCellTextSelection` property. */
35262 GridApi.prototype.setEnableCellTextSelection = function (selectable) {
35263 this.gridBodyCtrl.setCellTextSelection(selectable);
35264 };
35265 /** Sets the preferred direction for the selection fill handle. */
35266 GridApi.prototype.setFillHandleDirection = function (direction) {
35267 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_FILL_HANDLE_DIRECTION, direction);
35268 };
35269 /** Sets the height in pixels for the rows containing header column groups. */
35270 GridApi.prototype.setGroupHeaderHeight = function (headerHeight) {
35271 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GROUP_HEADER_HEIGHT, headerHeight);
35272 };
35273 /** Sets the height in pixels for the row containing the floating filters. */
35274 GridApi.prototype.setFloatingFiltersHeight = function (headerHeight) {
35275 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_FLOATING_FILTERS_HEIGHT, headerHeight);
35276 };
35277 /** Sets the height in pixels for the row containing the columns when in pivot mode. */
35278 GridApi.prototype.setPivotHeaderHeight = function (headerHeight) {
35279 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_PIVOT_HEADER_HEIGHT, headerHeight);
35280 };
35281 /** Sets the height in pixels for the row containing header column groups when in pivot mode. */
35282 GridApi.prototype.setPivotGroupHeaderHeight = function (headerHeight) {
35283 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_PIVOT_GROUP_HEADER_HEIGHT, headerHeight);
35284 };
35285 GridApi.prototype.setIsExternalFilterPresent = function (isExternalFilterPresentFunc) {
35286 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_IS_EXTERNAL_FILTER_PRESENT, isExternalFilterPresentFunc);
35287 };
35288 GridApi.prototype.setDoesExternalFilterPass = function (doesExternalFilterPassFunc) {
35289 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_DOES_EXTERNAL_FILTER_PASS, doesExternalFilterPassFunc);
35290 };
35291 GridApi.prototype.setNavigateToNextCell = function (navigateToNextCellFunc) {
35292 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_NAVIGATE_TO_NEXT_CELL, navigateToNextCellFunc);
35293 };
35294 GridApi.prototype.setTabToNextCell = function (tabToNextCellFunc) {
35295 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_TAB_TO_NEXT_CELL, tabToNextCellFunc);
35296 };
35297 GridApi.prototype.setTabToNextHeader = function (tabToNextHeaderFunc) {
35298 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_TAB_TO_NEXT_HEADER, tabToNextHeaderFunc);
35299 };
35300 GridApi.prototype.setNavigateToNextHeader = function (navigateToNextHeaderFunc) {
35301 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_NAVIGATE_TO_NEXT_HEADER, navigateToNextHeaderFunc);
35302 };
35303 GridApi.prototype.setGroupRowAggNodes = function (groupRowAggNodesFunc) {
35304 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GROUP_ROW_AGG_NODES, groupRowAggNodesFunc);
35305 };
35306 GridApi.prototype.setGetGroupRowAgg = function (getGroupRowAggFunc) {
35307 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_GROUP_ROW_AGG, getGroupRowAggFunc);
35308 };
35309 GridApi.prototype.setGetBusinessKeyForNode = function (getBusinessKeyForNodeFunc) {
35310 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_BUSINESS_KEY_FOR_NODE, getBusinessKeyForNodeFunc);
35311 };
35312 GridApi.prototype.setGetChildCount = function (getChildCountFunc) {
35313 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_CHILD_COUNT, getChildCountFunc);
35314 };
35315 GridApi.prototype.setProcessRowPostCreate = function (processRowPostCreateFunc) {
35316 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_PROCESS_ROW_POST_CREATE, processRowPostCreateFunc);
35317 };
35318 GridApi.prototype.setGetRowNodeId = function (getRowNodeIdFunc) {
35319 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_ROW_NODE_ID, getRowNodeIdFunc);
35320 };
35321 GridApi.prototype.setGetRowId = function (getRowIdFunc) {
35322 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_ROW_ID, getRowIdFunc);
35323 };
35324 GridApi.prototype.setGetRowClass = function (rowClassFunc) {
35325 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_ROW_CLASS, rowClassFunc);
35326 };
35327 GridApi.prototype.setIsFullWidthCell = function (isFullWidthCellFunc) {
35328 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_IS_FULL_WIDTH_CELL, isFullWidthCellFunc);
35329 };
35330 GridApi.prototype.setIsFullWidthRow = function (isFullWidthRowFunc) {
35331 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_IS_FULL_WIDTH_ROW, isFullWidthRowFunc);
35332 };
35333 GridApi.prototype.setIsRowSelectable = function (isRowSelectableFunc) {
35334 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_IS_ROW_SELECTABLE, isRowSelectableFunc);
35335 };
35336 GridApi.prototype.setIsRowMaster = function (isRowMasterFunc) {
35337 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_IS_ROW_MASTER, isRowMasterFunc);
35338 };
35339 GridApi.prototype.setPostSort = function (postSortFunc) {
35340 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_POST_SORT, postSortFunc);
35341 };
35342 GridApi.prototype.setPostSortRows = function (postSortRowsFunc) {
35343 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_POST_SORT_ROWS, postSortRowsFunc);
35344 };
35345 GridApi.prototype.setGetDocument = function (getDocumentFunc) {
35346 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_DOCUMENT, getDocumentFunc);
35347 };
35348 GridApi.prototype.setGetContextMenuItems = function (getContextMenuItemsFunc) {
35349 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_CONTEXT_MENU_ITEMS, getContextMenuItemsFunc);
35350 };
35351 GridApi.prototype.setGetMainMenuItems = function (getMainMenuItemsFunc) {
35352 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_MAIN_MENU_ITEMS, getMainMenuItemsFunc);
35353 };
35354 GridApi.prototype.setProcessCellForClipboard = function (processCellForClipboardFunc) {
35355 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_PROCESS_CELL_FOR_CLIPBOARD, processCellForClipboardFunc);
35356 };
35357 GridApi.prototype.setSendToClipboard = function (sendToClipboardFunc) {
35358 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_SEND_TO_CLIPBOARD, sendToClipboardFunc);
35359 };
35360 GridApi.prototype.setProcessCellFromClipboard = function (processCellFromClipboardFunc) {
35361 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_PROCESS_CELL_FROM_CLIPBOARD, processCellFromClipboardFunc);
35362 };
35363 GridApi.prototype.setProcessSecondaryColDef = function (processSecondaryColDefFunc) {
35364 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_PROCESS_TO_SECONDARY_COLDEF, processSecondaryColDefFunc);
35365 };
35366 GridApi.prototype.setProcessSecondaryColGroupDef = function (processSecondaryColGroupDefFunc) {
35367 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_PROCESS_SECONDARY_COL_GROUP_DEF, processSecondaryColGroupDefFunc);
35368 };
35369 GridApi.prototype.setPostProcessPopup = function (postProcessPopupFunc) {
35370 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_POST_PROCESS_POPUP, postProcessPopupFunc);
35371 };
35372 GridApi.prototype.setDefaultGroupOrderComparator = function (defaultGroupOrderComparatorFunc) {
35373 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_DEFAULT_GROUP_ORDER_COMPARATOR, defaultGroupOrderComparatorFunc);
35374 };
35375 GridApi.prototype.setInitialGroupOrderComparator = function (initialGroupOrderComparatorFunc) {
35376 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_INITIAL_GROUP_ORDER_COMPARATOR, initialGroupOrderComparatorFunc);
35377 };
35378 GridApi.prototype.setGetChartToolbarItems = function (getChartToolbarItemsFunc) {
35379 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_CHART_TOOLBAR_ITEMS, getChartToolbarItemsFunc);
35380 };
35381 GridApi.prototype.setPaginationNumberFormatter = function (paginationNumberFormatterFunc) {
35382 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_PAGINATION_NUMBER_FORMATTER, paginationNumberFormatterFunc);
35383 };
35384 GridApi.prototype.setGetServerSideStoreParams = function (getServerSideStoreParamsFunc) {
35385 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_SERVER_SIDE_STORE_PARAMS, getServerSideStoreParamsFunc);
35386 };
35387 GridApi.prototype.setIsServerSideGroupOpenByDefault = function (isServerSideGroupOpenByDefaultFunc) {
35388 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_IS_SERVER_SIDE_GROUPS_OPEN_BY_DEFAULT, isServerSideGroupOpenByDefaultFunc);
35389 };
35390 GridApi.prototype.setIsApplyServerSideTransaction = function (isApplyServerSideTransactionFunc) {
35391 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_IS_APPLY_SERVER_SIDE_TRANSACTION, isApplyServerSideTransactionFunc);
35392 };
35393 GridApi.prototype.setIsServerSideGroup = function (isServerSideGroupFunc) {
35394 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_IS_SERVER_SIDE_GROUP, isServerSideGroupFunc);
35395 };
35396 GridApi.prototype.setGetServerSideGroupKey = function (getServerSideGroupKeyFunc) {
35397 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_SERVER_SIDE_GROUP_KEY, getServerSideGroupKeyFunc);
35398 };
35399 GridApi.prototype.setGetRowStyle = function (rowStyleFunc) {
35400 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_ROW_STYLE, rowStyleFunc);
35401 };
35402 GridApi.prototype.setGetRowHeight = function (rowHeightFunc) {
35403 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GET_ROW_HEIGHT, rowHeightFunc);
35404 };
35405 /** Returns `true` if the side bar is visible. */
35406 GridApi.prototype.isSideBarVisible = function () {
35407 return this.sideBarComp ? this.sideBarComp.isDisplayed() : false;
35408 };
35409 /** Show/hide the entire side bar, including any visible panel and the tab buttons. */
35410 GridApi.prototype.setSideBarVisible = function (show) {
35411 if (!this.sideBarComp) {
35412 if (show) {
35413 console.warn('AG Grid: sideBar is not loaded');
35414 }
35415 return;
35416 }
35417 this.sideBarComp.setDisplayed(show);
35418 };
35419 /** Sets the side bar position relative to the grid. Possible values are `'left'` or `'right'`. */
35420 GridApi.prototype.setSideBarPosition = function (position) {
35421 if (!this.sideBarComp) {
35422 console.warn('AG Grid: sideBar is not loaded');
35423 return;
35424 }
35425 this.sideBarComp.setSideBarPosition(position);
35426 };
35427 /** Opens a particular tool panel. Provide the ID of the tool panel to open. */
35428 GridApi.prototype.openToolPanel = function (key) {
35429 if (!this.sideBarComp) {
35430 console.warn('AG Grid: toolPanel is only available in AG Grid Enterprise');
35431 return;
35432 }
35433 this.sideBarComp.openToolPanel(key);
35434 };
35435 /** Closes the currently open tool panel (if any). */
35436 GridApi.prototype.closeToolPanel = function () {
35437 if (!this.sideBarComp) {
35438 console.warn('AG Grid: toolPanel is only available in AG Grid Enterprise');
35439 return;
35440 }
35441 this.sideBarComp.close();
35442 };
35443 /** Returns the ID of the currently shown tool panel if any, otherwise `null`. */
35444 GridApi.prototype.getOpenedToolPanel = function () {
35445 return this.sideBarComp ? this.sideBarComp.openedItem() : null;
35446 };
35447 /** Returns the current side bar configuration. If a shortcut was used, returns the detailed long form. */
35448 GridApi.prototype.getSideBar = function () {
35449 return this.gridOptionsWrapper.getSideBar();
35450 };
35451 /** Resets the side bar to the provided configuration. The parameter is the same as the sideBar grid property. The side bar is re-created from scratch with the new config. */
35452 GridApi.prototype.setSideBar = function (def) {
35453 this.gridOptionsWrapper.setProperty('sideBar', _entities_sideBar__WEBPACK_IMPORTED_MODULE_2__["SideBarDefParser"].parse(def));
35454 };
35455 GridApi.prototype.setSuppressClipboardPaste = function (value) {
35456 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_SUPPRESS_CLIPBOARD_PASTE, value);
35457 };
35458 /** Returns `true` if the tool panel is showing, otherwise `false`. */
35459 GridApi.prototype.isToolPanelShowing = function () {
35460 return this.sideBarComp.isToolPanelShowing();
35461 };
35462 GridApi.prototype.doLayout = function () {
35463 var message = "AG Grid - since version 25.1, doLayout was taken out, as it's not needed. The grid responds to grid size changes automatically";
35464 Object(_utils_function__WEBPACK_IMPORTED_MODULE_8__["doOnce"])(function () { return console.warn(message); }, 'doLayoutDeprecated');
35465 };
35466 /** Tells the grid to recalculate the row heights. */
35467 GridApi.prototype.resetRowHeights = function () {
35468 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["exists"])(this.clientSideRowModel)) {
35469 if (this.columnModel.isAutoRowHeightActive()) {
35470 console.warn('AG Grid: calling gridApi.resetRowHeights() makes no sense when using Auto Row Height.');
35471 return;
35472 }
35473 this.clientSideRowModel.resetRowHeights();
35474 }
35475 };
35476 GridApi.prototype.setGroupRemoveSingleChildren = function (value) {
35477 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GROUP_REMOVE_SINGLE_CHILDREN, value);
35478 };
35479 GridApi.prototype.setGroupRemoveLowestSingleChildren = function (value) {
35480 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN, value);
35481 };
35482 /** Tells the grid a row height has changed. To be used after calling `rowNode.setRowHeight(newHeight)`. */
35483 GridApi.prototype.onRowHeightChanged = function () {
35484 if (this.clientSideRowModel) {
35485 this.clientSideRowModel.onRowHeightChanged();
35486 }
35487 else if (this.serverSideRowModel) {
35488 this.serverSideRowModel.onRowHeightChanged();
35489 }
35490 };
35491 /**
35492 * Gets the value for a column for a particular `rowNode` (row).
35493 * This is useful if you want the raw value of a cell e.g. if implementing your own CSV export.
35494 */
35495 GridApi.prototype.getValue = function (colKey, rowNode) {
35496 var column = this.columnModel.getPrimaryColumn(colKey);
35497 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(column)) {
35498 column = this.columnModel.getGridColumn(colKey);
35499 }
35500 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_9__["missing"])(column)) {
35501 return null;
35502 }
35503 return this.valueService.getValue(column, rowNode);
35504 };
35505 /** Add an event listener for the specified `eventType`. Works similar to `addEventListener` for a browser DOM element. */
35506 GridApi.prototype.addEventListener = function (eventType, listener) {
35507 var async = this.gridOptionsWrapper.useAsyncEvents();
35508 this.eventService.addEventListener(eventType, listener, async);
35509 };
35510 /** Add an event listener for all event types coming from the grid. */
35511 GridApi.prototype.addGlobalListener = function (listener) {
35512 var async = this.gridOptionsWrapper.useAsyncEvents();
35513 this.eventService.addGlobalListener(listener, async);
35514 };
35515 /** Remove an event listener. */
35516 GridApi.prototype.removeEventListener = function (eventType, listener) {
35517 var async = this.gridOptionsWrapper.useAsyncEvents();
35518 this.eventService.removeEventListener(eventType, listener, async);
35519 };
35520 /** Remove a global event listener. */
35521 GridApi.prototype.removeGlobalListener = function (listener) {
35522 var async = this.gridOptionsWrapper.useAsyncEvents();
35523 this.eventService.removeGlobalListener(listener, async);
35524 };
35525 GridApi.prototype.dispatchEvent = function (event) {
35526 this.eventService.dispatchEvent(event);
35527 };
35528 /** Will destroy the grid and release resources. If you are using a framework you do not need to call this, as the grid links in with the framework lifecycle. However if you are using Web Components or native JavaScript, you do need to call this, to avoid a memory leak in your application. */
35529 GridApi.prototype.destroy = function () {
35530 // this is needed as GridAPI is a bean, and GridAPI.destroy() is called as part
35531 // of context.destroy(). so we need to stop the infinite loop.
35532 if (this.destroyCalled) {
35533 return;
35534 }
35535 this.destroyCalled = true;
35536 // destroy the UI first (as they use the services)
35537 var gridCtrl = this.ctrlsService.getGridCtrl();
35538 if (gridCtrl) {
35539 gridCtrl.destroyGridUi();
35540 }
35541 // destroy the services
35542 this.context.destroy();
35543 };
35544 GridApi.prototype.cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid = function () {
35545 // some users were raising support issues with regards memory leaks. the problem was the customers applications
35546 // were keeping references to the API. trying to educate them all would be difficult, easier to just remove
35547 // all references in the API so at least the core grid can be garbage collected.
35548 //
35549 // wait about 100ms before clearing down the references, in case user has some cleanup to do,
35550 // and needs to deference the API first
35551 setTimeout(_utils_object__WEBPACK_IMPORTED_MODULE_10__["removeAllReferences"].bind(window, this, 'Grid API'), 100);
35552 };
35553 GridApi.prototype.warnIfDestroyed = function (methodName) {
35554 if (this.destroyCalled) {
35555 console.warn("AG Grid: Grid API method " + methodName + " was called on a grid that was destroyed.");
35556 }
35557 return this.destroyCalled;
35558 };
35559 /** Reset the quick filter cache text on every rowNode. */
35560 GridApi.prototype.resetQuickFilter = function () {
35561 if (this.warnIfDestroyed('resetQuickFilter')) {
35562 return;
35563 }
35564 this.rowModel.forEachNode(function (node) { return node.quickFilterAggregateText = null; });
35565 };
35566 GridApi.prototype.getRangeSelections = function () {
35567 console.warn("AG Grid: in v20.1.x, api.getRangeSelections() is gone, please use getCellRanges() instead.\n We had to change how cell selections works a small bit to allow charting to integrate. The return type of\n getCellRanges() is a bit different, please check the AG Grid documentation.");
35568 return null;
35569 };
35570 /** Returns the list of selected cell ranges. */
35571 GridApi.prototype.getCellRanges = function () {
35572 if (this.rangeService) {
35573 return this.rangeService.getCellRanges();
35574 }
35575 console.warn('AG Grid: cell range selection is only available in AG Grid Enterprise');
35576 return null;
35577 };
35578 GridApi.prototype.camelCaseToHumanReadable = function (camelCase) {
35579 return Object(_utils_string__WEBPACK_IMPORTED_MODULE_11__["camelCaseToHumanText"])(camelCase);
35580 };
35581 GridApi.prototype.addRangeSelection = function (deprecatedNoLongerUsed) {
35582 console.warn('AG Grid: As of version 21.x, range selection changed slightly to allow charting integration. Please call api.addCellRange() instead of api.addRangeSelection()');
35583 };
35584 /** Adds the provided cell range to the selected ranges. */
35585 GridApi.prototype.addCellRange = function (params) {
35586 if (!this.rangeService) {
35587 console.warn('AG Grid: cell range selection is only available in AG Grid Enterprise');
35588 }
35589 this.rangeService.addCellRange(params);
35590 };
35591 /** Clears the selected ranges. */
35592 GridApi.prototype.clearRangeSelection = function () {
35593 if (!this.rangeService) {
35594 console.warn('AG Grid: cell range selection is only available in AG Grid Enterprise');
35595 }
35596 this.rangeService.removeAllCellRanges();
35597 };
35598 /** Reverts the last cell edit. */
35599 GridApi.prototype.undoCellEditing = function () {
35600 this.undoRedoService.undo();
35601 };
35602 /** Re-applies the most recently undone cell edit. */
35603 GridApi.prototype.redoCellEditing = function () {
35604 this.undoRedoService.redo();
35605 };
35606 /** Returns current number of available cell edit undo operations. */
35607 GridApi.prototype.getCurrentUndoSize = function () {
35608 return this.undoRedoService.getCurrentUndoStackSize();
35609 };
35610 /** Returns current number of available cell edit redo operations. */
35611 GridApi.prototype.getCurrentRedoSize = function () {
35612 return this.undoRedoService.getCurrentRedoStackSize();
35613 };
35614 /** Returns a list of models with information about the charts that are currently rendered from the grid. */
35615 GridApi.prototype.getChartModels = function () {
35616 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].RangeSelectionModule, 'api.getChartModels') &&
35617 _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].GridChartsModule, 'api.getChartModels')) {
35618 return this.chartService.getChartModels();
35619 }
35620 };
35621 /** Returns the `ChartRef` using the supplied `chartId`. */
35622 GridApi.prototype.getChartRef = function (chartId) {
35623 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].RangeSelectionModule, 'api.getChartRef') &&
35624 _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].GridChartsModule, 'api.getChartRef')) {
35625 return this.chartService.getChartRef(chartId);
35626 }
35627 };
35628 /** Returns a string containing the requested data URL which contains a representation of the chart image. */
35629 GridApi.prototype.getChartImageDataURL = function (params) {
35630 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].RangeSelectionModule, 'api.getChartImageDataURL') &&
35631 _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].GridChartsModule, 'api.getChartImageDataURL')) {
35632 return this.chartService.getChartImageDataURL(params);
35633 }
35634 };
35635 /** Used to programmatically create charts from a range. */
35636 GridApi.prototype.createRangeChart = function (params) {
35637 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].RangeSelectionModule, 'api.createRangeChart') &&
35638 _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].GridChartsModule, 'api.createRangeChart')) {
35639 return this.chartService.createRangeChart(params);
35640 }
35641 };
35642 /** Used to programmatically create cross filter charts from a range. */
35643 GridApi.prototype.createCrossFilterChart = function (params) {
35644 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].RangeSelectionModule, 'api.createCrossFilterChart') &&
35645 _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].GridChartsModule, 'api.createCrossFilterChart')) {
35646 return this.chartService.createCrossFilterChart(params);
35647 }
35648 };
35649 /** Restores a chart using the `ChartModel` that was previously obtained from `getChartModels()`. */
35650 GridApi.prototype.restoreChart = function (chartModel, chartContainer) {
35651 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].RangeSelectionModule, 'api.restoreChart') &&
35652 _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].GridChartsModule, 'api.restoreChart')) {
35653 return this.chartService.restoreChart(chartModel, chartContainer);
35654 }
35655 };
35656 /** Used to programmatically create pivot charts from a grid. */
35657 GridApi.prototype.createPivotChart = function (params) {
35658 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].RangeSelectionModule, 'api.createPivotChart') &&
35659 _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_7__["ModuleRegistry"].assertRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_6__["ModuleNames"].GridChartsModule, 'api.createPivotChart')) {
35660 return this.chartService.createPivotChart(params);
35661 }
35662 };
35663 /** Copies the selected rows to the clipboard. */
35664 GridApi.prototype.copySelectedRowsToClipboard = function (params) {
35665 if (!this.clipboardService) {
35666 console.warn('AG Grid: clipboard is only available in AG Grid Enterprise');
35667 }
35668 this.clipboardService.copySelectedRowsToClipboard(params);
35669 };
35670 /** Copies the selected ranges to the clipboard. */
35671 GridApi.prototype.copySelectedRangeToClipboard = function (params) {
35672 if (!this.clipboardService) {
35673 console.warn('AG Grid: clipboard is only available in AG Grid Enterprise');
35674 }
35675 this.clipboardService.copySelectedRangeToClipboard(params);
35676 };
35677 /** Copies the selected range down, similar to `Ctrl + D` in Excel. */
35678 GridApi.prototype.copySelectedRangeDown = function () {
35679 if (!this.clipboardService) {
35680 console.warn('AG Grid: clipboard is only available in AG Grid Enterprise');
35681 }
35682 this.clipboardService.copyRangeDown();
35683 };
35684 /** Shows the column menu after and positions it relative to the provided button element. Use in conjunction with your own header template. */
35685 GridApi.prototype.showColumnMenuAfterButtonClick = function (colKey, buttonElement) {
35686 // use grid column so works with pivot mode
35687 var column = this.columnModel.getGridColumn(colKey);
35688 this.menuFactory.showMenuAfterButtonClick(column, buttonElement, 'columnMenu');
35689 };
35690 /** Shows the column menu after and positions it relative to the mouse event. Use in conjunction with your own header template. */
35691 GridApi.prototype.showColumnMenuAfterMouseClick = function (colKey, mouseEvent) {
35692 // use grid column so works with pivot mode
35693 var column = this.columnModel.getGridColumn(colKey);
35694 if (!column) {
35695 column = this.columnModel.getPrimaryColumn(colKey);
35696 }
35697 if (!column) {
35698 console.error("AG Grid: column '" + colKey + "' not found");
35699 return;
35700 }
35701 this.menuFactory.showMenuAfterMouseEvent(column, mouseEvent);
35702 };
35703 /** Hides any visible context menu or column menu. */
35704 GridApi.prototype.hidePopupMenu = function () {
35705 // hide the context menu if in enterprise
35706 if (this.contextMenuFactory) {
35707 this.contextMenuFactory.hideActiveMenu();
35708 }
35709 // and hide the column menu always
35710 this.menuFactory.hideActiveMenu();
35711 };
35712 /** DOM element to use as the popup parent for grid popups (context menu, column menu etc). */
35713 GridApi.prototype.setPopupParent = function (ePopupParent) {
35714 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_POPUP_PARENT, ePopupParent);
35715 };
35716 /** Navigates the grid focus to the next cell, as if tabbing. */
35717 GridApi.prototype.tabToNextCell = function (event) {
35718 return this.navigationService.tabToNextCell(false, event);
35719 };
35720 /** Navigates the grid focus to the previous cell, as if shift-tabbing. */
35721 GridApi.prototype.tabToPreviousCell = function (event) {
35722 return this.navigationService.tabToNextCell(true, event);
35723 };
35724 /** Returns the list of active cell renderer instances. */
35725 GridApi.prototype.getCellRendererInstances = function (params) {
35726 if (params === void 0) { params = {}; }
35727 var res = this.rowRenderer.getCellRendererInstances(params);
35728 var unwrapped = res.map(unwrapUserComp);
35729 return unwrapped;
35730 };
35731 /** Returns the list of active cell editor instances. Optionally provide parameters to restrict to certain columns / row nodes. */
35732 GridApi.prototype.getCellEditorInstances = function (params) {
35733 if (params === void 0) { params = {}; }
35734 var res = this.rowRenderer.getCellEditorInstances(params);
35735 var unwrapped = res.map(unwrapUserComp);
35736 return unwrapped;
35737 };
35738 /** If the grid is editing, returns back details of the editing cell(s). */
35739 GridApi.prototype.getEditingCells = function () {
35740 return this.rowRenderer.getEditingCells();
35741 };
35742 /** If a cell is editing, it stops the editing. Pass `true` if you want to cancel the editing (i.e. don't accept changes). */
35743 GridApi.prototype.stopEditing = function (cancel) {
35744 if (cancel === void 0) { cancel = false; }
35745 this.rowRenderer.stopEditing(cancel);
35746 };
35747 /** Start editing the provided cell. If another cell is editing, the editing will be stopped in that other cell. */
35748 GridApi.prototype.startEditingCell = function (params) {
35749 var column = this.columnModel.getGridColumn(params.colKey);
35750 if (!column) {
35751 console.warn("AG Grid: no column found for " + params.colKey);
35752 return;
35753 }
35754 var cellPosition = {
35755 rowIndex: params.rowIndex,
35756 rowPinned: params.rowPinned || null,
35757 column: column
35758 };
35759 var notPinned = params.rowPinned == null;
35760 if (notPinned) {
35761 this.gridBodyCtrl.getScrollFeature().ensureIndexVisible(params.rowIndex);
35762 }
35763 var cell = this.navigationService.getCellByPosition(cellPosition);
35764 if (!cell) {
35765 return;
35766 }
35767 cell.startRowOrCellEdit(params.key, params.charPress);
35768 };
35769 /** Add an aggregation function with the specified key. */
35770 GridApi.prototype.addAggFunc = function (key, aggFunc) {
35771 if (this.aggFuncService) {
35772 this.aggFuncService.addAggFunc(key, aggFunc);
35773 }
35774 };
35775 /** Add aggregations function with the specified keys. */
35776 GridApi.prototype.addAggFuncs = function (aggFuncs) {
35777 if (this.aggFuncService) {
35778 this.aggFuncService.addAggFuncs(aggFuncs);
35779 }
35780 };
35781 /** Clears all aggregation functions (including those provided by the grid). */
35782 GridApi.prototype.clearAggFuncs = function () {
35783 if (this.aggFuncService) {
35784 this.aggFuncService.clear();
35785 }
35786 };
35787 /** Apply transactions to the server side row model. */
35788 GridApi.prototype.applyServerSideTransaction = function (transaction) {
35789 if (!this.serverSideTransactionManager) {
35790 console.warn('AG Grid: Cannot apply Server Side Transaction if not using the Server Side Row Model.');
35791 return;
35792 }
35793 return this.serverSideTransactionManager.applyTransaction(transaction);
35794 };
35795 GridApi.prototype.applyServerSideTransactionAsync = function (transaction, callback) {
35796 if (!this.serverSideTransactionManager) {
35797 console.warn('AG Grid: Cannot apply Server Side Transaction if not using the Server Side Row Model.');
35798 return;
35799 }
35800 return this.serverSideTransactionManager.applyTransactionAsync(transaction, callback);
35801 };
35802 /** Gets all failed server side loads to retry. */
35803 GridApi.prototype.retryServerSideLoads = function () {
35804 if (!this.serverSideRowModel) {
35805 console.warn('AG Grid: API retryServerSideLoads() can only be used when using Server-Side Row Model.');
35806 return;
35807 }
35808 this.serverSideRowModel.retryLoads();
35809 };
35810 GridApi.prototype.flushServerSideAsyncTransactions = function () {
35811 if (!this.serverSideTransactionManager) {
35812 console.warn('AG Grid: Cannot flush Server Side Transaction if not using the Server Side Row Model.');
35813 return;
35814 }
35815 return this.serverSideTransactionManager.flushAsyncTransactions();
35816 };
35817 /** Update row data. Pass a transaction object with lists for `add`, `remove` and `update`. */
35818 GridApi.prototype.applyTransaction = function (rowDataTransaction) {
35819 if (!this.clientSideRowModel) {
35820 console.error('AG Grid: updateRowData() only works with ClientSideRowModel. Working with InfiniteRowModel was deprecated in v23.1 and removed in v24.1');
35821 return;
35822 }
35823 var res = this.clientSideRowModel.updateRowData(rowDataTransaction);
35824 // refresh all the full width rows
35825 this.rowRenderer.refreshFullWidthRows(res.update);
35826 // do change detection for all present cells
35827 if (!this.gridOptionsWrapper.isSuppressChangeDetection()) {
35828 this.rowRenderer.refreshCells();
35829 }
35830 return res;
35831 };
35832 /** Sets the `deltaSort` property */
35833 GridApi.prototype.setDeltaSort = function (enable) {
35834 this.gridOptionsWrapper.setProperty('deltaSort', enable);
35835 };
35836 /** @deprecated */
35837 GridApi.prototype.updateRowData = function (rowDataTransaction) {
35838 var message = 'AG Grid: as of v23.1, grid API updateRowData(transaction) is now called applyTransaction(transaction). updateRowData is deprecated and will be removed in a future major release.';
35839 Object(_utils_function__WEBPACK_IMPORTED_MODULE_8__["doOnce"])(function () { return console.warn(message); }, 'updateRowData deprecated');
35840 return this.applyTransaction(rowDataTransaction);
35841 };
35842 /** Same as `applyTransaction` except executes asynchronously for efficiency. */
35843 GridApi.prototype.applyTransactionAsync = function (rowDataTransaction, callback) {
35844 if (!this.clientSideRowModel) {
35845 console.error('AG Grid: api.applyTransactionAsync() only works with ClientSideRowModel.');
35846 return;
35847 }
35848 this.clientSideRowModel.batchUpdateRowData(rowDataTransaction, callback);
35849 };
35850 /** Executes any remaining asynchronous grid transactions, if any are waiting to be executed. */
35851 GridApi.prototype.flushAsyncTransactions = function () {
35852 if (!this.clientSideRowModel) {
35853 console.error('AG Grid: api.applyTransactionAsync() only works with ClientSideRowModel.');
35854 return;
35855 }
35856 this.clientSideRowModel.flushAsyncTransactions();
35857 };
35858 /** @deprecated */
35859 GridApi.prototype.batchUpdateRowData = function (rowDataTransaction, callback) {
35860 var message = 'AG Grid: as of v23.1, grid API batchUpdateRowData(transaction, callback) is now called applyTransactionAsync(transaction, callback). batchUpdateRowData is deprecated and will be removed in a future major release.';
35861 Object(_utils_function__WEBPACK_IMPORTED_MODULE_8__["doOnce"])(function () { return console.warn(message); }, 'batchUpdateRowData deprecated');
35862 this.applyTransactionAsync(rowDataTransaction, callback);
35863 };
35864 GridApi.prototype.insertItemsAtIndex = function (index, items, skipRefresh) {
35865 if (skipRefresh === void 0) { skipRefresh = false; }
35866 console.warn('AG Grid: insertItemsAtIndex() is deprecated, use updateRowData(transaction) instead.');
35867 this.updateRowData({ add: items, addIndex: index, update: null, remove: null });
35868 };
35869 GridApi.prototype.removeItems = function (rowNodes, skipRefresh) {
35870 if (skipRefresh === void 0) { skipRefresh = false; }
35871 console.warn('AG Grid: removeItems() is deprecated, use updateRowData(transaction) instead.');
35872 var dataToRemove = rowNodes.map(function (rowNode) { return rowNode.data; });
35873 this.updateRowData({ add: null, addIndex: null, update: null, remove: dataToRemove });
35874 };
35875 GridApi.prototype.addItems = function (items, skipRefresh) {
35876 if (skipRefresh === void 0) { skipRefresh = false; }
35877 console.warn('AG Grid: addItems() is deprecated, use updateRowData(transaction) instead.');
35878 this.updateRowData({ add: items, addIndex: null, update: null, remove: null });
35879 };
35880 GridApi.prototype.refreshVirtualPageCache = function () {
35881 console.warn('AG Grid: refreshVirtualPageCache() is now called refreshInfiniteCache(), please call refreshInfiniteCache() instead');
35882 this.refreshInfiniteCache();
35883 };
35884 GridApi.prototype.refreshInfinitePageCache = function () {
35885 console.warn('AG Grid: refreshInfinitePageCache() is now called refreshInfiniteCache(), please call refreshInfiniteCache() instead');
35886 this.refreshInfiniteCache();
35887 };
35888 /**
35889 * Marks all the currently loaded blocks in the cache for reload.
35890 * If you have 10 blocks in the cache, all 10 will be marked for reload.
35891 * The old data will continue to be displayed until the new data is loaded.
35892 */
35893 GridApi.prototype.refreshInfiniteCache = function () {
35894 if (this.infiniteRowModel) {
35895 this.infiniteRowModel.refreshCache();
35896 }
35897 else {
35898 console.warn("AG Grid: api.refreshInfiniteCache is only available when rowModelType='infinite'.");
35899 }
35900 };
35901 GridApi.prototype.purgeVirtualPageCache = function () {
35902 console.warn('AG Grid: purgeVirtualPageCache() is now called purgeInfiniteCache(), please call purgeInfiniteCache() instead');
35903 this.purgeInfinitePageCache();
35904 };
35905 GridApi.prototype.purgeInfinitePageCache = function () {
35906 console.warn('AG Grid: purgeInfinitePageCache() is now called purgeInfiniteCache(), please call purgeInfiniteCache() instead');
35907 this.purgeInfiniteCache();
35908 };
35909 /**
35910 * Purges the cache.
35911 * The grid is then told to refresh. Only the blocks required to display the current data on screen are fetched (typically no more than 2).
35912 * The grid will display nothing while the new blocks are loaded.
35913 * Use this to immediately remove the old data from the user.
35914 */
35915 GridApi.prototype.purgeInfiniteCache = function () {
35916 if (this.infiniteRowModel) {
35917 this.infiniteRowModel.purgeCache();
35918 }
35919 else {
35920 console.warn("AG Grid: api.purgeInfiniteCache is only available when rowModelType='infinite'.");
35921 }
35922 };
35923 /** @deprecated */
35924 GridApi.prototype.purgeEnterpriseCache = function (route) {
35925 console.warn("ag-grid: since version 18.x, api.purgeEnterpriseCache() should be replaced with api.purgeServerSideCache()");
35926 this.purgeServerSideCache(route);
35927 };
35928 /** @deprecated */
35929 GridApi.prototype.purgeServerSideCache = function (route) {
35930 if (route === void 0) { route = []; }
35931 if (this.serverSideRowModel) {
35932 console.warn("AG Grid: since v25.0, api.purgeServerSideCache is deprecated. Please use api.refreshServerSideStore({purge: true}) instead.");
35933 this.refreshServerSideStore({
35934 route: route,
35935 purge: true
35936 });
35937 }
35938 else {
35939 console.warn("AG Grid: api.purgeServerSideCache is only available when rowModelType='serverSide'.");
35940 }
35941 };
35942 /**
35943 * Refresh a server-side store.
35944 * If you pass no parameters, then the top level cache is purged.
35945 * To purge a child cache, pass in the string of keys to get to the child cache.
35946 */
35947 GridApi.prototype.refreshServerSideStore = function (params) {
35948 if (this.serverSideRowModel) {
35949 this.serverSideRowModel.refreshStore(params);
35950 }
35951 else {
35952 console.warn("AG Grid: api.refreshServerSideStore is only available when rowModelType='serverSide'.");
35953 }
35954 };
35955 /** Returns info on all server side stores. */
35956 GridApi.prototype.getServerSideStoreState = function () {
35957 if (this.serverSideRowModel) {
35958 return this.serverSideRowModel.getStoreState();
35959 }
35960 else {
35961 console.warn("AG Grid: api.getServerSideStoreState is only available when rowModelType='serverSide'.");
35962 return [];
35963 }
35964 };
35965 GridApi.prototype.getVirtualRowCount = function () {
35966 console.warn('AG Grid: getVirtualRowCount() is now called getInfiniteRowCount(), please call getInfiniteRowCount() instead');
35967 return this.getInfiniteRowCount();
35968 };
35969 /** The row count defines how many rows the grid allows scrolling to. */
35970 GridApi.prototype.getInfiniteRowCount = function () {
35971 if (this.infiniteRowModel) {
35972 return this.infiniteRowModel.getRowCount();
35973 }
35974 else {
35975 console.warn("AG Grid: api.getVirtualRowCount is only available when rowModelType='virtual'.");
35976 }
35977 };
35978 GridApi.prototype.isMaxRowFound = function () {
35979 console.warn("AG Grid: api.isLastRowIndexKnown is deprecated, please use api.isLastRowIndexKnown()");
35980 return this.isLastRowIndexKnown();
35981 };
35982 /** Returns `true` if grid allows for scrolling past the last row to load more rows, thus providing infinite scroll. */
35983 GridApi.prototype.isLastRowIndexKnown = function () {
35984 if (this.infiniteRowModel) {
35985 return this.infiniteRowModel.isLastRowIndexKnown();
35986 }
35987 else {
35988 console.warn("AG Grid: api.isMaxRowFound is only available when rowModelType='virtual'.");
35989 }
35990 };
35991 GridApi.prototype.setVirtualRowCount = function (rowCount, maxRowFound) {
35992 console.warn('AG Grid: setVirtualRowCount() is now called setInfiniteRowCount(), please call setInfiniteRowCount() instead');
35993 this.setRowCount(rowCount, maxRowFound);
35994 };
35995 GridApi.prototype.setInfiniteRowCount = function (rowCount, maxRowFound) {
35996 console.warn('AG Grid: setInfiniteRowCount() is now called setRowCount(), please call setRowCount() instead');
35997 this.setRowCount(rowCount, maxRowFound);
35998 };
35999 /**
36000 * Sets the `rowCount` and `lastRowIndexKnown` properties.
36001 * The second parameter, `lastRowIndexKnown`, is optional and if left out, only `rowCount` is set.
36002 * Set `rowCount` to adjust the height of the vertical scroll.
36003 * Set `lastRowIndexKnown` to enable / disable searching for more rows.
36004 * Use this method if you add or remove rows into the dataset and need to reset the number of rows or put the data back into 'look for data' mode.
36005 */
36006 GridApi.prototype.setRowCount = function (rowCount, maxRowFound) {
36007 if (this.infiniteRowModel) {
36008 this.infiniteRowModel.setRowCount(rowCount, maxRowFound);
36009 }
36010 else {
36011 console.warn("AG Grid: api.setRowCount is only available for Infinite Row Model.");
36012 }
36013 };
36014 GridApi.prototype.getVirtualPageState = function () {
36015 console.warn('AG Grid: getVirtualPageState() is now called getCacheBlockState(), please call getCacheBlockState() instead');
36016 return this.getCacheBlockState();
36017 };
36018 GridApi.prototype.getInfinitePageState = function () {
36019 console.warn('AG Grid: getInfinitePageState() is now called getCacheBlockState(), please call getCacheBlockState() instead');
36020 return this.getCacheBlockState();
36021 };
36022 /**
36023 * Returns an object representing the state of the cache. This is useful for debugging and understanding how the cache is working.
36024 */
36025 GridApi.prototype.getCacheBlockState = function () {
36026 return this.rowNodeBlockLoader.getBlockState();
36027 };
36028 GridApi.prototype.checkGridSize = function () {
36029 console.warn("in AG Grid v25.2.0, checkGridSize() was removed, as it was legacy and didn't do anything uesful.");
36030 };
36031 GridApi.prototype.getFirstRenderedRow = function () {
36032 console.warn('in AG Grid v12, getFirstRenderedRow() was renamed to getFirstDisplayedRow()');
36033 return this.getFirstDisplayedRow();
36034 };
36035 /** Get the index of the first displayed row due to scrolling (includes invisible rendered rows in the buffer). */
36036 GridApi.prototype.getFirstDisplayedRow = function () {
36037 return this.rowRenderer.getFirstVirtualRenderedRow();
36038 };
36039 GridApi.prototype.getLastRenderedRow = function () {
36040 console.warn('in AG Grid v12, getLastRenderedRow() was renamed to getLastDisplayedRow()');
36041 return this.getLastDisplayedRow();
36042 };
36043 /** Get the index of the last displayed row due to scrolling (includes invisible rendered rows in the buffer). */
36044 GridApi.prototype.getLastDisplayedRow = function () {
36045 return this.rowRenderer.getLastVirtualRenderedRow();
36046 };
36047 /** Returns the displayed `RowNode` at the given `index`. */
36048 GridApi.prototype.getDisplayedRowAtIndex = function (index) {
36049 return this.rowModel.getRow(index);
36050 };
36051 /** Returns the total number of displayed rows. */
36052 GridApi.prototype.getDisplayedRowCount = function () {
36053 return this.rowModel.getRowCount();
36054 };
36055 /**
36056 * Returns `true` when the last page is known.
36057 * This will always be `true` if you are using the Client-Side Row Model for pagination.
36058 * Returns `false` when the last page is not known; this only happens when using Infinite Row Model.
36059 */
36060 GridApi.prototype.paginationIsLastPageFound = function () {
36061 return this.paginationProxy.isLastPageFound();
36062 };
36063 /** Returns how many rows are being shown per page. */
36064 GridApi.prototype.paginationGetPageSize = function () {
36065 return this.paginationProxy.getPageSize();
36066 };
36067 /** Sets the `paginationPageSize`, then re-paginates the grid so the changes are applied immediately. */
36068 GridApi.prototype.paginationSetPageSize = function (size) {
36069 this.gridOptionsWrapper.setProperty('paginationPageSize', size);
36070 };
36071 /** Returns the 0-based index of the page which is showing. */
36072 GridApi.prototype.paginationGetCurrentPage = function () {
36073 return this.paginationProxy.getCurrentPage();
36074 };
36075 /** Returns the total number of pages. Returns `null` if `paginationIsLastPageFound() === false`. */
36076 GridApi.prototype.paginationGetTotalPages = function () {
36077 return this.paginationProxy.getTotalPages();
36078 };
36079 /** The total number of rows. Returns `null` if `paginationIsLastPageFound() === false`. */
36080 GridApi.prototype.paginationGetRowCount = function () {
36081 return this.paginationProxy.getMasterRowCount();
36082 };
36083 /** Navigates to the next page. */
36084 GridApi.prototype.paginationGoToNextPage = function () {
36085 this.paginationProxy.goToNextPage();
36086 };
36087 /** Navigates to the previous page. */
36088 GridApi.prototype.paginationGoToPreviousPage = function () {
36089 this.paginationProxy.goToPreviousPage();
36090 };
36091 /** Navigates to the first page. */
36092 GridApi.prototype.paginationGoToFirstPage = function () {
36093 this.paginationProxy.goToFirstPage();
36094 };
36095 /** Navigates to the last page. */
36096 GridApi.prototype.paginationGoToLastPage = function () {
36097 this.paginationProxy.goToLastPage();
36098 };
36099 /** Goes to the specified page. If the page requested doesn't exist, it will go to the last page. */
36100 GridApi.prototype.paginationGoToPage = function (page) {
36101 this.paginationProxy.goToPage(page);
36102 };
36103 GridApi.prototype.setRowClass = function (className) {
36104 this.gridOptionsWrapper.setProperty(_gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"].PROP_ROW_CLASS, className);
36105 };
36106 __decorate([
36107 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('immutableService')
36108 ], GridApi.prototype, "immutableService", void 0);
36109 __decorate([
36110 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('csvCreator')
36111 ], GridApi.prototype, "csvCreator", void 0);
36112 __decorate([
36113 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('excelCreator')
36114 ], GridApi.prototype, "excelCreator", void 0);
36115 __decorate([
36116 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('rowRenderer')
36117 ], GridApi.prototype, "rowRenderer", void 0);
36118 __decorate([
36119 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('navigationService')
36120 ], GridApi.prototype, "navigationService", void 0);
36121 __decorate([
36122 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('filterManager')
36123 ], GridApi.prototype, "filterManager", void 0);
36124 __decorate([
36125 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
36126 ], GridApi.prototype, "columnModel", void 0);
36127 __decorate([
36128 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('selectionService')
36129 ], GridApi.prototype, "selectionService", void 0);
36130 __decorate([
36131 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridOptionsWrapper')
36132 ], GridApi.prototype, "gridOptionsWrapper", void 0);
36133 __decorate([
36134 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('valueService')
36135 ], GridApi.prototype, "valueService", void 0);
36136 __decorate([
36137 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('alignedGridsService')
36138 ], GridApi.prototype, "alignedGridsService", void 0);
36139 __decorate([
36140 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('eventService')
36141 ], GridApi.prototype, "eventService", void 0);
36142 __decorate([
36143 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('pinnedRowModel')
36144 ], GridApi.prototype, "pinnedRowModel", void 0);
36145 __decorate([
36146 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('context')
36147 ], GridApi.prototype, "context", void 0);
36148 __decorate([
36149 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('rowModel')
36150 ], GridApi.prototype, "rowModel", void 0);
36151 __decorate([
36152 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('sortController')
36153 ], GridApi.prototype, "sortController", void 0);
36154 __decorate([
36155 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('paginationProxy')
36156 ], GridApi.prototype, "paginationProxy", void 0);
36157 __decorate([
36158 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('focusService')
36159 ], GridApi.prototype, "focusService", void 0);
36160 __decorate([
36161 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('dragAndDropService')
36162 ], GridApi.prototype, "dragAndDropService", void 0);
36163 __decorate([
36164 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('rangeService')
36165 ], GridApi.prototype, "rangeService", void 0);
36166 __decorate([
36167 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('clipboardService')
36168 ], GridApi.prototype, "clipboardService", void 0);
36169 __decorate([
36170 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('aggFuncService')
36171 ], GridApi.prototype, "aggFuncService", void 0);
36172 __decorate([
36173 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('menuFactory')
36174 ], GridApi.prototype, "menuFactory", void 0);
36175 __decorate([
36176 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('contextMenuFactory')
36177 ], GridApi.prototype, "contextMenuFactory", void 0);
36178 __decorate([
36179 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('valueCache')
36180 ], GridApi.prototype, "valueCache", void 0);
36181 __decorate([
36182 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('animationFrameService')
36183 ], GridApi.prototype, "animationFrameService", void 0);
36184 __decorate([
36185 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('statusBarService')
36186 ], GridApi.prototype, "statusBarService", void 0);
36187 __decorate([
36188 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('chartService')
36189 ], GridApi.prototype, "chartService", void 0);
36190 __decorate([
36191 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('undoRedoService')
36192 ], GridApi.prototype, "undoRedoService", void 0);
36193 __decorate([
36194 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('rowNodeBlockLoader')
36195 ], GridApi.prototype, "rowNodeBlockLoader", void 0);
36196 __decorate([
36197 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('ssrmTransactionManager')
36198 ], GridApi.prototype, "serverSideTransactionManager", void 0);
36199 __decorate([
36200 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('ctrlsService')
36201 ], GridApi.prototype, "ctrlsService", void 0);
36202 __decorate([
36203 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Optional"])('frameworkComponentWrapper')
36204 ], GridApi.prototype, "frameworkComponentWrapper", void 0);
36205 __decorate([
36206 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
36207 ], GridApi.prototype, "init", null);
36208 __decorate([
36209 _context_context__WEBPACK_IMPORTED_MODULE_1__["PreDestroy"]
36210 ], GridApi.prototype, "cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid", null);
36211 GridApi = __decorate([
36212 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('gridApi')
36213 ], GridApi);
36214 return GridApi;
36215}());
36216
36217
36218
36219
36220
36221/***/ }),
36222/* 157 */
36223/***/ (function(module, __webpack_exports__, __webpack_require__) {
36224
36225"use strict";
36226__webpack_require__.r(__webpack_exports__);
36227/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ClientSideRowModelSteps", function() { return ClientSideRowModelSteps; });
36228/**
36229 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
36230 * @version v27.3.0
36231 * @link https://www.ag-grid.com/
36232 * @license MIT
36233 */
36234var ClientSideRowModelSteps;
36235(function (ClientSideRowModelSteps) {
36236 ClientSideRowModelSteps["EVERYTHING"] = "group";
36237 ClientSideRowModelSteps["FILTER"] = "filter";
36238 ClientSideRowModelSteps["SORT"] = "sort";
36239 ClientSideRowModelSteps["MAP"] = "map";
36240 ClientSideRowModelSteps["AGGREGATE"] = "aggregate";
36241 ClientSideRowModelSteps["FILTER_AGGREGATES"] = "filter_aggregates";
36242 ClientSideRowModelSteps["PIVOT"] = "pivot";
36243 ClientSideRowModelSteps["NOTHING"] = "nothing";
36244})(ClientSideRowModelSteps || (ClientSideRowModelSteps = {}));
36245
36246
36247
36248
36249/***/ }),
36250/* 158 */
36251/***/ (function(module, __webpack_exports__, __webpack_require__) {
36252
36253"use strict";
36254__webpack_require__.r(__webpack_exports__);
36255/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SetLeftFeature", function() { return SetLeftFeature; });
36256/* harmony import */ var _entities_column__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
36257/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
36258/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
36259/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12);
36260/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(44);
36261/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(18);
36262/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7);
36263/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(24);
36264/* harmony import */ var _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(112);
36265/**
36266 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
36267 * @version v27.3.0
36268 * @link https://www.ag-grid.com/
36269 * @license MIT
36270 */
36271var __extends = (undefined && undefined.__extends) || (function () {
36272 var extendStatics = function (d, b) {
36273 extendStatics = Object.setPrototypeOf ||
36274 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
36275 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
36276 return extendStatics(d, b);
36277 };
36278 return function (d, b) {
36279 extendStatics(d, b);
36280 function __() { this.constructor = d; }
36281 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
36282 };
36283})();
36284var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
36285 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
36286 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
36287 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
36288 return c > 3 && r && Object.defineProperty(target, key, r), r;
36289};
36290
36291
36292
36293
36294
36295
36296
36297
36298
36299var SetLeftFeature = /** @class */ (function (_super) {
36300 __extends(SetLeftFeature, _super);
36301 function SetLeftFeature(columnOrGroup, eCell, beans, colsSpanning) {
36302 var _this = _super.call(this) || this;
36303 _this.columnOrGroup = columnOrGroup;
36304 _this.eCell = eCell;
36305 _this.ariaEl = _this.eCell.querySelector('[role=columnheader]') || _this.eCell;
36306 _this.colsSpanning = colsSpanning;
36307 _this.beans = beans;
36308 return _this;
36309 }
36310 SetLeftFeature.prototype.setColsSpanning = function (colsSpanning) {
36311 this.colsSpanning = colsSpanning;
36312 this.onLeftChanged();
36313 };
36314 SetLeftFeature.prototype.getColumnOrGroup = function () {
36315 if (this.beans.gridOptionsWrapper.isEnableRtl() && this.colsSpanning) {
36316 return Object(_utils_array__WEBPACK_IMPORTED_MODULE_5__["last"])(this.colsSpanning);
36317 }
36318 return this.columnOrGroup;
36319 };
36320 SetLeftFeature.prototype.postConstruct = function () {
36321 this.addManagedListener(this.columnOrGroup, _entities_column__WEBPACK_IMPORTED_MODULE_0__["Column"].EVENT_LEFT_CHANGED, this.onLeftChanged.bind(this));
36322 this.setLeftFirstTime();
36323 // when in print layout, the left position is also dependent on the width of the pinned sections.
36324 // so additionally update left if any column width changes.
36325 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_7__["Events"].EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, this.onLeftChanged.bind(this));
36326 // setting left has a dependency on print layout
36327 this.addManagedListener(this.beans.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_8__["GridOptionsWrapper"].PROP_DOM_LAYOUT, this.onLeftChanged.bind(this));
36328 };
36329 SetLeftFeature.prototype.setLeftFirstTime = function () {
36330 var suppressMoveAnimation = this.beans.gridOptionsWrapper.isSuppressColumnMoveAnimation();
36331 var oldLeftExists = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_6__["exists"])(this.columnOrGroup.getOldLeft());
36332 var animateColumnMove = this.beans.columnAnimationService.isActive() && oldLeftExists && !suppressMoveAnimation;
36333 if (animateColumnMove) {
36334 this.animateInLeft();
36335 }
36336 else {
36337 this.onLeftChanged();
36338 }
36339 };
36340 SetLeftFeature.prototype.animateInLeft = function () {
36341 var _this = this;
36342 var colOrGroup = this.getColumnOrGroup();
36343 var left = colOrGroup.getLeft();
36344 var oldLeft = colOrGroup.getOldLeft();
36345 var oldActualLeft = this.modifyLeftForPrintLayout(colOrGroup, oldLeft);
36346 var actualLeft = this.modifyLeftForPrintLayout(colOrGroup, left);
36347 this.setLeft(oldActualLeft);
36348 // we must keep track of the left we want to set to, as this would otherwise lead to a race
36349 // condition, if the user changed the left value many times in one VM turn, then we want to make
36350 // make sure the actualLeft we set in the timeout below (in the next VM turn) is the correct left
36351 // position. eg if user changes column position twice, then setLeft() below executes twice in next
36352 // VM turn, but only one (the correct one) should get applied.
36353 this.actualLeft = actualLeft;
36354 this.beans.columnAnimationService.executeNextVMTurn(function () {
36355 // test this left value is the latest one to be applied, and if not, do nothing
36356 if (_this.actualLeft === actualLeft) {
36357 _this.setLeft(actualLeft);
36358 }
36359 });
36360 };
36361 SetLeftFeature.prototype.onLeftChanged = function () {
36362 var colOrGroup = this.getColumnOrGroup();
36363 var left = colOrGroup.getLeft();
36364 this.actualLeft = this.modifyLeftForPrintLayout(colOrGroup, left);
36365 this.setLeft(this.actualLeft);
36366 };
36367 SetLeftFeature.prototype.modifyLeftForPrintLayout = function (colOrGroup, leftPosition) {
36368 var printLayout = this.beans.gridOptionsWrapper.getDomLayout() === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].DOM_LAYOUT_PRINT;
36369 if (!printLayout) {
36370 return leftPosition;
36371 }
36372 if (colOrGroup.getPinned() === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_LEFT) {
36373 return leftPosition;
36374 }
36375 var leftWidth = this.beans.columnModel.getDisplayedColumnsLeftWidth();
36376 if (colOrGroup.getPinned() === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_RIGHT) {
36377 var bodyWidth = this.beans.columnModel.getBodyContainerWidth();
36378 return leftWidth + bodyWidth + leftPosition;
36379 }
36380 // is in body
36381 return leftWidth + leftPosition;
36382 };
36383 SetLeftFeature.prototype.setLeft = function (value) {
36384 // if the value is null, then that means the column is no longer
36385 // displayed. there is logic in the rendering to fade these columns
36386 // out, so we don't try and change their left positions.
36387 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_6__["exists"])(value)) {
36388 this.eCell.style.left = value + "px";
36389 }
36390 var indexColumn;
36391 if (this.columnOrGroup instanceof _entities_column__WEBPACK_IMPORTED_MODULE_0__["Column"]) {
36392 indexColumn = this.columnOrGroup;
36393 }
36394 else {
36395 var columnGroup = this.columnOrGroup;
36396 var children = columnGroup.getLeafColumns();
36397 if (!children.length) {
36398 return;
36399 }
36400 if (children.length > 1) {
36401 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_4__["setAriaColSpan"])(this.ariaEl, children.length);
36402 }
36403 indexColumn = children[0];
36404 }
36405 var index = this.beans.columnModel.getAriaColumnIndex(indexColumn);
36406 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_4__["setAriaColIndex"])(this.ariaEl, index);
36407 };
36408 __decorate([
36409 _context_context__WEBPACK_IMPORTED_MODULE_3__["PostConstruct"]
36410 ], SetLeftFeature.prototype, "postConstruct", null);
36411 return SetLeftFeature;
36412}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
36413
36414
36415
36416
36417
36418/***/ }),
36419/* 159 */
36420/***/ (function(module, __webpack_exports__, __webpack_require__) {
36421
36422"use strict";
36423__webpack_require__.r(__webpack_exports__);
36424/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HoverFeature", function() { return HoverFeature; });
36425/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
36426/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
36427/**
36428 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
36429 * @version v27.3.0
36430 * @link https://www.ag-grid.com/
36431 * @license MIT
36432 */
36433var __extends = (undefined && undefined.__extends) || (function () {
36434 var extendStatics = function (d, b) {
36435 extendStatics = Object.setPrototypeOf ||
36436 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
36437 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
36438 return extendStatics(d, b);
36439 };
36440 return function (d, b) {
36441 extendStatics(d, b);
36442 function __() { this.constructor = d; }
36443 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
36444 };
36445})();
36446var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
36447 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
36448 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
36449 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
36450 return c > 3 && r && Object.defineProperty(target, key, r), r;
36451};
36452
36453
36454var HoverFeature = /** @class */ (function (_super) {
36455 __extends(HoverFeature, _super);
36456 function HoverFeature(columns, element) {
36457 var _this = _super.call(this) || this;
36458 _this.columns = columns;
36459 _this.element = element;
36460 return _this;
36461 }
36462 HoverFeature.prototype.postConstruct = function () {
36463 if (this.gridOptionsWrapper.isColumnHoverHighlight()) {
36464 this.addMouseHoverListeners();
36465 }
36466 };
36467 HoverFeature.prototype.addMouseHoverListeners = function () {
36468 this.addManagedListener(this.element, 'mouseout', this.onMouseOut.bind(this));
36469 this.addManagedListener(this.element, 'mouseover', this.onMouseOver.bind(this));
36470 };
36471 HoverFeature.prototype.onMouseOut = function () {
36472 this.columnHoverService.clearMouseOver();
36473 };
36474 HoverFeature.prototype.onMouseOver = function () {
36475 this.columnHoverService.setMouseOver(this.columns);
36476 };
36477 __decorate([
36478 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnHoverService')
36479 ], HoverFeature.prototype, "columnHoverService", void 0);
36480 __decorate([
36481 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
36482 ], HoverFeature.prototype, "postConstruct", null);
36483 return HoverFeature;
36484}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
36485
36486
36487
36488
36489
36490/***/ }),
36491/* 160 */
36492/***/ (function(module, __webpack_exports__, __webpack_require__) {
36493
36494"use strict";
36495__webpack_require__.r(__webpack_exports__);
36496/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderCellCtrl", function() { return HeaderCellCtrl; });
36497/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65);
36498/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
36499/* harmony import */ var _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(97);
36500/* harmony import */ var _entities_column__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10);
36501/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(24);
36502/* harmony import */ var _rendering_features_setLeftFeature__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(158);
36503/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(44);
36504/* harmony import */ var _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(64);
36505/* harmony import */ var _widgets_tooltipFeature__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(126);
36506/* harmony import */ var _abstractCell_abstractHeaderCellCtrl__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(155);
36507/* harmony import */ var _cssClassApplier__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(147);
36508/* harmony import */ var _hoverFeature__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(159);
36509/* harmony import */ var _resizeFeature__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(161);
36510/* harmony import */ var _selectAllFeature__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(162);
36511/**
36512 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
36513 * @version v27.3.0
36514 * @link https://www.ag-grid.com/
36515 * @license MIT
36516 */
36517var __extends = (undefined && undefined.__extends) || (function () {
36518 var extendStatics = function (d, b) {
36519 extendStatics = Object.setPrototypeOf ||
36520 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
36521 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
36522 return extendStatics(d, b);
36523 };
36524 return function (d, b) {
36525 extendStatics(d, b);
36526 function __() { this.constructor = d; }
36527 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
36528 };
36529})();
36530var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
36531 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
36532 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
36533 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
36534 return c > 3 && r && Object.defineProperty(target, key, r), r;
36535};
36536
36537
36538
36539
36540
36541
36542
36543
36544
36545
36546
36547
36548
36549
36550var HeaderCellCtrl = /** @class */ (function (_super) {
36551 __extends(HeaderCellCtrl, _super);
36552 function HeaderCellCtrl(column, parentRowCtrl) {
36553 var _this = _super.call(this, column, parentRowCtrl) || this;
36554 _this.refreshFunctions = [];
36555 _this.userHeaderClasses = new Set();
36556 _this.ariaDescriptionProperties = new Map();
36557 _this.column = column;
36558 return _this;
36559 }
36560 HeaderCellCtrl.prototype.setComp = function (comp, eGui, eResize) {
36561 var _this = this;
36562 _super.prototype.setGui.call(this, eGui);
36563 this.comp = comp;
36564 this.colDefVersion = this.columnModel.getColDefVersion();
36565 this.updateState();
36566 this.setupWidth();
36567 this.setupMovingCss();
36568 this.setupMenuClass();
36569 this.setupSortableClass();
36570 this.addColumnHoverListener();
36571 this.setupFilterCss();
36572 this.setupColId();
36573 this.setupClassesFromColDef();
36574 this.setupTooltip();
36575 this.addActiveHeaderMouseListeners();
36576 this.setupSelectAll();
36577 this.setupUserComp();
36578 this.refreshAria();
36579 this.createManagedBean(new _resizeFeature__WEBPACK_IMPORTED_MODULE_12__["ResizeFeature"](this.getPinned(), this.column, eResize, comp, this));
36580 this.createManagedBean(new _hoverFeature__WEBPACK_IMPORTED_MODULE_11__["HoverFeature"]([this.column], eGui));
36581 this.createManagedBean(new _rendering_features_setLeftFeature__WEBPACK_IMPORTED_MODULE_5__["SetLeftFeature"](this.column, eGui, this.beans));
36582 this.createManagedBean(new _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_7__["ManagedFocusFeature"](eGui, {
36583 shouldStopEventPropagation: function (e) { return _this.shouldStopEventPropagation(e); },
36584 onTabKeyDown: function () { return null; },
36585 handleKeyDown: this.handleKeyDown.bind(this),
36586 onFocusIn: this.onFocusIn.bind(this),
36587 onFocusOut: this.onFocusOut.bind(this)
36588 }));
36589 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_NEW_COLUMNS_LOADED, this.onNewColumnsLoaded.bind(this));
36590 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_COLUMN_VALUE_CHANGED, this.onColumnValueChanged.bind(this));
36591 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_COLUMN_ROW_GROUP_CHANGED, this.onColumnRowGroupChanged.bind(this));
36592 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_COLUMN_PIVOT_CHANGED, this.onColumnPivotChanged.bind(this));
36593 };
36594 HeaderCellCtrl.prototype.setupUserComp = function () {
36595 var compDetails = this.lookupUserCompDetails();
36596 this.setCompDetails(compDetails);
36597 };
36598 HeaderCellCtrl.prototype.setCompDetails = function (compDetails) {
36599 this.userCompDetails = compDetails;
36600 this.comp.setUserCompDetails(compDetails);
36601 };
36602 HeaderCellCtrl.prototype.lookupUserCompDetails = function () {
36603 var params = this.createParams();
36604 var colDef = this.column.getColDef();
36605 return this.userComponentFactory.getHeaderCompDetails(colDef, params);
36606 };
36607 HeaderCellCtrl.prototype.createParams = function () {
36608 var _this = this;
36609 var colDef = this.column.getColDef();
36610 var params = {
36611 column: this.column,
36612 displayName: this.displayName,
36613 enableSorting: colDef.sortable,
36614 enableMenu: this.menuEnabled,
36615 showColumnMenu: function (source) {
36616 _this.gridApi.showColumnMenuAfterButtonClick(_this.column, source);
36617 },
36618 progressSort: function (multiSort) {
36619 _this.sortController.progressSort(_this.column, !!multiSort, "uiColumnSorted");
36620 },
36621 setSort: function (sort, multiSort) {
36622 _this.sortController.setSortForColumn(_this.column, sort, !!multiSort, "uiColumnSorted");
36623 },
36624 api: this.gridApi,
36625 columnApi: this.columnApi,
36626 context: this.gridOptionsWrapper.getContext(),
36627 eGridHeader: this.getGui()
36628 };
36629 return params;
36630 };
36631 HeaderCellCtrl.prototype.setupSelectAll = function () {
36632 this.selectAllFeature = this.createManagedBean(new _selectAllFeature__WEBPACK_IMPORTED_MODULE_13__["SelectAllFeature"](this.column));
36633 this.selectAllFeature.setComp(this);
36634 };
36635 HeaderCellCtrl.prototype.getSelectAllGui = function () {
36636 return this.selectAllFeature.getCheckboxGui();
36637 };
36638 HeaderCellCtrl.prototype.handleKeyDown = function (e) {
36639 if (e.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_0__["KeyCode"].SPACE) {
36640 this.selectAllFeature.onSpaceKeyPressed(e);
36641 }
36642 if (e.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_0__["KeyCode"].ENTER) {
36643 this.onEnterKeyPressed(e);
36644 }
36645 };
36646 HeaderCellCtrl.prototype.onEnterKeyPressed = function (e) {
36647 /// THIS IS BAD - we are assuming the header is not a user provided comp
36648 var headerComp = this.comp.getUserCompInstance();
36649 if (!headerComp) {
36650 return;
36651 }
36652 if (e.ctrlKey || e.metaKey) {
36653 if (this.menuEnabled && headerComp.showMenu) {
36654 e.preventDefault();
36655 headerComp.showMenu();
36656 }
36657 }
36658 else if (this.sortable) {
36659 var multiSort = e.shiftKey;
36660 this.sortController.progressSort(this.column, multiSort, "uiColumnSorted");
36661 }
36662 };
36663 HeaderCellCtrl.prototype.isMenuEnabled = function () {
36664 return this.menuEnabled;
36665 };
36666 HeaderCellCtrl.prototype.onFocusIn = function (e) {
36667 if (!this.getGui().contains(e.relatedTarget)) {
36668 var rowIndex = this.getRowIndex();
36669 this.focusService.setFocusedHeader(rowIndex, this.column);
36670 }
36671 this.setActiveHeader(true);
36672 };
36673 HeaderCellCtrl.prototype.onFocusOut = function (e) {
36674 if (this.getGui().contains(e.relatedTarget)) {
36675 return;
36676 }
36677 this.setActiveHeader(false);
36678 };
36679 HeaderCellCtrl.prototype.setupTooltip = function () {
36680 var _this = this;
36681 var tooltipCtrl = {
36682 getColumn: function () { return _this.column; },
36683 getColDef: function () { return _this.column.getColDef(); },
36684 getGui: function () { return _this.eGui; },
36685 getLocation: function () { return 'header'; },
36686 getTooltipValue: function () {
36687 var res = _this.column.getColDef().headerTooltip;
36688 return res;
36689 },
36690 };
36691 var tooltipFeature = this.createManagedBean(new _widgets_tooltipFeature__WEBPACK_IMPORTED_MODULE_8__["TooltipFeature"](tooltipCtrl, this.beans));
36692 tooltipFeature.setComp(this.comp);
36693 this.refreshFunctions.push(function () { return tooltipFeature.refreshToolTip(); });
36694 };
36695 HeaderCellCtrl.prototype.setupClassesFromColDef = function () {
36696 var _this = this;
36697 var refreshHeaderClasses = function () {
36698 var colDef = _this.column.getColDef();
36699 var goa = _this.gridOptionsWrapper;
36700 var classes = _cssClassApplier__WEBPACK_IMPORTED_MODULE_10__["CssClassApplier"].getHeaderClassesFromColDef(colDef, goa, _this.column, null);
36701 var oldClasses = _this.userHeaderClasses;
36702 _this.userHeaderClasses = new Set(classes);
36703 classes.forEach(function (c) {
36704 if (oldClasses.has(c)) {
36705 // class already added, no need to apply it, but remove from old set
36706 oldClasses.delete(c);
36707 }
36708 else {
36709 // class new since last time, so apply it
36710 _this.comp.addOrRemoveCssClass(c, true);
36711 }
36712 });
36713 // now old set only has classes that were applied last time, but not this time, so remove them
36714 oldClasses.forEach(function (c) { return _this.comp.addOrRemoveCssClass(c, false); });
36715 };
36716 this.refreshFunctions.push(refreshHeaderClasses);
36717 refreshHeaderClasses();
36718 };
36719 HeaderCellCtrl.prototype.setDragSource = function (eSource) {
36720 var _this = this;
36721 this.dragSourceElement = eSource;
36722 this.removeDragSource();
36723 if (!eSource) {
36724 return;
36725 }
36726 if (!this.draggable) {
36727 return;
36728 }
36729 this.moveDragSource = {
36730 type: _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["DragSourceType"].HeaderCell,
36731 eElement: eSource,
36732 defaultIconName: _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["DragAndDropService"].ICON_HIDE,
36733 getDragItem: function () { return _this.createDragItem(); },
36734 dragItemName: this.displayName,
36735 onDragStarted: function () { return _this.column.setMoving(true, "uiColumnMoved"); },
36736 onDragStopped: function () { return _this.column.setMoving(false, "uiColumnMoved"); }
36737 };
36738 this.dragAndDropService.addDragSource(this.moveDragSource, true);
36739 };
36740 HeaderCellCtrl.prototype.createDragItem = function () {
36741 var visibleState = {};
36742 visibleState[this.column.getId()] = this.column.isVisible();
36743 return {
36744 columns: [this.column],
36745 visibleState: visibleState
36746 };
36747 };
36748 HeaderCellCtrl.prototype.removeDragSource = function () {
36749 if (this.moveDragSource) {
36750 this.dragAndDropService.removeDragSource(this.moveDragSource);
36751 this.moveDragSource = undefined;
36752 }
36753 };
36754 HeaderCellCtrl.prototype.onNewColumnsLoaded = function () {
36755 var colDefVersionNow = this.columnModel.getColDefVersion();
36756 if (colDefVersionNow != this.colDefVersion) {
36757 this.colDefVersion = colDefVersionNow;
36758 this.refresh();
36759 }
36760 };
36761 HeaderCellCtrl.prototype.updateState = function () {
36762 var colDef = this.column.getColDef();
36763 this.menuEnabled = this.menuFactory.isMenuEnabled(this.column) && !colDef.suppressMenu;
36764 this.sortable = colDef.sortable;
36765 this.displayName = this.calculateDisplayName();
36766 this.draggable = this.workOutDraggable();
36767 };
36768 HeaderCellCtrl.prototype.addRefreshFunction = function (func) {
36769 this.refreshFunctions.push(func);
36770 };
36771 HeaderCellCtrl.prototype.refresh = function () {
36772 this.updateState();
36773 this.refreshHeaderComp();
36774 this.refreshAria();
36775 this.refreshFunctions.forEach(function (f) { return f(); });
36776 };
36777 HeaderCellCtrl.prototype.refreshHeaderComp = function () {
36778 var newCompDetails = this.lookupUserCompDetails();
36779 var compInstance = this.comp.getUserCompInstance();
36780 // only try refresh if old comp exists adn it is the correct type
36781 var attemptRefresh = compInstance != null && this.userCompDetails.componentClass == newCompDetails.componentClass;
36782 var headerCompRefreshed = attemptRefresh ? this.attemptHeaderCompRefresh(newCompDetails.params) : false;
36783 if (headerCompRefreshed) {
36784 // we do this as a refresh happens after colDefs change, and it's possible the column has had it's
36785 // draggable property toggled. no need to call this if not refreshing, as setDragSource is done
36786 // as part of appendHeaderComp
36787 this.setDragSource(this.dragSourceElement);
36788 }
36789 else {
36790 this.setCompDetails(newCompDetails);
36791 }
36792 };
36793 HeaderCellCtrl.prototype.attemptHeaderCompRefresh = function (params) {
36794 var headerComp = this.comp.getUserCompInstance();
36795 if (!headerComp) {
36796 return false;
36797 }
36798 // if no refresh method, then we want to replace the headerComp
36799 if (!headerComp.refresh) {
36800 return false;
36801 }
36802 var res = headerComp.refresh(params);
36803 return res;
36804 };
36805 HeaderCellCtrl.prototype.calculateDisplayName = function () {
36806 return this.columnModel.getDisplayNameForColumn(this.column, 'header', true);
36807 };
36808 HeaderCellCtrl.prototype.checkDisplayName = function () {
36809 // display name can change if aggFunc different, eg sum(Gold) is now max(Gold)
36810 if (this.displayName !== this.calculateDisplayName()) {
36811 this.refresh();
36812 }
36813 };
36814 HeaderCellCtrl.prototype.workOutDraggable = function () {
36815 var colDef = this.column.getColDef();
36816 var isSuppressMovableColumns = this.gridOptionsWrapper.isSuppressMovableColumns();
36817 var colCanMove = !isSuppressMovableColumns && !colDef.suppressMovable && !colDef.lockPosition;
36818 // we should still be allowed drag the column, even if it can't be moved, if the column
36819 // can be dragged to a rowGroup or pivot drop zone
36820 return !!colCanMove || !!colDef.enableRowGroup || !!colDef.enablePivot;
36821 };
36822 HeaderCellCtrl.prototype.onColumnRowGroupChanged = function () {
36823 this.checkDisplayName();
36824 };
36825 HeaderCellCtrl.prototype.onColumnPivotChanged = function () {
36826 this.checkDisplayName();
36827 };
36828 HeaderCellCtrl.prototype.onColumnValueChanged = function () {
36829 this.checkDisplayName();
36830 };
36831 HeaderCellCtrl.prototype.setupWidth = function () {
36832 var _this = this;
36833 var listener = function () {
36834 _this.comp.setWidth(_this.column.getActualWidth() + 'px');
36835 };
36836 this.addManagedListener(this.column, _entities_column__WEBPACK_IMPORTED_MODULE_3__["Column"].EVENT_WIDTH_CHANGED, listener);
36837 listener();
36838 };
36839 HeaderCellCtrl.prototype.setupMovingCss = function () {
36840 var _this = this;
36841 var listener = function () {
36842 // this is what makes the header go dark when it is been moved (gives impression to
36843 // user that the column was picked up).
36844 _this.comp.addOrRemoveCssClass('ag-header-cell-moving', _this.column.isMoving());
36845 };
36846 this.addManagedListener(this.column, _entities_column__WEBPACK_IMPORTED_MODULE_3__["Column"].EVENT_MOVING_CHANGED, listener);
36847 listener();
36848 };
36849 HeaderCellCtrl.prototype.setupMenuClass = function () {
36850 var _this = this;
36851 var listener = function () {
36852 _this.comp.addOrRemoveCssClass('ag-column-menu-visible', _this.column.isMenuVisible());
36853 };
36854 this.addManagedListener(this.column, _entities_column__WEBPACK_IMPORTED_MODULE_3__["Column"].EVENT_MENU_VISIBLE_CHANGED, listener);
36855 listener();
36856 };
36857 HeaderCellCtrl.prototype.setupSortableClass = function () {
36858 var _this = this;
36859 var updateSortableCssClass = function () {
36860 _this.comp.addOrRemoveCssClass('ag-header-cell-sortable', !!_this.sortable);
36861 };
36862 updateSortableCssClass();
36863 this.addRefreshFunction(updateSortableCssClass);
36864 this.addManagedListener(this.column, _entities_column__WEBPACK_IMPORTED_MODULE_3__["Column"].EVENT_SORT_CHANGED, this.refreshAriaSort.bind(this));
36865 };
36866 HeaderCellCtrl.prototype.refreshAriaSort = function () {
36867 if (this.sortable) {
36868 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
36869 this.comp.setAriaSort(Object(_utils_aria__WEBPACK_IMPORTED_MODULE_6__["getAriaSortState"])(this.column));
36870 this.setAriaDescriptionProperty('sort', translate('ariaSortableColumn', 'Press ENTER to sort.'));
36871 }
36872 else {
36873 this.comp.setAriaSort();
36874 this.setAriaDescriptionProperty('sort', null);
36875 }
36876 };
36877 HeaderCellCtrl.prototype.refreshAriaMenu = function () {
36878 if (this.menuEnabled) {
36879 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
36880 this.setAriaDescriptionProperty('menu', translate('ariaMenuColumn', 'Press CTRL ENTER to open column menu.'));
36881 }
36882 else {
36883 this.setAriaDescriptionProperty('menu', null);
36884 }
36885 };
36886 HeaderCellCtrl.prototype.setAriaDescriptionProperty = function (property, value) {
36887 if (value != null) {
36888 this.ariaDescriptionProperties.set(property, value);
36889 }
36890 else {
36891 this.ariaDescriptionProperties.delete(property);
36892 }
36893 };
36894 HeaderCellCtrl.prototype.refreshAriaDescription = function () {
36895 var descriptionArray = Array.from(this.ariaDescriptionProperties.values());
36896 this.comp.setAriaDescription(descriptionArray.length ? descriptionArray.join(' ') : undefined);
36897 };
36898 HeaderCellCtrl.prototype.refreshAria = function () {
36899 this.refreshAriaSort();
36900 this.refreshAriaMenu();
36901 this.refreshAriaDescription();
36902 };
36903 HeaderCellCtrl.prototype.addColumnHoverListener = function () {
36904 var _this = this;
36905 var listener = function () {
36906 if (!_this.gridOptionsWrapper.isColumnHoverHighlight()) {
36907 return;
36908 }
36909 var isHovered = _this.columnHoverService.isHovered(_this.column);
36910 _this.comp.addOrRemoveCssClass('ag-column-hover', isHovered);
36911 };
36912 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_COLUMN_HOVER_CHANGED, listener);
36913 listener();
36914 };
36915 HeaderCellCtrl.prototype.setupFilterCss = function () {
36916 var _this = this;
36917 var listener = function () {
36918 _this.comp.addOrRemoveCssClass('ag-header-cell-filtered', _this.column.isFilterActive());
36919 };
36920 this.addManagedListener(this.column, _entities_column__WEBPACK_IMPORTED_MODULE_3__["Column"].EVENT_FILTER_ACTIVE_CHANGED, listener);
36921 listener();
36922 };
36923 HeaderCellCtrl.prototype.setupColId = function () {
36924 this.comp.setColId(this.column.getColId());
36925 };
36926 HeaderCellCtrl.prototype.addActiveHeaderMouseListeners = function () {
36927 var _this = this;
36928 var listener = function (e) { return _this.setActiveHeader(e.type === 'mouseenter'); };
36929 this.addManagedListener(this.getGui(), 'mouseenter', listener);
36930 this.addManagedListener(this.getGui(), 'mouseleave', listener);
36931 };
36932 HeaderCellCtrl.prototype.setActiveHeader = function (active) {
36933 this.comp.addOrRemoveCssClass('ag-header-active', active);
36934 };
36935 __decorate([
36936 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
36937 ], HeaderCellCtrl.prototype, "columnModel", void 0);
36938 __decorate([
36939 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnHoverService')
36940 ], HeaderCellCtrl.prototype, "columnHoverService", void 0);
36941 __decorate([
36942 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('beans')
36943 ], HeaderCellCtrl.prototype, "beans", void 0);
36944 __decorate([
36945 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('sortController')
36946 ], HeaderCellCtrl.prototype, "sortController", void 0);
36947 __decorate([
36948 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('menuFactory')
36949 ], HeaderCellCtrl.prototype, "menuFactory", void 0);
36950 __decorate([
36951 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('dragAndDropService')
36952 ], HeaderCellCtrl.prototype, "dragAndDropService", void 0);
36953 __decorate([
36954 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridApi')
36955 ], HeaderCellCtrl.prototype, "gridApi", void 0);
36956 __decorate([
36957 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnApi')
36958 ], HeaderCellCtrl.prototype, "columnApi", void 0);
36959 __decorate([
36960 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('userComponentFactory')
36961 ], HeaderCellCtrl.prototype, "userComponentFactory", void 0);
36962 __decorate([
36963 _context_context__WEBPACK_IMPORTED_MODULE_1__["PreDestroy"]
36964 ], HeaderCellCtrl.prototype, "removeDragSource", null);
36965 return HeaderCellCtrl;
36966}(_abstractCell_abstractHeaderCellCtrl__WEBPACK_IMPORTED_MODULE_9__["AbstractHeaderCellCtrl"]));
36967
36968
36969
36970
36971
36972/***/ }),
36973/* 161 */
36974/***/ (function(module, __webpack_exports__, __webpack_require__) {
36975
36976"use strict";
36977__webpack_require__.r(__webpack_exports__);
36978/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ResizeFeature", function() { return ResizeFeature; });
36979/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
36980/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
36981/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
36982/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42);
36983/* harmony import */ var _widgets_touchListener__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(82);
36984/**
36985 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
36986 * @version v27.3.0
36987 * @link https://www.ag-grid.com/
36988 * @license MIT
36989 */
36990var __extends = (undefined && undefined.__extends) || (function () {
36991 var extendStatics = function (d, b) {
36992 extendStatics = Object.setPrototypeOf ||
36993 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
36994 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
36995 return extendStatics(d, b);
36996 };
36997 return function (d, b) {
36998 extendStatics(d, b);
36999 function __() { this.constructor = d; }
37000 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
37001 };
37002})();
37003var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
37004 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
37005 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
37006 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
37007 return c > 3 && r && Object.defineProperty(target, key, r), r;
37008};
37009
37010
37011
37012
37013
37014var ResizeFeature = /** @class */ (function (_super) {
37015 __extends(ResizeFeature, _super);
37016 function ResizeFeature(pinned, column, eResize, comp, ctrl) {
37017 var _this = _super.call(this) || this;
37018 _this.pinned = pinned;
37019 _this.column = column;
37020 _this.eResize = eResize;
37021 _this.comp = comp;
37022 _this.ctrl = ctrl;
37023 return _this;
37024 }
37025 ResizeFeature.prototype.postConstruct = function () {
37026 var _this = this;
37027 var colDef = this.column.getColDef();
37028 var destroyResizeFuncs = [];
37029 var canResize;
37030 var canAutosize;
37031 var addResize = function () {
37032 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["setDisplayed"])(_this.eResize, canResize);
37033 if (!canResize) {
37034 return;
37035 }
37036 var finishedWithResizeFunc = _this.horizontalResizeService.addResizeBar({
37037 eResizeBar: _this.eResize,
37038 onResizeStart: _this.onResizeStart.bind(_this),
37039 onResizing: _this.onResizing.bind(_this, false),
37040 onResizeEnd: _this.onResizing.bind(_this, true)
37041 });
37042 destroyResizeFuncs.push(finishedWithResizeFunc);
37043 if (canAutosize) {
37044 var skipHeaderOnAutoSize_1 = _this.gridOptionsWrapper.isSkipHeaderOnAutoSize();
37045 var autoSizeColListener_1 = function () {
37046 _this.columnModel.autoSizeColumn(_this.column, skipHeaderOnAutoSize_1, "uiColumnResized");
37047 };
37048 _this.eResize.addEventListener('dblclick', autoSizeColListener_1);
37049 var touchListener_1 = new _widgets_touchListener__WEBPACK_IMPORTED_MODULE_4__["TouchListener"](_this.eResize);
37050 touchListener_1.addEventListener(_widgets_touchListener__WEBPACK_IMPORTED_MODULE_4__["TouchListener"].EVENT_DOUBLE_TAP, autoSizeColListener_1);
37051 _this.addDestroyFunc(function () {
37052 _this.eResize.removeEventListener('dblclick', autoSizeColListener_1);
37053 touchListener_1.removeEventListener(_widgets_touchListener__WEBPACK_IMPORTED_MODULE_4__["TouchListener"].EVENT_DOUBLE_TAP, autoSizeColListener_1);
37054 touchListener_1.destroy();
37055 });
37056 }
37057 };
37058 var removeResize = function () {
37059 destroyResizeFuncs.forEach(function (f) { return f(); });
37060 destroyResizeFuncs.length = 0;
37061 };
37062 var refresh = function () {
37063 var resize = _this.column.isResizable();
37064 var autoSize = !_this.gridOptionsWrapper.isSuppressAutoSize() && !colDef.suppressAutoSize;
37065 var propertyChange = resize !== canResize || autoSize !== canAutosize;
37066 if (propertyChange) {
37067 canResize = resize;
37068 canAutosize = autoSize;
37069 removeResize();
37070 addResize();
37071 }
37072 };
37073 refresh();
37074 this.addDestroyFunc(removeResize);
37075 this.ctrl.addRefreshFunction(refresh);
37076 };
37077 ResizeFeature.prototype.onResizing = function (finished, resizeAmount) {
37078 var resizeAmountNormalised = this.normaliseResizeAmount(resizeAmount);
37079 var columnWidths = [{ key: this.column, newWidth: this.resizeStartWidth + resizeAmountNormalised }];
37080 this.columnModel.setColumnWidths(columnWidths, this.resizeWithShiftKey, finished, "uiColumnDragged");
37081 if (finished) {
37082 this.comp.addOrRemoveCssClass('ag-column-resizing', false);
37083 }
37084 };
37085 ResizeFeature.prototype.onResizeStart = function (shiftKey) {
37086 this.resizeStartWidth = this.column.getActualWidth();
37087 this.resizeWithShiftKey = shiftKey;
37088 this.comp.addOrRemoveCssClass('ag-column-resizing', true);
37089 };
37090 // optionally inverts the drag, depending on pinned and RTL
37091 // note - this method is duplicated in RenderedHeaderGroupCell - should refactor out?
37092 ResizeFeature.prototype.normaliseResizeAmount = function (dragChange) {
37093 var result = dragChange;
37094 var notPinningLeft = this.pinned !== _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_LEFT;
37095 var pinningRight = this.pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_RIGHT;
37096 if (this.gridOptionsWrapper.isEnableRtl()) {
37097 // for RTL, dragging left makes the col bigger, except when pinning left
37098 if (notPinningLeft) {
37099 result *= -1;
37100 }
37101 }
37102 else {
37103 // for LTR (ie normal), dragging left makes the col smaller, except when pinning right
37104 if (pinningRight) {
37105 result *= -1;
37106 }
37107 }
37108 return result;
37109 };
37110 __decorate([
37111 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('horizontalResizeService')
37112 ], ResizeFeature.prototype, "horizontalResizeService", void 0);
37113 __decorate([
37114 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('columnModel')
37115 ], ResizeFeature.prototype, "columnModel", void 0);
37116 __decorate([
37117 _context_context__WEBPACK_IMPORTED_MODULE_2__["PostConstruct"]
37118 ], ResizeFeature.prototype, "postConstruct", null);
37119 return ResizeFeature;
37120}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
37121
37122
37123
37124
37125
37126/***/ }),
37127/* 162 */
37128/***/ (function(module, __webpack_exports__, __webpack_require__) {
37129
37130"use strict";
37131__webpack_require__.r(__webpack_exports__);
37132/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SelectAllFeature", function() { return SelectAllFeature; });
37133/* harmony import */ var _widgets_agCheckbox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(163);
37134/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
37135/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
37136/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(23);
37137/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(15);
37138/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(44);
37139/**
37140 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
37141 * @version v27.3.0
37142 * @link https://www.ag-grid.com/
37143 * @license MIT
37144 */
37145var __extends = (undefined && undefined.__extends) || (function () {
37146 var extendStatics = function (d, b) {
37147 extendStatics = Object.setPrototypeOf ||
37148 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
37149 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
37150 return extendStatics(d, b);
37151 };
37152 return function (d, b) {
37153 extendStatics(d, b);
37154 function __() { this.constructor = d; }
37155 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
37156 };
37157})();
37158var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
37159 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
37160 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
37161 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
37162 return c > 3 && r && Object.defineProperty(target, key, r), r;
37163};
37164
37165
37166
37167
37168
37169
37170var SelectAllFeature = /** @class */ (function (_super) {
37171 __extends(SelectAllFeature, _super);
37172 function SelectAllFeature(column) {
37173 var _this = _super.call(this) || this;
37174 _this.cbSelectAllVisible = false;
37175 _this.processingEventFromCheckbox = false;
37176 _this.column = column;
37177 var colDef = column.getColDef();
37178 _this.filteredOnly = colDef ? !!colDef.headerCheckboxSelectionFilteredOnly : false;
37179 return _this;
37180 }
37181 SelectAllFeature.prototype.onSpaceKeyPressed = function (e) {
37182 var checkbox = this.cbSelectAll;
37183 var eDocument = this.gridOptionsWrapper.getDocument();
37184 if (checkbox.isDisplayed() && !checkbox.getGui().contains(eDocument.activeElement)) {
37185 e.preventDefault();
37186 checkbox.setValue(!checkbox.getValue());
37187 }
37188 };
37189 SelectAllFeature.prototype.getCheckboxGui = function () {
37190 return this.cbSelectAll.getGui();
37191 };
37192 SelectAllFeature.prototype.setComp = function (ctrl) {
37193 this.headerCellCtrl = ctrl;
37194 this.cbSelectAll = this.createManagedBean(new _widgets_agCheckbox__WEBPACK_IMPORTED_MODULE_0__["AgCheckbox"]());
37195 this.cbSelectAll.addCssClass('ag-header-select-all');
37196 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_5__["setAriaRole"])(this.cbSelectAll.getGui(), 'presentation');
37197 this.showOrHideSelectAll();
37198 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_NEW_COLUMNS_LOADED, this.showOrHideSelectAll.bind(this));
37199 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED, this.showOrHideSelectAll.bind(this));
37200 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_SELECTION_CHANGED, this.onSelectionChanged.bind(this));
37201 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_MODEL_UPDATED, this.onModelChanged.bind(this));
37202 this.addManagedListener(this.cbSelectAll, _widgets_agCheckbox__WEBPACK_IMPORTED_MODULE_0__["AgCheckbox"].EVENT_CHANGED, this.onCbSelectAll.bind(this));
37203 this.cbSelectAll.getInputElement().setAttribute('tabindex', '-1');
37204 this.refreshSelectAllLabel();
37205 };
37206 SelectAllFeature.prototype.showOrHideSelectAll = function () {
37207 this.cbSelectAllVisible = this.isCheckboxSelection();
37208 this.cbSelectAll.setDisplayed(this.cbSelectAllVisible);
37209 if (this.cbSelectAllVisible) {
37210 // in case user is trying this feature with the wrong model type
37211 this.checkRightRowModelType();
37212 // make sure checkbox is showing the right state
37213 this.updateStateOfCheckbox();
37214 }
37215 this.refreshSelectAllLabel();
37216 };
37217 SelectAllFeature.prototype.onModelChanged = function () {
37218 if (!this.cbSelectAllVisible) {
37219 return;
37220 }
37221 this.updateStateOfCheckbox();
37222 };
37223 SelectAllFeature.prototype.onSelectionChanged = function () {
37224 if (!this.cbSelectAllVisible) {
37225 return;
37226 }
37227 this.updateStateOfCheckbox();
37228 };
37229 SelectAllFeature.prototype.getNextCheckboxState = function (selectionCount) {
37230 // if no rows, always have it unselected
37231 if (selectionCount.selected === 0 && selectionCount.notSelected === 0) {
37232 return false;
37233 }
37234 // if mix of selected and unselected, this is the tri-state
37235 if (selectionCount.selected > 0 && selectionCount.notSelected > 0) {
37236 return null;
37237 }
37238 // only selected
37239 if (selectionCount.selected > 0) {
37240 return true;
37241 }
37242 // nothing selected
37243 return false;
37244 };
37245 SelectAllFeature.prototype.updateStateOfCheckbox = function () {
37246 if (this.processingEventFromCheckbox) {
37247 return;
37248 }
37249 this.processingEventFromCheckbox = true;
37250 var selectionCount = this.getSelectionCount();
37251 var allSelected = this.getNextCheckboxState(selectionCount);
37252 this.cbSelectAll.setValue(allSelected);
37253 this.refreshSelectAllLabel();
37254 this.processingEventFromCheckbox = false;
37255 };
37256 SelectAllFeature.prototype.refreshSelectAllLabel = function () {
37257 if (!this.cbSelectAllVisible) {
37258 this.headerCellCtrl.setAriaDescriptionProperty('selectAll', null);
37259 }
37260 else {
37261 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
37262 var checked = this.cbSelectAll.getValue();
37263 var ariaStatus = checked ? translate('ariaChecked', 'checked') : translate('ariaUnchecked', 'unchecked');
37264 var ariaLabel = translate('ariaRowSelectAll', 'Press Space to toggle all rows selection');
37265 this.headerCellCtrl.setAriaDescriptionProperty('selectAll', ariaLabel + " (" + ariaStatus + ")");
37266 }
37267 this.headerCellCtrl.refreshAriaDescription();
37268 };
37269 SelectAllFeature.prototype.getSelectionCount = function () {
37270 var _this = this;
37271 var selectedCount = 0;
37272 var notSelectedCount = 0;
37273 var callback = function (node) {
37274 if (_this.gridOptionsWrapper.isGroupSelectsChildren() && node.group) {
37275 return;
37276 }
37277 if (node.isSelected()) {
37278 selectedCount++;
37279 }
37280 else if (!node.selectable) {
37281 // don't count non-selectable nodes!
37282 }
37283 else {
37284 notSelectedCount++;
37285 }
37286 };
37287 if (this.filteredOnly) {
37288 this.gridApi.forEachNodeAfterFilter(callback);
37289 }
37290 else {
37291 this.gridApi.forEachNode(callback);
37292 }
37293 return {
37294 notSelected: notSelectedCount,
37295 selected: selectedCount
37296 };
37297 };
37298 SelectAllFeature.prototype.checkRightRowModelType = function () {
37299 var rowModelType = this.rowModel.getType();
37300 var rowModelMatches = rowModelType === _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE;
37301 if (!rowModelMatches) {
37302 console.warn("AG Grid: selectAllCheckbox is only available if using normal row model, you are using " + rowModelType);
37303 }
37304 };
37305 SelectAllFeature.prototype.onCbSelectAll = function () {
37306 if (this.processingEventFromCheckbox) {
37307 return;
37308 }
37309 if (!this.cbSelectAllVisible) {
37310 return;
37311 }
37312 var value = this.cbSelectAll.getValue();
37313 if (value) {
37314 this.selectionService.selectAllRowNodes(this.filteredOnly);
37315 }
37316 else {
37317 this.selectionService.deselectAllRowNodes(this.filteredOnly);
37318 }
37319 };
37320 SelectAllFeature.prototype.isCheckboxSelection = function () {
37321 var result = this.column.getColDef().headerCheckboxSelection;
37322 if (typeof result === 'function') {
37323 var func = result;
37324 var params = {
37325 column: this.column,
37326 colDef: this.column.getColDef(),
37327 columnApi: this.columnApi,
37328 api: this.gridApi,
37329 context: this.gridOptionsWrapper.getContext()
37330 };
37331 result = func(params);
37332 }
37333 if (result) {
37334 if (this.gridOptionsWrapper.isRowModelServerSide()) {
37335 console.warn('AG Grid: headerCheckboxSelection is not supported for Server Side Row Model');
37336 return false;
37337 }
37338 if (this.gridOptionsWrapper.isRowModelInfinite()) {
37339 console.warn('AG Grid: headerCheckboxSelection is not supported for Infinite Row Model');
37340 return false;
37341 }
37342 if (this.gridOptionsWrapper.isRowModelViewport()) {
37343 console.warn('AG Grid: headerCheckboxSelection is not supported for Viewport Row Model');
37344 return false;
37345 }
37346 // otherwise the row model is compatible, so return true
37347 return true;
37348 }
37349 return false;
37350 };
37351 __decorate([
37352 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('gridApi')
37353 ], SelectAllFeature.prototype, "gridApi", void 0);
37354 __decorate([
37355 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('columnApi')
37356 ], SelectAllFeature.prototype, "columnApi", void 0);
37357 __decorate([
37358 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('rowModel')
37359 ], SelectAllFeature.prototype, "rowModel", void 0);
37360 __decorate([
37361 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('selectionService')
37362 ], SelectAllFeature.prototype, "selectionService", void 0);
37363 return SelectAllFeature;
37364}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
37365
37366
37367
37368
37369
37370/***/ }),
37371/* 163 */
37372/***/ (function(module, __webpack_exports__, __webpack_require__) {
37373
37374"use strict";
37375__webpack_require__.r(__webpack_exports__);
37376/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgCheckbox", function() { return AgCheckbox; });
37377/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(23);
37378/* harmony import */ var _agAbstractInputField__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(71);
37379/**
37380 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
37381 * @version v27.3.0
37382 * @link https://www.ag-grid.com/
37383 * @license MIT
37384 */
37385var __extends = (undefined && undefined.__extends) || (function () {
37386 var extendStatics = function (d, b) {
37387 extendStatics = Object.setPrototypeOf ||
37388 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
37389 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
37390 return extendStatics(d, b);
37391 };
37392 return function (d, b) {
37393 extendStatics(d, b);
37394 function __() { this.constructor = d; }
37395 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
37396 };
37397})();
37398
37399
37400var AgCheckbox = /** @class */ (function (_super) {
37401 __extends(AgCheckbox, _super);
37402 function AgCheckbox(config, className, inputType) {
37403 if (className === void 0) { className = 'ag-checkbox'; }
37404 if (inputType === void 0) { inputType = 'checkbox'; }
37405 var _this = _super.call(this, config, className, inputType) || this;
37406 _this.labelAlignment = 'right';
37407 _this.selected = false;
37408 _this.readOnly = false;
37409 _this.passive = false;
37410 return _this;
37411 }
37412 AgCheckbox.prototype.addInputListeners = function () {
37413 this.addManagedListener(this.eInput, 'click', this.onCheckboxClick.bind(this));
37414 this.addManagedListener(this.eLabel, 'click', this.toggle.bind(this));
37415 };
37416 AgCheckbox.prototype.getNextValue = function () {
37417 return this.selected === undefined ? true : !this.selected;
37418 };
37419 AgCheckbox.prototype.setPassive = function (passive) {
37420 this.passive = passive;
37421 };
37422 AgCheckbox.prototype.isReadOnly = function () {
37423 return this.readOnly;
37424 };
37425 AgCheckbox.prototype.setReadOnly = function (readOnly) {
37426 this.eWrapper.classList.toggle('ag-disabled', readOnly);
37427 this.eInput.disabled = readOnly;
37428 this.readOnly = readOnly;
37429 };
37430 AgCheckbox.prototype.setDisabled = function (disabled) {
37431 this.eWrapper.classList.toggle('ag-disabled', disabled);
37432 return _super.prototype.setDisabled.call(this, disabled);
37433 };
37434 AgCheckbox.prototype.toggle = function () {
37435 if (this.eInput.disabled) {
37436 return;
37437 }
37438 var previousValue = this.isSelected();
37439 var nextValue = this.getNextValue();
37440 if (this.passive) {
37441 this.dispatchChange(nextValue, previousValue);
37442 }
37443 else {
37444 this.setValue(nextValue);
37445 }
37446 };
37447 AgCheckbox.prototype.getValue = function () {
37448 return this.isSelected();
37449 };
37450 AgCheckbox.prototype.setValue = function (value, silent) {
37451 this.refreshSelectedClass(value);
37452 this.setSelected(value, silent);
37453 return this;
37454 };
37455 AgCheckbox.prototype.setName = function (name) {
37456 var input = this.getInputElement();
37457 input.name = name;
37458 return this;
37459 };
37460 AgCheckbox.prototype.isSelected = function () {
37461 return this.selected;
37462 };
37463 AgCheckbox.prototype.setSelected = function (selected, silent) {
37464 if (this.isSelected() === selected) {
37465 return;
37466 }
37467 this.previousValue = this.isSelected();
37468 selected = this.selected = typeof selected === 'boolean' ? selected : undefined;
37469 this.eInput.checked = selected;
37470 this.eInput.indeterminate = selected === undefined;
37471 if (!silent) {
37472 this.dispatchChange(this.selected, this.previousValue);
37473 }
37474 };
37475 AgCheckbox.prototype.dispatchChange = function (selected, previousValue, event) {
37476 this.dispatchEvent({ type: AgCheckbox.EVENT_CHANGED, selected: selected, previousValue: previousValue, event: event });
37477 var input = this.getInputElement();
37478 var checkboxChangedEvent = {
37479 type: _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_CHECKBOX_CHANGED,
37480 id: input.id,
37481 name: input.name,
37482 selected: selected,
37483 previousValue: previousValue
37484 };
37485 this.eventService.dispatchEvent(checkboxChangedEvent);
37486 };
37487 AgCheckbox.prototype.onCheckboxClick = function (e) {
37488 if (this.passive || this.eInput.disabled) {
37489 return;
37490 }
37491 var previousValue = this.isSelected();
37492 var selected = this.selected = e.target.checked;
37493 this.refreshSelectedClass(selected);
37494 this.dispatchChange(selected, previousValue, e);
37495 };
37496 AgCheckbox.prototype.refreshSelectedClass = function (value) {
37497 this.eWrapper.classList.toggle('ag-checked', value === true);
37498 this.eWrapper.classList.toggle('ag-indeterminate', value == null);
37499 };
37500 return AgCheckbox;
37501}(_agAbstractInputField__WEBPACK_IMPORTED_MODULE_1__["AgAbstractInputField"]));
37502
37503
37504
37505
37506
37507/***/ }),
37508/* 164 */
37509/***/ (function(module, __webpack_exports__, __webpack_require__) {
37510
37511"use strict";
37512__webpack_require__.r(__webpack_exports__);
37513/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderGroupCellCtrl", function() { return HeaderGroupCellCtrl; });
37514/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65);
37515/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
37516/* harmony import */ var _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(97);
37517/* harmony import */ var _entities_column__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(10);
37518/* harmony import */ var _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(8);
37519/* harmony import */ var _rendering_features_setLeftFeature__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(158);
37520/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(18);
37521/* harmony import */ var _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(64);
37522/* harmony import */ var _widgets_tooltipFeature__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(126);
37523/* harmony import */ var _abstractCell_abstractHeaderCellCtrl__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(155);
37524/* harmony import */ var _cssClassApplier__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(147);
37525/* harmony import */ var _hoverFeature__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(159);
37526/* harmony import */ var _groupResizeFeature__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(165);
37527/* harmony import */ var _groupWidthFeature__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(166);
37528/**
37529 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
37530 * @version v27.3.0
37531 * @link https://www.ag-grid.com/
37532 * @license MIT
37533 */
37534var __extends = (undefined && undefined.__extends) || (function () {
37535 var extendStatics = function (d, b) {
37536 extendStatics = Object.setPrototypeOf ||
37537 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
37538 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
37539 return extendStatics(d, b);
37540 };
37541 return function (d, b) {
37542 extendStatics(d, b);
37543 function __() { this.constructor = d; }
37544 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
37545 };
37546})();
37547var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
37548 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
37549 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
37550 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
37551 return c > 3 && r && Object.defineProperty(target, key, r), r;
37552};
37553
37554
37555
37556
37557
37558
37559
37560
37561
37562
37563
37564
37565
37566
37567var HeaderGroupCellCtrl = /** @class */ (function (_super) {
37568 __extends(HeaderGroupCellCtrl, _super);
37569 function HeaderGroupCellCtrl(columnGroup, parentRowCtrl) {
37570 var _this = _super.call(this, columnGroup, parentRowCtrl) || this;
37571 _this.columnGroup = columnGroup;
37572 return _this;
37573 }
37574 HeaderGroupCellCtrl.prototype.setComp = function (comp, eGui, eResize) {
37575 _super.prototype.setGui.call(this, eGui);
37576 this.comp = comp;
37577 this.displayName = this.columnModel.getDisplayNameForColumnGroup(this.columnGroup, 'header');
37578 this.addClasses();
37579 this.addAttributes();
37580 this.setupMovingCss();
37581 this.setupExpandable();
37582 this.setupTooltip();
37583 this.setupUserComp();
37584 var pinned = this.getParentRowCtrl().getPinned();
37585 var leafCols = this.columnGroup.getProvidedColumnGroup().getLeafColumns();
37586 this.createManagedBean(new _hoverFeature__WEBPACK_IMPORTED_MODULE_11__["HoverFeature"](leafCols, eGui));
37587 this.createManagedBean(new _rendering_features_setLeftFeature__WEBPACK_IMPORTED_MODULE_5__["SetLeftFeature"](this.columnGroup, eGui, this.beans));
37588 this.createManagedBean(new _groupWidthFeature__WEBPACK_IMPORTED_MODULE_13__["GroupWidthFeature"](comp, this.columnGroup));
37589 this.groupResizeFeature = this.createManagedBean(new _groupResizeFeature__WEBPACK_IMPORTED_MODULE_12__["GroupResizeFeature"](comp, eResize, pinned, this.columnGroup));
37590 this.createManagedBean(new _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_7__["ManagedFocusFeature"](eGui, {
37591 shouldStopEventPropagation: this.shouldStopEventPropagation.bind(this),
37592 onTabKeyDown: function () { return undefined; },
37593 handleKeyDown: this.handleKeyDown.bind(this),
37594 onFocusIn: this.onFocusIn.bind(this)
37595 }));
37596 };
37597 HeaderGroupCellCtrl.prototype.resizeLeafColumnsToFit = function () {
37598 this.groupResizeFeature.onResizeStart(false);
37599 this.groupResizeFeature.resizeLeafColumnsToFit();
37600 };
37601 HeaderGroupCellCtrl.prototype.setupUserComp = function () {
37602 var _this = this;
37603 var displayName = this.displayName;
37604 var params = {
37605 displayName: this.displayName,
37606 columnGroup: this.columnGroup,
37607 setExpanded: function (expanded) {
37608 _this.columnModel.setColumnGroupOpened(_this.columnGroup.getProvidedColumnGroup(), expanded, "gridInitializing");
37609 },
37610 api: this.gridApi,
37611 columnApi: this.columnApi,
37612 context: this.gridOptionsWrapper.getContext()
37613 };
37614 if (!displayName) {
37615 var columnGroup = this.columnGroup;
37616 var leafCols = columnGroup.getLeafColumns();
37617 // find the top most column group that represents the same columns. so if we are dragging a group, we also
37618 // want to visually show the parent groups dragging for the same column set. for example imaging 5 levels
37619 // of grouping, with each group only containing the next group, and the last group containing three columns,
37620 // then when you move any group (even the lowest level group) you are in-fact moving all the groups, as all
37621 // the groups represent the same column set.
37622 while (columnGroup.getParent() && columnGroup.getParent().getLeafColumns().length === leafCols.length) {
37623 columnGroup = columnGroup.getParent();
37624 }
37625 var colGroupDef = columnGroup.getColGroupDef();
37626 if (colGroupDef) {
37627 displayName = colGroupDef.headerName;
37628 }
37629 if (!displayName) {
37630 displayName = leafCols ? this.columnModel.getDisplayNameForColumn(leafCols[0], 'header', true) : '';
37631 }
37632 }
37633 var compDetails = this.userComponentFactory.getHeaderGroupCompDetails(params);
37634 this.comp.setUserCompDetails(compDetails);
37635 };
37636 HeaderGroupCellCtrl.prototype.setupTooltip = function () {
37637 var _this = this;
37638 var colGroupDef = this.columnGroup.getColGroupDef();
37639 var tooltipCtrl = {
37640 getColumn: function () { return _this.columnGroup; },
37641 getGui: function () { return _this.eGui; },
37642 getLocation: function () { return 'headerGroup'; },
37643 getTooltipValue: function () { return colGroupDef && colGroupDef.headerTooltip; }
37644 };
37645 if (colGroupDef) {
37646 tooltipCtrl.getColDef = function () { return colGroupDef; };
37647 }
37648 var tooltipFeature = this.createManagedBean(new _widgets_tooltipFeature__WEBPACK_IMPORTED_MODULE_8__["TooltipFeature"](tooltipCtrl, this.beans));
37649 tooltipFeature.setComp(this.comp);
37650 };
37651 HeaderGroupCellCtrl.prototype.setupExpandable = function () {
37652 var providedColGroup = this.columnGroup.getProvidedColumnGroup();
37653 this.refreshExpanded();
37654 this.addManagedListener(providedColGroup, _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_4__["ProvidedColumnGroup"].EVENT_EXPANDABLE_CHANGED, this.refreshExpanded.bind(this));
37655 this.addManagedListener(providedColGroup, _entities_providedColumnGroup__WEBPACK_IMPORTED_MODULE_4__["ProvidedColumnGroup"].EVENT_EXPANDED_CHANGED, this.refreshExpanded.bind(this));
37656 };
37657 HeaderGroupCellCtrl.prototype.refreshExpanded = function () {
37658 var column = this.columnGroup;
37659 this.expandable = column.isExpandable();
37660 var expanded = column.isExpanded();
37661 if (this.expandable) {
37662 this.comp.setAriaExpanded(expanded ? 'true' : 'false');
37663 }
37664 else {
37665 this.comp.setAriaExpanded(undefined);
37666 }
37667 };
37668 HeaderGroupCellCtrl.prototype.addAttributes = function () {
37669 this.comp.setColId(this.columnGroup.getUniqueId());
37670 };
37671 HeaderGroupCellCtrl.prototype.addClasses = function () {
37672 var _this = this;
37673 var colGroupDef = this.columnGroup.getColGroupDef();
37674 var classes = _cssClassApplier__WEBPACK_IMPORTED_MODULE_10__["CssClassApplier"].getHeaderClassesFromColDef(colGroupDef, this.gridOptionsWrapper, null, this.columnGroup);
37675 // having different classes below allows the style to not have a bottom border
37676 // on the group header, if no group is specified
37677 classes.push(this.columnGroup.isPadding() ? "ag-header-group-cell-no-group" : "ag-header-group-cell-with-group");
37678 classes.forEach(function (c) { return _this.comp.addOrRemoveCssClass(c, true); });
37679 };
37680 HeaderGroupCellCtrl.prototype.setupMovingCss = function () {
37681 var _this = this;
37682 var providedColumnGroup = this.columnGroup.getProvidedColumnGroup();
37683 var leafColumns = providedColumnGroup.getLeafColumns();
37684 // this function adds or removes the moving css, based on if the col is moving.
37685 // this is what makes the header go dark when it is been moved (gives impression to
37686 // user that the column was picked up).
37687 var listener = function () { return _this.comp.addOrRemoveCssClass('ag-header-cell-moving', _this.columnGroup.isMoving()); };
37688 leafColumns.forEach(function (col) {
37689 _this.addManagedListener(col, _entities_column__WEBPACK_IMPORTED_MODULE_3__["Column"].EVENT_MOVING_CHANGED, listener);
37690 });
37691 listener();
37692 };
37693 HeaderGroupCellCtrl.prototype.onFocusIn = function (e) {
37694 if (!this.eGui.contains(e.relatedTarget)) {
37695 var rowIndex = this.getRowIndex();
37696 this.beans.focusService.setFocusedHeader(rowIndex, this.columnGroup);
37697 }
37698 };
37699 HeaderGroupCellCtrl.prototype.handleKeyDown = function (e) {
37700 var eDocument = this.gridOptionsWrapper.getDocument();
37701 var activeEl = eDocument.activeElement;
37702 var wrapperHasFocus = activeEl === this.eGui;
37703 if (!this.expandable || !wrapperHasFocus) {
37704 return;
37705 }
37706 if (e.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_0__["KeyCode"].ENTER) {
37707 var column = this.columnGroup;
37708 var newExpandedValue = !column.isExpanded();
37709 this.columnModel.setColumnGroupOpened(column.getProvidedColumnGroup(), newExpandedValue, "uiColumnExpanded");
37710 }
37711 };
37712 // unlike columns, this will only get called once, as we don't react on props on column groups
37713 // (we will always destroy and recreate this comp if something changes)
37714 HeaderGroupCellCtrl.prototype.setDragSource = function (eHeaderGroup) {
37715 var _this = this;
37716 if (this.isSuppressMoving()) {
37717 return;
37718 }
37719 var allLeafColumns = this.columnGroup.getProvidedColumnGroup().getLeafColumns();
37720 var dragSource = {
37721 type: _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["DragSourceType"].HeaderCell,
37722 eElement: eHeaderGroup,
37723 defaultIconName: _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_2__["DragAndDropService"].ICON_HIDE,
37724 dragItemName: this.displayName,
37725 // we add in the original group leaf columns, so we move both visible and non-visible items
37726 getDragItem: this.getDragItemForGroup.bind(this),
37727 onDragStarted: function () { return allLeafColumns.forEach(function (col) { return col.setMoving(true, "uiColumnDragged"); }); },
37728 onDragStopped: function () { return allLeafColumns.forEach(function (col) { return col.setMoving(false, "uiColumnDragged"); }); }
37729 };
37730 this.dragAndDropService.addDragSource(dragSource, true);
37731 this.addDestroyFunc(function () { return _this.dragAndDropService.removeDragSource(dragSource); });
37732 };
37733 // when moving the columns, we want to move all the columns (contained within the DragItem) in this group in one go,
37734 // and in the order they are currently in the screen.
37735 HeaderGroupCellCtrl.prototype.getDragItemForGroup = function () {
37736 var allColumnsOriginalOrder = this.columnGroup.getProvidedColumnGroup().getLeafColumns();
37737 // capture visible state, used when re-entering grid to dictate which columns should be visible
37738 var visibleState = {};
37739 allColumnsOriginalOrder.forEach(function (column) { return visibleState[column.getId()] = column.isVisible(); });
37740 var allColumnsCurrentOrder = [];
37741 this.columnModel.getAllDisplayedColumns().forEach(function (column) {
37742 if (allColumnsOriginalOrder.indexOf(column) >= 0) {
37743 allColumnsCurrentOrder.push(column);
37744 Object(_utils_array__WEBPACK_IMPORTED_MODULE_6__["removeFromArray"])(allColumnsOriginalOrder, column);
37745 }
37746 });
37747 // we are left with non-visible columns, stick these in at the end
37748 allColumnsOriginalOrder.forEach(function (column) { return allColumnsCurrentOrder.push(column); });
37749 // create and return dragItem
37750 return {
37751 columns: allColumnsCurrentOrder,
37752 visibleState: visibleState
37753 };
37754 };
37755 HeaderGroupCellCtrl.prototype.isSuppressMoving = function () {
37756 // if any child is fixed, then don't allow moving
37757 var childSuppressesMoving = false;
37758 this.columnGroup.getLeafColumns().forEach(function (column) {
37759 if (column.getColDef().suppressMovable || column.getColDef().lockPosition) {
37760 childSuppressesMoving = true;
37761 }
37762 });
37763 var result = childSuppressesMoving || this.gridOptionsWrapper.isSuppressMovableColumns();
37764 return result;
37765 };
37766 __decorate([
37767 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('beans')
37768 ], HeaderGroupCellCtrl.prototype, "beans", void 0);
37769 __decorate([
37770 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
37771 ], HeaderGroupCellCtrl.prototype, "columnModel", void 0);
37772 __decorate([
37773 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('dragAndDropService')
37774 ], HeaderGroupCellCtrl.prototype, "dragAndDropService", void 0);
37775 __decorate([
37776 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('userComponentFactory')
37777 ], HeaderGroupCellCtrl.prototype, "userComponentFactory", void 0);
37778 __decorate([
37779 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridApi')
37780 ], HeaderGroupCellCtrl.prototype, "gridApi", void 0);
37781 __decorate([
37782 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnApi')
37783 ], HeaderGroupCellCtrl.prototype, "columnApi", void 0);
37784 return HeaderGroupCellCtrl;
37785}(_abstractCell_abstractHeaderCellCtrl__WEBPACK_IMPORTED_MODULE_9__["AbstractHeaderCellCtrl"]));
37786
37787
37788
37789
37790
37791/***/ }),
37792/* 165 */
37793/***/ (function(module, __webpack_exports__, __webpack_require__) {
37794
37795"use strict";
37796__webpack_require__.r(__webpack_exports__);
37797/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GroupResizeFeature", function() { return GroupResizeFeature; });
37798/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
37799/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
37800/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
37801/**
37802 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
37803 * @version v27.3.0
37804 * @link https://www.ag-grid.com/
37805 * @license MIT
37806 */
37807var __extends = (undefined && undefined.__extends) || (function () {
37808 var extendStatics = function (d, b) {
37809 extendStatics = Object.setPrototypeOf ||
37810 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
37811 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
37812 return extendStatics(d, b);
37813 };
37814 return function (d, b) {
37815 extendStatics(d, b);
37816 function __() { this.constructor = d; }
37817 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
37818 };
37819})();
37820var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
37821 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
37822 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
37823 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
37824 return c > 3 && r && Object.defineProperty(target, key, r), r;
37825};
37826
37827
37828
37829var GroupResizeFeature = /** @class */ (function (_super) {
37830 __extends(GroupResizeFeature, _super);
37831 function GroupResizeFeature(comp, eResize, pinned, columnGroup) {
37832 var _this = _super.call(this) || this;
37833 _this.eResize = eResize;
37834 _this.comp = comp;
37835 _this.pinned = pinned;
37836 _this.columnGroup = columnGroup;
37837 return _this;
37838 }
37839 GroupResizeFeature.prototype.postConstruct = function () {
37840 var _this = this;
37841 if (!this.columnGroup.isResizable()) {
37842 this.comp.addOrRemoveResizableCssClass('ag-hidden', true);
37843 return;
37844 }
37845 var finishedWithResizeFunc = this.horizontalResizeService.addResizeBar({
37846 eResizeBar: this.eResize,
37847 onResizeStart: this.onResizeStart.bind(this),
37848 onResizing: this.onResizing.bind(this, false),
37849 onResizeEnd: this.onResizing.bind(this, true)
37850 });
37851 this.addDestroyFunc(finishedWithResizeFunc);
37852 if (!this.gridOptionsWrapper.isSuppressAutoSize()) {
37853 var skipHeaderOnAutoSize_1 = this.gridOptionsWrapper.isSkipHeaderOnAutoSize();
37854 this.eResize.addEventListener('dblclick', function () {
37855 // get list of all the column keys we are responsible for
37856 var keys = [];
37857 var leafCols = _this.columnGroup.getDisplayedLeafColumns();
37858 leafCols.forEach(function (column) {
37859 // not all cols in the group may be participating with auto-resize
37860 if (!column.getColDef().suppressAutoSize) {
37861 keys.push(column.getColId());
37862 }
37863 });
37864 if (keys.length > 0) {
37865 _this.columnModel.autoSizeColumns({
37866 columns: keys,
37867 skipHeader: skipHeaderOnAutoSize_1,
37868 stopAtGroup: _this.columnGroup,
37869 source: 'uiColumnResized'
37870 });
37871 }
37872 _this.resizeLeafColumnsToFit();
37873 });
37874 }
37875 };
37876 GroupResizeFeature.prototype.onResizeStart = function (shiftKey) {
37877 var _this = this;
37878 this.calculateInitialValues();
37879 var takeFromGroup = null;
37880 if (shiftKey) {
37881 takeFromGroup = this.columnModel.getDisplayedGroupAfter(this.columnGroup);
37882 }
37883 if (takeFromGroup) {
37884 var takeFromLeafCols = takeFromGroup.getDisplayedLeafColumns();
37885 this.resizeTakeFromCols = takeFromLeafCols.filter(function (col) { return col.isResizable(); });
37886 this.resizeTakeFromStartWidth = 0;
37887 this.resizeTakeFromCols.forEach(function (col) { return _this.resizeTakeFromStartWidth += col.getActualWidth(); });
37888 this.resizeTakeFromRatios = [];
37889 this.resizeTakeFromCols.forEach(function (col) { return _this.resizeTakeFromRatios.push(col.getActualWidth() / _this.resizeTakeFromStartWidth); });
37890 }
37891 else {
37892 this.resizeTakeFromCols = null;
37893 this.resizeTakeFromStartWidth = null;
37894 this.resizeTakeFromRatios = null;
37895 }
37896 this.comp.addOrRemoveCssClass('ag-column-resizing', true);
37897 };
37898 GroupResizeFeature.prototype.onResizing = function (finished, resizeAmount) {
37899 var resizeAmountNormalised = this.normaliseDragChange(resizeAmount);
37900 var width = this.resizeStartWidth + resizeAmountNormalised;
37901 this.resizeColumns(width, finished);
37902 };
37903 GroupResizeFeature.prototype.resizeLeafColumnsToFit = function () {
37904 var preferredSize = this.autoWidthCalculator.getPreferredWidthForColumnGroup(this.columnGroup);
37905 this.calculateInitialValues();
37906 if (preferredSize > this.resizeStartWidth) {
37907 this.resizeColumns(preferredSize, true);
37908 }
37909 };
37910 GroupResizeFeature.prototype.resizeColumns = function (totalWidth, finished) {
37911 if (finished === void 0) { finished = true; }
37912 var resizeSets = [];
37913 resizeSets.push({
37914 columns: this.resizeCols,
37915 ratios: this.resizeRatios,
37916 width: totalWidth
37917 });
37918 if (this.resizeTakeFromCols) {
37919 var diff = totalWidth - this.resizeStartWidth;
37920 resizeSets.push({
37921 columns: this.resizeTakeFromCols,
37922 ratios: this.resizeTakeFromRatios,
37923 width: this.resizeTakeFromStartWidth - diff
37924 });
37925 }
37926 this.columnModel.resizeColumnSets({
37927 resizeSets: resizeSets,
37928 finished: finished,
37929 source: 'uiColumnDragged'
37930 });
37931 if (finished) {
37932 this.comp.addOrRemoveCssClass('ag-column-resizing', false);
37933 }
37934 };
37935 GroupResizeFeature.prototype.calculateInitialValues = function () {
37936 var _this = this;
37937 var leafCols = this.columnGroup.getDisplayedLeafColumns();
37938 this.resizeCols = leafCols.filter(function (col) { return col.isResizable(); });
37939 this.resizeStartWidth = 0;
37940 this.resizeCols.forEach(function (col) { return _this.resizeStartWidth += col.getActualWidth(); });
37941 this.resizeRatios = [];
37942 this.resizeCols.forEach(function (col) { return _this.resizeRatios.push(col.getActualWidth() / _this.resizeStartWidth); });
37943 };
37944 // optionally inverts the drag, depending on pinned and RTL
37945 // note - this method is duplicated in RenderedHeaderCell - should refactor out?
37946 GroupResizeFeature.prototype.normaliseDragChange = function (dragChange) {
37947 var result = dragChange;
37948 if (this.gridOptionsWrapper.isEnableRtl()) {
37949 // for RTL, dragging left makes the col bigger, except when pinning left
37950 if (this.pinned !== _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_LEFT) {
37951 result *= -1;
37952 }
37953 }
37954 else if (this.pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_RIGHT) {
37955 // for LTR (ie normal), dragging left makes the col smaller, except when pinning right
37956 result *= -1;
37957 }
37958 return result;
37959 };
37960 __decorate([
37961 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('horizontalResizeService')
37962 ], GroupResizeFeature.prototype, "horizontalResizeService", void 0);
37963 __decorate([
37964 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('autoWidthCalculator')
37965 ], GroupResizeFeature.prototype, "autoWidthCalculator", void 0);
37966 __decorate([
37967 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('columnModel')
37968 ], GroupResizeFeature.prototype, "columnModel", void 0);
37969 __decorate([
37970 _context_context__WEBPACK_IMPORTED_MODULE_2__["PostConstruct"]
37971 ], GroupResizeFeature.prototype, "postConstruct", null);
37972 return GroupResizeFeature;
37973}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
37974
37975
37976
37977
37978
37979/***/ }),
37980/* 166 */
37981/***/ (function(module, __webpack_exports__, __webpack_require__) {
37982
37983"use strict";
37984__webpack_require__.r(__webpack_exports__);
37985/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GroupWidthFeature", function() { return GroupWidthFeature; });
37986/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
37987/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
37988/* harmony import */ var _entities_column__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10);
37989/* harmony import */ var _entities_columnGroup__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(9);
37990/**
37991 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
37992 * @version v27.3.0
37993 * @link https://www.ag-grid.com/
37994 * @license MIT
37995 */
37996var __extends = (undefined && undefined.__extends) || (function () {
37997 var extendStatics = function (d, b) {
37998 extendStatics = Object.setPrototypeOf ||
37999 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
38000 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
38001 return extendStatics(d, b);
38002 };
38003 return function (d, b) {
38004 extendStatics(d, b);
38005 function __() { this.constructor = d; }
38006 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
38007 };
38008})();
38009var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
38010 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
38011 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
38012 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
38013 return c > 3 && r && Object.defineProperty(target, key, r), r;
38014};
38015
38016
38017
38018
38019var GroupWidthFeature = /** @class */ (function (_super) {
38020 __extends(GroupWidthFeature, _super);
38021 function GroupWidthFeature(comp, columnGroup) {
38022 var _this = _super.call(this) || this;
38023 // the children can change, we keep destroy functions related to listening to the children here
38024 _this.removeChildListenersFuncs = [];
38025 _this.columnGroup = columnGroup;
38026 _this.comp = comp;
38027 return _this;
38028 }
38029 GroupWidthFeature.prototype.postConstruct = function () {
38030 // we need to listen to changes in child columns, as they impact our width
38031 this.addListenersToChildrenColumns();
38032 // the children belonging to this group can change, so we need to add and remove listeners as they change
38033 this.addManagedListener(this.columnGroup, _entities_columnGroup__WEBPACK_IMPORTED_MODULE_3__["ColumnGroup"].EVENT_DISPLAYED_CHILDREN_CHANGED, this.onDisplayedChildrenChanged.bind(this));
38034 this.onWidthChanged();
38035 // the child listeners are not tied to this components life-cycle, as children can get added and removed
38036 // to the group - hence they are on a different life-cycle. so we must make sure the existing children
38037 // listeners are removed when we finally get destroyed
38038 this.addDestroyFunc(this.removeListenersOnChildrenColumns.bind(this));
38039 };
38040 GroupWidthFeature.prototype.addListenersToChildrenColumns = function () {
38041 var _this = this;
38042 // first destroy any old listeners
38043 this.removeListenersOnChildrenColumns();
38044 // now add new listeners to the new set of children
38045 var widthChangedListener = this.onWidthChanged.bind(this);
38046 this.columnGroup.getLeafColumns().forEach(function (column) {
38047 column.addEventListener(_entities_column__WEBPACK_IMPORTED_MODULE_2__["Column"].EVENT_WIDTH_CHANGED, widthChangedListener);
38048 column.addEventListener(_entities_column__WEBPACK_IMPORTED_MODULE_2__["Column"].EVENT_VISIBLE_CHANGED, widthChangedListener);
38049 _this.removeChildListenersFuncs.push(function () {
38050 column.removeEventListener(_entities_column__WEBPACK_IMPORTED_MODULE_2__["Column"].EVENT_WIDTH_CHANGED, widthChangedListener);
38051 column.removeEventListener(_entities_column__WEBPACK_IMPORTED_MODULE_2__["Column"].EVENT_VISIBLE_CHANGED, widthChangedListener);
38052 });
38053 });
38054 };
38055 GroupWidthFeature.prototype.removeListenersOnChildrenColumns = function () {
38056 this.removeChildListenersFuncs.forEach(function (func) { return func(); });
38057 this.removeChildListenersFuncs = [];
38058 };
38059 GroupWidthFeature.prototype.onDisplayedChildrenChanged = function () {
38060 this.addListenersToChildrenColumns();
38061 this.onWidthChanged();
38062 };
38063 GroupWidthFeature.prototype.onWidthChanged = function () {
38064 this.comp.setWidth(this.columnGroup.getActualWidth() + 'px');
38065 };
38066 __decorate([
38067 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
38068 ], GroupWidthFeature.prototype, "postConstruct", null);
38069 return GroupWidthFeature;
38070}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
38071
38072
38073
38074
38075
38076/***/ }),
38077/* 167 */
38078/***/ (function(module, __webpack_exports__, __webpack_require__) {
38079
38080"use strict";
38081__webpack_require__.r(__webpack_exports__);
38082/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GridHeaderComp", function() { return GridHeaderComp; });
38083/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
38084/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
38085/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(36);
38086/* harmony import */ var _gridHeaderCtrl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(168);
38087/* harmony import */ var _rowContainer_headerRowContainerComp__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(148);
38088/**
38089 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
38090 * @version v27.3.0
38091 * @link https://www.ag-grid.com/
38092 * @license MIT
38093 */
38094var __extends = (undefined && undefined.__extends) || (function () {
38095 var extendStatics = function (d, b) {
38096 extendStatics = Object.setPrototypeOf ||
38097 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
38098 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
38099 return extendStatics(d, b);
38100 };
38101 return function (d, b) {
38102 extendStatics(d, b);
38103 function __() { this.constructor = d; }
38104 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
38105 };
38106})();
38107var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
38108 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
38109 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
38110 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
38111 return c > 3 && r && Object.defineProperty(target, key, r), r;
38112};
38113
38114
38115
38116
38117
38118var GridHeaderComp = /** @class */ (function (_super) {
38119 __extends(GridHeaderComp, _super);
38120 function GridHeaderComp() {
38121 return _super.call(this, GridHeaderComp.TEMPLATE) || this;
38122 }
38123 GridHeaderComp.prototype.postConstruct = function () {
38124 var _this = this;
38125 var compProxy = {
38126 addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },
38127 setHeightAndMinHeight: function (height) {
38128 _this.getGui().style.height = height;
38129 _this.getGui().style.minHeight = height;
38130 }
38131 };
38132 var ctrl = this.createManagedBean(new _gridHeaderCtrl__WEBPACK_IMPORTED_MODULE_3__["GridHeaderCtrl"]());
38133 ctrl.setComp(compProxy, this.getGui(), this.getFocusableElement());
38134 var addContainer = function (container) {
38135 _this.createManagedBean(container);
38136 _this.appendChild(container);
38137 };
38138 addContainer(new _rowContainer_headerRowContainerComp__WEBPACK_IMPORTED_MODULE_4__["HeaderRowContainerComp"](_constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_LEFT));
38139 addContainer(new _rowContainer_headerRowContainerComp__WEBPACK_IMPORTED_MODULE_4__["HeaderRowContainerComp"](null));
38140 addContainer(new _rowContainer_headerRowContainerComp__WEBPACK_IMPORTED_MODULE_4__["HeaderRowContainerComp"](_constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].PINNED_RIGHT));
38141 };
38142 GridHeaderComp.TEMPLATE = "<div class=\"ag-header\" role=\"presentation\"/>";
38143 __decorate([
38144 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
38145 ], GridHeaderComp.prototype, "postConstruct", null);
38146 return GridHeaderComp;
38147}(_widgets_component__WEBPACK_IMPORTED_MODULE_2__["Component"]));
38148
38149
38150
38151
38152
38153/***/ }),
38154/* 168 */
38155/***/ (function(module, __webpack_exports__, __webpack_require__) {
38156
38157"use strict";
38158__webpack_require__.r(__webpack_exports__);
38159/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GridHeaderCtrl", function() { return GridHeaderCtrl; });
38160/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(65);
38161/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
38162/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
38163/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(24);
38164/* harmony import */ var _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(112);
38165/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7);
38166/* harmony import */ var _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(64);
38167/* harmony import */ var _common_headerNavigationService__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(169);
38168/**
38169 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
38170 * @version v27.3.0
38171 * @link https://www.ag-grid.com/
38172 * @license MIT
38173 */
38174var __extends = (undefined && undefined.__extends) || (function () {
38175 var extendStatics = function (d, b) {
38176 extendStatics = Object.setPrototypeOf ||
38177 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
38178 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
38179 return extendStatics(d, b);
38180 };
38181 return function (d, b) {
38182 extendStatics(d, b);
38183 function __() { this.constructor = d; }
38184 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
38185 };
38186})();
38187var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
38188 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
38189 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
38190 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
38191 return c > 3 && r && Object.defineProperty(target, key, r), r;
38192};
38193
38194
38195
38196
38197
38198
38199
38200
38201var GridHeaderCtrl = /** @class */ (function (_super) {
38202 __extends(GridHeaderCtrl, _super);
38203 function GridHeaderCtrl() {
38204 return _super !== null && _super.apply(this, arguments) || this;
38205 }
38206 GridHeaderCtrl.prototype.setComp = function (comp, eGui, eFocusableElement) {
38207 this.comp = comp;
38208 this.eGui = eGui;
38209 this.createManagedBean(new _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_6__["ManagedFocusFeature"](eFocusableElement, {
38210 onTabKeyDown: this.onTabKeyDown.bind(this),
38211 handleKeyDown: this.handleKeyDown.bind(this),
38212 onFocusOut: this.onFocusOut.bind(this)
38213 }));
38214 // for setting ag-pivot-on / ag-pivot-off CSS classes
38215 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_COLUMN_PIVOT_MODE_CHANGED, this.onPivotModeChanged.bind(this));
38216 this.onPivotModeChanged();
38217 this.setupHeaderHeight();
38218 this.ctrlsService.registerGridHeaderCtrl(this);
38219 };
38220 GridHeaderCtrl.prototype.setupHeaderHeight = function () {
38221 var listener = this.setHeaderHeight.bind(this);
38222 listener();
38223 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__["GridOptionsWrapper"].PROP_HEADER_HEIGHT, listener);
38224 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__["GridOptionsWrapper"].PROP_PIVOT_HEADER_HEIGHT, listener);
38225 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__["GridOptionsWrapper"].PROP_GROUP_HEADER_HEIGHT, listener);
38226 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__["GridOptionsWrapper"].PROP_PIVOT_GROUP_HEADER_HEIGHT, listener);
38227 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__["GridOptionsWrapper"].PROP_FLOATING_FILTERS_HEIGHT, listener);
38228 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED, listener);
38229 };
38230 GridHeaderCtrl.prototype.setHeaderHeight = function () {
38231 var _a = this, columnModel = _a.columnModel, gridOptionsWrapper = _a.gridOptionsWrapper;
38232 var numberOfFloating = 0;
38233 var headerRowCount = columnModel.getHeaderRowCount();
38234 var totalHeaderHeight;
38235 var groupHeight;
38236 var headerHeight;
38237 var hasFloatingFilters = columnModel.hasFloatingFilters();
38238 if (hasFloatingFilters) {
38239 headerRowCount++;
38240 numberOfFloating = 1;
38241 }
38242 if (columnModel.isPivotMode()) {
38243 groupHeight = gridOptionsWrapper.getPivotGroupHeaderHeight();
38244 headerHeight = gridOptionsWrapper.getPivotHeaderHeight();
38245 }
38246 else {
38247 groupHeight = gridOptionsWrapper.getGroupHeaderHeight();
38248 headerHeight = gridOptionsWrapper.getHeaderHeight();
38249 }
38250 var numberOfNonGroups = 1 + numberOfFloating;
38251 var numberOfGroups = headerRowCount - numberOfNonGroups;
38252 totalHeaderHeight = numberOfFloating * gridOptionsWrapper.getFloatingFiltersHeight();
38253 totalHeaderHeight += numberOfGroups * groupHeight;
38254 totalHeaderHeight += headerHeight;
38255 // one extra pixel is needed here to account for the
38256 // height of the border
38257 var px = totalHeaderHeight + 1 + "px";
38258 this.comp.setHeightAndMinHeight(px);
38259 };
38260 GridHeaderCtrl.prototype.onPivotModeChanged = function () {
38261 var pivotMode = this.columnModel.isPivotMode();
38262 this.comp.addOrRemoveCssClass('ag-pivot-on', pivotMode);
38263 this.comp.addOrRemoveCssClass('ag-pivot-off', !pivotMode);
38264 };
38265 GridHeaderCtrl.prototype.onTabKeyDown = function (e) {
38266 var isRtl = this.gridOptionsWrapper.isEnableRtl();
38267 var direction = e.shiftKey !== isRtl
38268 ? _common_headerNavigationService__WEBPACK_IMPORTED_MODULE_7__["HeaderNavigationDirection"].LEFT
38269 : _common_headerNavigationService__WEBPACK_IMPORTED_MODULE_7__["HeaderNavigationDirection"].RIGHT;
38270 if (this.headerNavigationService.navigateHorizontally(direction, true, e) ||
38271 this.focusService.focusNextGridCoreContainer(e.shiftKey)) {
38272 e.preventDefault();
38273 }
38274 };
38275 GridHeaderCtrl.prototype.handleKeyDown = function (e) {
38276 var direction = null;
38277 switch (e.key) {
38278 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_0__["KeyCode"].LEFT:
38279 direction = _common_headerNavigationService__WEBPACK_IMPORTED_MODULE_7__["HeaderNavigationDirection"].LEFT;
38280 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_0__["KeyCode"].RIGHT:
38281 if (!Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["exists"])(direction)) {
38282 direction = _common_headerNavigationService__WEBPACK_IMPORTED_MODULE_7__["HeaderNavigationDirection"].RIGHT;
38283 }
38284 this.headerNavigationService.navigateHorizontally(direction, false, e);
38285 break;
38286 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_0__["KeyCode"].UP:
38287 direction = _common_headerNavigationService__WEBPACK_IMPORTED_MODULE_7__["HeaderNavigationDirection"].UP;
38288 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_0__["KeyCode"].DOWN:
38289 if (!Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["exists"])(direction)) {
38290 direction = _common_headerNavigationService__WEBPACK_IMPORTED_MODULE_7__["HeaderNavigationDirection"].DOWN;
38291 }
38292 if (this.headerNavigationService.navigateVertically(direction, null, e)) {
38293 e.preventDefault();
38294 }
38295 break;
38296 default:
38297 return;
38298 }
38299 };
38300 GridHeaderCtrl.prototype.onFocusOut = function (e) {
38301 var eDocument = this.gridOptionsWrapper.getDocument();
38302 var relatedTarget = e.relatedTarget;
38303 if (!relatedTarget && this.eGui.contains(eDocument.activeElement)) {
38304 return;
38305 }
38306 if (!this.eGui.contains(relatedTarget)) {
38307 this.focusService.clearFocusedHeader();
38308 }
38309 };
38310 __decorate([
38311 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('headerNavigationService')
38312 ], GridHeaderCtrl.prototype, "headerNavigationService", void 0);
38313 __decorate([
38314 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('focusService')
38315 ], GridHeaderCtrl.prototype, "focusService", void 0);
38316 __decorate([
38317 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('columnModel')
38318 ], GridHeaderCtrl.prototype, "columnModel", void 0);
38319 __decorate([
38320 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('ctrlsService')
38321 ], GridHeaderCtrl.prototype, "ctrlsService", void 0);
38322 return GridHeaderCtrl;
38323}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
38324
38325
38326
38327
38328
38329/***/ }),
38330/* 169 */
38331/***/ (function(module, __webpack_exports__, __webpack_require__) {
38332
38333"use strict";
38334__webpack_require__.r(__webpack_exports__);
38335/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderNavigationDirection", function() { return HeaderNavigationDirection; });
38336/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderNavigationService", function() { return HeaderNavigationService; });
38337/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
38338/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
38339/* harmony import */ var _entities_columnGroup__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9);
38340/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(18);
38341/* harmony import */ var _row_headerRowComp__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(149);
38342/**
38343 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
38344 * @version v27.3.0
38345 * @link https://www.ag-grid.com/
38346 * @license MIT
38347 */
38348var __extends = (undefined && undefined.__extends) || (function () {
38349 var extendStatics = function (d, b) {
38350 extendStatics = Object.setPrototypeOf ||
38351 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
38352 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
38353 return extendStatics(d, b);
38354 };
38355 return function (d, b) {
38356 extendStatics(d, b);
38357 function __() { this.constructor = d; }
38358 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
38359 };
38360})();
38361var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
38362 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
38363 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
38364 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
38365 return c > 3 && r && Object.defineProperty(target, key, r), r;
38366};
38367
38368
38369
38370
38371
38372var HeaderNavigationDirection;
38373(function (HeaderNavigationDirection) {
38374 HeaderNavigationDirection[HeaderNavigationDirection["UP"] = 0] = "UP";
38375 HeaderNavigationDirection[HeaderNavigationDirection["DOWN"] = 1] = "DOWN";
38376 HeaderNavigationDirection[HeaderNavigationDirection["LEFT"] = 2] = "LEFT";
38377 HeaderNavigationDirection[HeaderNavigationDirection["RIGHT"] = 3] = "RIGHT";
38378})(HeaderNavigationDirection || (HeaderNavigationDirection = {}));
38379var HeaderNavigationService = /** @class */ (function (_super) {
38380 __extends(HeaderNavigationService, _super);
38381 function HeaderNavigationService() {
38382 return _super !== null && _super.apply(this, arguments) || this;
38383 }
38384 HeaderNavigationService.prototype.postConstruct = function () {
38385 var _this = this;
38386 this.ctrlsService.whenReady(function (p) {
38387 _this.gridBodyCon = p.gridBodyCtrl;
38388 });
38389 };
38390 HeaderNavigationService.prototype.getHeaderRowCount = function () {
38391 var centerHeaderContainer = this.ctrlsService.getHeaderRowContainerCtrl();
38392 return centerHeaderContainer ? centerHeaderContainer.getRowCount() : 0;
38393 };
38394 HeaderNavigationService.prototype.getHeaderRowType = function (rowIndex) {
38395 var centerHeaderContainer = this.ctrlsService.getHeaderRowContainerCtrl();
38396 if (centerHeaderContainer) {
38397 return centerHeaderContainer.getRowType(rowIndex);
38398 }
38399 };
38400 /*
38401 * This method navigates grid header vertically
38402 * @return {boolean} true to preventDefault on the event that caused this navigation.
38403 */
38404 HeaderNavigationService.prototype.navigateVertically = function (direction, fromHeader, event) {
38405 if (!fromHeader) {
38406 fromHeader = this.focusService.getFocusedHeader();
38407 }
38408 if (!fromHeader) {
38409 return false;
38410 }
38411 var headerRowIndex = fromHeader.headerRowIndex, column = fromHeader.column;
38412 var rowLen = this.getHeaderRowCount();
38413 var isUp = direction === HeaderNavigationDirection.UP;
38414 var nextRow = isUp ? headerRowIndex - 1 : headerRowIndex + 1;
38415 var nextFocusColumn = null;
38416 var skipColumn = false;
38417 if (nextRow < 0) {
38418 nextRow = 0;
38419 nextFocusColumn = column;
38420 skipColumn = true;
38421 }
38422 if (nextRow >= rowLen) {
38423 nextRow = -1; // -1 indicates the focus should move to grid rows.
38424 }
38425 var currentRowType = this.getHeaderRowType(headerRowIndex);
38426 if (!skipColumn) {
38427 if (currentRowType === _row_headerRowComp__WEBPACK_IMPORTED_MODULE_4__["HeaderRowType"].COLUMN_GROUP) {
38428 var currentColumn = column;
38429 nextFocusColumn = isUp ? column.getParent() : currentColumn.getDisplayedChildren()[0];
38430 }
38431 else if (currentRowType === _row_headerRowComp__WEBPACK_IMPORTED_MODULE_4__["HeaderRowType"].FLOATING_FILTER) {
38432 nextFocusColumn = column;
38433 }
38434 else {
38435 var currentColumn = column;
38436 nextFocusColumn = isUp ? currentColumn.getParent() : currentColumn;
38437 }
38438 if (!nextFocusColumn) {
38439 return false;
38440 }
38441 }
38442 return this.focusService.focusHeaderPosition({
38443 headerPosition: { headerRowIndex: nextRow, column: nextFocusColumn },
38444 allowUserOverride: true,
38445 event: event
38446 });
38447 };
38448 /*
38449 * This method navigates grid header horizontally
38450 * @return {boolean} true to preventDefault on the event that caused this navigation.
38451 */
38452 HeaderNavigationService.prototype.navigateHorizontally = function (direction, fromTab, event) {
38453 if (fromTab === void 0) { fromTab = false; }
38454 var focusedHeader = this.focusService.getFocusedHeader();
38455 var isLeft = direction === HeaderNavigationDirection.LEFT;
38456 var isRtl = this.gridOptionsWrapper.isEnableRtl();
38457 var nextHeader;
38458 var normalisedDirection;
38459 // either navigating to the left or isRtl (cannot be both)
38460 if (isLeft !== isRtl) {
38461 normalisedDirection = 'Before';
38462 nextHeader = this.headerPositionUtils.findHeader(focusedHeader, normalisedDirection);
38463 }
38464 else {
38465 normalisedDirection = 'After';
38466 nextHeader = this.headerPositionUtils.findHeader(focusedHeader, normalisedDirection);
38467 }
38468 if (nextHeader) {
38469 return this.focusService.focusHeaderPosition({
38470 headerPosition: nextHeader,
38471 direction: normalisedDirection,
38472 fromTab: fromTab,
38473 allowUserOverride: true,
38474 event: event
38475 });
38476 }
38477 if (!fromTab) {
38478 return true;
38479 }
38480 return this.focusNextHeaderRow(focusedHeader, normalisedDirection, event);
38481 };
38482 HeaderNavigationService.prototype.focusNextHeaderRow = function (focusedHeader, direction, event) {
38483 var currentIndex = focusedHeader.headerRowIndex;
38484 var nextPosition = null;
38485 var nextRowIndex;
38486 if (direction === 'Before') {
38487 if (currentIndex > 0) {
38488 nextRowIndex = currentIndex - 1;
38489 nextPosition = this.headerPositionUtils.findColAtEdgeForHeaderRow(nextRowIndex, 'end');
38490 }
38491 }
38492 else {
38493 nextRowIndex = currentIndex + 1;
38494 nextPosition = this.headerPositionUtils.findColAtEdgeForHeaderRow(nextRowIndex, 'start');
38495 }
38496 return this.focusService.focusHeaderPosition({
38497 headerPosition: nextPosition,
38498 direction: direction,
38499 fromTab: true,
38500 allowUserOverride: true,
38501 event: event
38502 });
38503 };
38504 HeaderNavigationService.prototype.scrollToColumn = function (column, direction) {
38505 if (direction === void 0) { direction = 'After'; }
38506 if (column.getPinned()) {
38507 return;
38508 }
38509 var columnToScrollTo;
38510 if (column instanceof _entities_columnGroup__WEBPACK_IMPORTED_MODULE_2__["ColumnGroup"]) {
38511 var columns = column.getDisplayedLeafColumns();
38512 columnToScrollTo = direction === 'Before' ? Object(_utils_array__WEBPACK_IMPORTED_MODULE_3__["last"])(columns) : columns[0];
38513 }
38514 else {
38515 columnToScrollTo = column;
38516 }
38517 this.gridBodyCon.getScrollFeature().ensureColumnVisible(columnToScrollTo);
38518 // need to nudge the scrolls for the floating items. otherwise when we set focus on a non-visible
38519 // floating cell, the scrolls get out of sync
38520 this.gridBodyCon.getScrollFeature().horizontallyScrollHeaderCenterAndFloatingCenter();
38521 // need to flush frames, to make sure the correct cells are rendered
38522 this.animationFrameService.flushAllFrames();
38523 };
38524 __decorate([
38525 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('focusService')
38526 ], HeaderNavigationService.prototype, "focusService", void 0);
38527 __decorate([
38528 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('headerPositionUtils')
38529 ], HeaderNavigationService.prototype, "headerPositionUtils", void 0);
38530 __decorate([
38531 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('animationFrameService')
38532 ], HeaderNavigationService.prototype, "animationFrameService", void 0);
38533 __decorate([
38534 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('ctrlsService')
38535 ], HeaderNavigationService.prototype, "ctrlsService", void 0);
38536 __decorate([
38537 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
38538 ], HeaderNavigationService.prototype, "postConstruct", null);
38539 HeaderNavigationService = __decorate([
38540 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('headerNavigationService')
38541 ], HeaderNavigationService);
38542 return HeaderNavigationService;
38543}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
38544
38545
38546
38547
38548
38549/***/ }),
38550/* 170 */
38551/***/ (function(module, __webpack_exports__, __webpack_require__) {
38552
38553"use strict";
38554__webpack_require__.r(__webpack_exports__);
38555/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HorizontalResizeService", function() { return HorizontalResizeService; });
38556/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
38557/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
38558/**
38559 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
38560 * @version v27.3.0
38561 * @link https://www.ag-grid.com/
38562 * @license MIT
38563 */
38564var __extends = (undefined && undefined.__extends) || (function () {
38565 var extendStatics = function (d, b) {
38566 extendStatics = Object.setPrototypeOf ||
38567 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
38568 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
38569 return extendStatics(d, b);
38570 };
38571 return function (d, b) {
38572 extendStatics(d, b);
38573 function __() { this.constructor = d; }
38574 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
38575 };
38576})();
38577var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
38578 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
38579 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
38580 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
38581 return c > 3 && r && Object.defineProperty(target, key, r), r;
38582};
38583
38584
38585var HorizontalResizeService = /** @class */ (function (_super) {
38586 __extends(HorizontalResizeService, _super);
38587 function HorizontalResizeService() {
38588 return _super !== null && _super.apply(this, arguments) || this;
38589 }
38590 HorizontalResizeService.prototype.addResizeBar = function (params) {
38591 var _this = this;
38592 var dragSource = {
38593 dragStartPixels: params.dragStartPixels || 0,
38594 eElement: params.eResizeBar,
38595 onDragStart: this.onDragStart.bind(this, params),
38596 onDragStop: this.onDragStop.bind(this, params),
38597 onDragging: this.onDragging.bind(this, params)
38598 };
38599 this.dragService.addDragSource(dragSource, true);
38600 // we pass remove func back to the caller, so call can tell us when they
38601 // are finished, and then we remove the listener from the drag source
38602 var finishedWithResizeFunc = function () { return _this.dragService.removeDragSource(dragSource); };
38603 return finishedWithResizeFunc;
38604 };
38605 HorizontalResizeService.prototype.onDragStart = function (params, mouseEvent) {
38606 this.dragStartX = mouseEvent.clientX;
38607 this.setResizeIcons();
38608 var shiftKey = mouseEvent instanceof MouseEvent && mouseEvent.shiftKey === true;
38609 params.onResizeStart(shiftKey);
38610 };
38611 HorizontalResizeService.prototype.setResizeIcons = function () {
38612 var ctrl = this.ctrlsService.getGridCtrl();
38613 // change the body cursor, so when drag moves out of the drag bar, the cursor is still 'resize' (or 'move'
38614 ctrl.setResizeCursor(true);
38615 // we don't want text selection outside the grid (otherwise it looks weird as text highlights when we move)
38616 ctrl.disableUserSelect(true);
38617 };
38618 HorizontalResizeService.prototype.onDragStop = function (params, mouseEvent) {
38619 params.onResizeEnd(this.resizeAmount);
38620 this.resetIcons();
38621 };
38622 HorizontalResizeService.prototype.resetIcons = function () {
38623 var ctrl = this.ctrlsService.getGridCtrl();
38624 ctrl.setResizeCursor(false);
38625 ctrl.disableUserSelect(false);
38626 };
38627 HorizontalResizeService.prototype.onDragging = function (params, mouseEvent) {
38628 this.resizeAmount = mouseEvent.clientX - this.dragStartX;
38629 params.onResizing(this.resizeAmount);
38630 };
38631 __decorate([
38632 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('dragService')
38633 ], HorizontalResizeService.prototype, "dragService", void 0);
38634 __decorate([
38635 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
38636 ], HorizontalResizeService.prototype, "ctrlsService", void 0);
38637 HorizontalResizeService = __decorate([
38638 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('horizontalResizeService')
38639 ], HorizontalResizeService);
38640 return HorizontalResizeService;
38641}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
38642
38643
38644
38645
38646
38647/***/ }),
38648/* 171 */
38649/***/ (function(module, __webpack_exports__, __webpack_require__) {
38650
38651"use strict";
38652__webpack_require__.r(__webpack_exports__);
38653/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StandardMenuFactory", function() { return StandardMenuFactory; });
38654/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
38655/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
38656/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
38657/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(65);
38658/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(44);
38659/**
38660 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
38661 * @version v27.3.0
38662 * @link https://www.ag-grid.com/
38663 * @license MIT
38664 */
38665var __extends = (undefined && undefined.__extends) || (function () {
38666 var extendStatics = function (d, b) {
38667 extendStatics = Object.setPrototypeOf ||
38668 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
38669 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
38670 return extendStatics(d, b);
38671 };
38672 return function (d, b) {
38673 extendStatics(d, b);
38674 function __() { this.constructor = d; }
38675 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
38676 };
38677})();
38678var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
38679 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
38680 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
38681 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
38682 return c > 3 && r && Object.defineProperty(target, key, r), r;
38683};
38684
38685
38686
38687
38688
38689var StandardMenuFactory = /** @class */ (function (_super) {
38690 __extends(StandardMenuFactory, _super);
38691 function StandardMenuFactory() {
38692 return _super !== null && _super.apply(this, arguments) || this;
38693 }
38694 StandardMenuFactory.prototype.hideActiveMenu = function () {
38695 if (this.hidePopup) {
38696 this.hidePopup();
38697 }
38698 };
38699 StandardMenuFactory.prototype.showMenuAfterMouseEvent = function (column, mouseEvent) {
38700 var _this = this;
38701 this.showPopup(column, function (eMenu) {
38702 _this.popupService.positionPopupUnderMouseEvent({
38703 column: column,
38704 type: 'columnMenu',
38705 mouseEvent: mouseEvent,
38706 ePopup: eMenu
38707 });
38708 }, mouseEvent.target);
38709 };
38710 StandardMenuFactory.prototype.showMenuAfterButtonClick = function (column, eventSource, containerType) {
38711 var _this = this;
38712 this.showPopup(column, function (eMenu) {
38713 _this.popupService.positionPopupUnderComponent({
38714 type: containerType,
38715 eventSource: eventSource,
38716 ePopup: eMenu,
38717 keepWithinBounds: true,
38718 column: column
38719 });
38720 }, eventSource);
38721 };
38722 StandardMenuFactory.prototype.showPopup = function (column, positionCallback, eventSource) {
38723 var _this = this;
38724 var filterWrapper = this.filterManager.getOrCreateFilterWrapper(column, 'COLUMN_MENU');
38725 if (!filterWrapper) {
38726 throw new Error('AG Grid - unable to show popup filter, filter instantiation failed');
38727 }
38728 var eMenu = document.createElement('div');
38729 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_4__["setAriaRole"])(eMenu, 'presentation');
38730 eMenu.classList.add('ag-menu');
38731 this.tabListener = this.addManagedListener(eMenu, 'keydown', function (e) { return _this.trapFocusWithin(e, eMenu); });
38732 filterWrapper.guiPromise.then(function (gui) { return eMenu.appendChild(gui); });
38733 var hidePopup;
38734 var anchorToElement = eventSource || this.ctrlsService.getGridBodyCtrl().getGui();
38735 var closedCallback = function (e) {
38736 column.setMenuVisible(false, 'contextMenu');
38737 var isKeyboardEvent = e instanceof KeyboardEvent;
38738 if (_this.tabListener) {
38739 _this.tabListener = _this.tabListener();
38740 }
38741 if (isKeyboardEvent && eventSource && Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["isVisible"])(eventSource)) {
38742 var focusableEl = _this.focusService.findTabbableParent(eventSource);
38743 if (focusableEl) {
38744 focusableEl.focus();
38745 }
38746 }
38747 };
38748 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
38749 var addPopupRes = this.popupService.addPopup({
38750 modal: true,
38751 eChild: eMenu,
38752 closeOnEsc: true,
38753 closedCallback: closedCallback,
38754 positionCallback: function () { return positionCallback(eMenu); },
38755 anchorToElement: anchorToElement,
38756 ariaLabel: translate('ariaLabelColumnMenu', 'Column Menu')
38757 });
38758 if (addPopupRes) {
38759 this.hidePopup = hidePopup = addPopupRes.hideFunc;
38760 }
38761 filterWrapper.filterPromise.then(function (filter) {
38762 // need to make sure the filter is present before positioning, as only
38763 // after filter it is visible can we find out what the width of it is
38764 positionCallback(eMenu);
38765 if (filter.afterGuiAttached) {
38766 filter.afterGuiAttached({ container: 'columnMenu', hidePopup: hidePopup });
38767 }
38768 });
38769 column.setMenuVisible(true, 'contextMenu');
38770 };
38771 StandardMenuFactory.prototype.trapFocusWithin = function (e, menu) {
38772 if (e.key !== _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].TAB ||
38773 e.defaultPrevented ||
38774 this.focusService.findNextFocusableElement(menu, false, e.shiftKey)) {
38775 return;
38776 }
38777 e.preventDefault();
38778 this.focusService.focusInto(menu, e.shiftKey);
38779 };
38780 StandardMenuFactory.prototype.isMenuEnabled = function (column) {
38781 // for standard, we show menu if filter is enabled, and the menu is not suppressed
38782 return column.isFilterAllowed();
38783 };
38784 __decorate([
38785 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('filterManager')
38786 ], StandardMenuFactory.prototype, "filterManager", void 0);
38787 __decorate([
38788 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('popupService')
38789 ], StandardMenuFactory.prototype, "popupService", void 0);
38790 __decorate([
38791 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('focusService')
38792 ], StandardMenuFactory.prototype, "focusService", void 0);
38793 __decorate([
38794 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
38795 ], StandardMenuFactory.prototype, "ctrlsService", void 0);
38796 StandardMenuFactory = __decorate([
38797 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('menuFactory')
38798 ], StandardMenuFactory);
38799 return StandardMenuFactory;
38800}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
38801
38802
38803
38804
38805
38806/***/ }),
38807/* 172 */
38808/***/ (function(module, __webpack_exports__, __webpack_require__) {
38809
38810"use strict";
38811__webpack_require__.r(__webpack_exports__);
38812/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TabbedLayout", function() { return TabbedLayout; });
38813/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(57);
38814/* harmony import */ var _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(64);
38815/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
38816/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44);
38817/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(14);
38818/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(65);
38819/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(36);
38820/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(12);
38821/**
38822 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
38823 * @version v27.3.0
38824 * @link https://www.ag-grid.com/
38825 * @license MIT
38826 */
38827var __extends = (undefined && undefined.__extends) || (function () {
38828 var extendStatics = function (d, b) {
38829 extendStatics = Object.setPrototypeOf ||
38830 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
38831 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
38832 return extendStatics(d, b);
38833 };
38834 return function (d, b) {
38835 extendStatics(d, b);
38836 function __() { this.constructor = d; }
38837 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
38838 };
38839})();
38840var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
38841 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
38842 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
38843 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
38844 return c > 3 && r && Object.defineProperty(target, key, r), r;
38845};
38846
38847
38848
38849
38850
38851
38852
38853
38854var TabbedLayout = /** @class */ (function (_super) {
38855 __extends(TabbedLayout, _super);
38856 function TabbedLayout(params) {
38857 var _this = _super.call(this, TabbedLayout.getTemplate(params.cssClass)) || this;
38858 _this.items = [];
38859 _this.tabbedItemScrollMap = new Map();
38860 _this.params = params;
38861 if (params.items) {
38862 params.items.forEach(function (item) { return _this.addItem(item); });
38863 }
38864 return _this;
38865 }
38866 TabbedLayout.prototype.postConstruct = function () {
38867 this.createManagedBean(new _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_1__["ManagedFocusFeature"](this.getFocusableElement(), {
38868 onTabKeyDown: this.onTabKeyDown.bind(this),
38869 handleKeyDown: this.handleKeyDown.bind(this)
38870 }));
38871 };
38872 TabbedLayout.getTemplate = function (cssClass) {
38873 return /* html */ "<div class=\"ag-tabs " + cssClass + "\">\n <div ref=\"eHeader\" role=\"tablist\" class=\"ag-tabs-header " + (cssClass ? cssClass + "-header" : '') + "\"></div>\n <div ref=\"eBody\" role=\"presentation\" class=\"ag-tabs-body " + (cssClass ? cssClass + "-body" : '') + "\"></div>\n </div>";
38874 };
38875 TabbedLayout.prototype.handleKeyDown = function (e) {
38876 var eDocument = this.gridOptionsWrapper.getDocument();
38877 switch (e.key) {
38878 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].RIGHT:
38879 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].LEFT:
38880 if (!this.eHeader.contains(eDocument.activeElement)) {
38881 return;
38882 }
38883 var currentPosition = this.items.indexOf(this.activeItem);
38884 var nextPosition = e.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].RIGHT ? Math.min(currentPosition + 1, this.items.length - 1) : Math.max(currentPosition - 1, 0);
38885 if (currentPosition === nextPosition) {
38886 return;
38887 }
38888 e.preventDefault();
38889 var nextItem = this.items[nextPosition];
38890 this.showItemWrapper(nextItem);
38891 nextItem.eHeaderButton.focus();
38892 break;
38893 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].UP:
38894 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].DOWN:
38895 e.stopPropagation();
38896 break;
38897 }
38898 };
38899 TabbedLayout.prototype.onTabKeyDown = function (e) {
38900 if (e.defaultPrevented) {
38901 return;
38902 }
38903 var _a = this, focusService = _a.focusService, eHeader = _a.eHeader, eBody = _a.eBody, activeItem = _a.activeItem;
38904 var eDocument = this.gridOptionsWrapper.getDocument();
38905 var activeElement = eDocument.activeElement;
38906 e.preventDefault();
38907 if (eHeader.contains(activeElement)) {
38908 // focus is in header, move into body of popup
38909 focusService.focusInto(eBody, e.shiftKey);
38910 }
38911 else {
38912 // focus is in body, establish if it should return to header
38913 if (focusService.isFocusUnderManagedComponent(eBody)) {
38914 // focus was in a managed focus component and has now left, so we can return to the header
38915 activeItem.eHeaderButton.focus();
38916 }
38917 else {
38918 var nextEl = focusService.findNextFocusableElement(eBody, false, e.shiftKey);
38919 if (nextEl) {
38920 // if another element exists in the body that can be focussed, go to that
38921 nextEl.focus();
38922 }
38923 else {
38924 // otherwise return to the header
38925 activeItem.eHeaderButton.focus();
38926 }
38927 }
38928 }
38929 };
38930 TabbedLayout.prototype.setAfterAttachedParams = function (params) {
38931 this.afterAttachedParams = params;
38932 };
38933 TabbedLayout.prototype.showFirstItem = function () {
38934 if (this.items.length > 0) {
38935 this.showItemWrapper(this.items[0]);
38936 }
38937 };
38938 TabbedLayout.prototype.addItem = function (item) {
38939 var eHeaderButton = document.createElement('span');
38940 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_3__["setAriaRole"])(eHeaderButton, 'tab');
38941 eHeaderButton.setAttribute('tabIndex', '-1');
38942 eHeaderButton.appendChild(item.title);
38943 eHeaderButton.classList.add('ag-tab');
38944 this.eHeader.appendChild(eHeaderButton);
38945 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_3__["setAriaLabel"])(eHeaderButton, item.titleLabel);
38946 var wrapper = {
38947 tabbedItem: item,
38948 eHeaderButton: eHeaderButton
38949 };
38950 this.items.push(wrapper);
38951 eHeaderButton.addEventListener('click', this.showItemWrapper.bind(this, wrapper));
38952 };
38953 TabbedLayout.prototype.showItem = function (tabbedItem) {
38954 var itemWrapper = this.items.find(function (wrapper) { return wrapper.tabbedItem === tabbedItem; });
38955 if (itemWrapper) {
38956 this.showItemWrapper(itemWrapper);
38957 }
38958 };
38959 TabbedLayout.prototype.showItemWrapper = function (wrapper) {
38960 var _this = this;
38961 var tabbedItem = wrapper.tabbedItem, eHeaderButton = wrapper.eHeaderButton;
38962 if (this.params.onItemClicked) {
38963 this.params.onItemClicked({ item: tabbedItem });
38964 }
38965 if (this.activeItem === wrapper) {
38966 Object(_utils_function__WEBPACK_IMPORTED_MODULE_4__["callIfPresent"])(this.params.onActiveItemClicked);
38967 return;
38968 }
38969 if (this.lastScrollListener) {
38970 this.lastScrollListener = this.lastScrollListener();
38971 }
38972 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["clearElement"])(this.eBody);
38973 tabbedItem.bodyPromise.then(function (body) {
38974 _this.eBody.appendChild(body);
38975 var onlyUnmanaged = !_this.focusService.isKeyboardMode();
38976 _this.focusService.focusInto(_this.eBody, false, onlyUnmanaged);
38977 if (tabbedItem.afterAttachedCallback) {
38978 tabbedItem.afterAttachedCallback(_this.afterAttachedParams);
38979 }
38980 if (_this.params.keepScrollPosition) {
38981 var scrollableContainer_1 = (tabbedItem.getScrollableContainer && tabbedItem.getScrollableContainer()) || body;
38982 _this.lastScrollListener = _this.addManagedListener(scrollableContainer_1, 'scroll', function () {
38983 _this.tabbedItemScrollMap.set(tabbedItem.name, scrollableContainer_1.scrollTop);
38984 });
38985 var scrollPosition_1 = _this.tabbedItemScrollMap.get(tabbedItem.name);
38986 if (scrollPosition_1 !== undefined) {
38987 // Safari needs a small timeout or it will fire a scroll event to position 0
38988 setTimeout(function () {
38989 scrollableContainer_1.scrollTop = scrollPosition_1;
38990 }, 0);
38991 }
38992 }
38993 });
38994 if (this.activeItem) {
38995 this.activeItem.eHeaderButton.classList.remove('ag-tab-selected');
38996 }
38997 eHeaderButton.classList.add('ag-tab-selected');
38998 this.activeItem = wrapper;
38999 };
39000 __decorate([
39001 Object(_context_context__WEBPACK_IMPORTED_MODULE_7__["Autowired"])('focusService')
39002 ], TabbedLayout.prototype, "focusService", void 0);
39003 __decorate([
39004 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eHeader')
39005 ], TabbedLayout.prototype, "eHeader", void 0);
39006 __decorate([
39007 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eBody')
39008 ], TabbedLayout.prototype, "eBody", void 0);
39009 __decorate([
39010 _context_context__WEBPACK_IMPORTED_MODULE_7__["PostConstruct"]
39011 ], TabbedLayout.prototype, "postConstruct", null);
39012 return TabbedLayout;
39013}(_widgets_component__WEBPACK_IMPORTED_MODULE_6__["Component"]));
39014
39015
39016
39017
39018
39019/***/ }),
39020/* 173 */
39021/***/ (function(module, __webpack_exports__, __webpack_require__) {
39022
39023"use strict";
39024__webpack_require__.r(__webpack_exports__);
39025/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "simpleHttpRequest", function() { return simpleHttpRequest; });
39026/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(37);
39027/**
39028 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
39029 * @version v27.3.0
39030 * @link https://www.ag-grid.com/
39031 * @license MIT
39032 */
39033
39034/**
39035 * @deprecated
39036 */
39037function simpleHttpRequest(params) {
39038 return new _utils__WEBPACK_IMPORTED_MODULE_0__["AgPromise"](function (resolve) {
39039 var httpRequest = new XMLHttpRequest();
39040 httpRequest.open('GET', params.url);
39041 httpRequest.send();
39042 httpRequest.onreadystatechange = function () {
39043 if (httpRequest.readyState === 4 && httpRequest.status === 200) {
39044 resolve(JSON.parse(httpRequest.responseText));
39045 }
39046 };
39047 });
39048}
39049
39050
39051
39052
39053/***/ }),
39054/* 174 */
39055/***/ (function(module, __webpack_exports__, __webpack_require__) {
39056
39057"use strict";
39058__webpack_require__.r(__webpack_exports__);
39059/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ResizeObserverService", function() { return ResizeObserverService; });
39060/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
39061/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
39062/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14);
39063/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42);
39064/**
39065 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
39066 * @version v27.3.0
39067 * @link https://www.ag-grid.com/
39068 * @license MIT
39069 */
39070var __extends = (undefined && undefined.__extends) || (function () {
39071 var extendStatics = function (d, b) {
39072 extendStatics = Object.setPrototypeOf ||
39073 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
39074 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
39075 return extendStatics(d, b);
39076 };
39077 return function (d, b) {
39078 extendStatics(d, b);
39079 function __() { this.constructor = d; }
39080 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
39081 };
39082})();
39083var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
39084 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
39085 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
39086 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
39087 return c > 3 && r && Object.defineProperty(target, key, r), r;
39088};
39089
39090
39091
39092
39093var DEBOUNCE_DELAY = 50;
39094var ResizeObserverService = /** @class */ (function (_super) {
39095 __extends(ResizeObserverService, _super);
39096 function ResizeObserverService() {
39097 var _this = _super !== null && _super.apply(this, arguments) || this;
39098 _this.polyfillFunctions = [];
39099 return _this;
39100 }
39101 ResizeObserverService.prototype.observeResize = function (element, callback) {
39102 var _this = this;
39103 var eDocument = this.gridOptionsWrapper.getDocument();
39104 var win = (eDocument.defaultView || window);
39105 // this gets fired too often and might cause some relayout issues
39106 // so we add a debounce to the callback here to avoid the flashing effect.
39107 var debouncedCallback = Object(_utils_function__WEBPACK_IMPORTED_MODULE_2__["debounce"])(callback, DEBOUNCE_DELAY);
39108 var useBrowserResizeObserver = function () {
39109 var resizeObserver = new win.ResizeObserver(debouncedCallback);
39110 resizeObserver.observe(element);
39111 return function () { return resizeObserver.disconnect(); };
39112 };
39113 var usePolyfill = function () {
39114 // initialise to the current width and height, so first call will have no changes
39115 var widthLastTime = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["offsetWidth"])(element);
39116 var heightLastTime = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["offsetHeight"])(element);
39117 // when finished, this gets turned to false.
39118 var running = true;
39119 var periodicallyCheckWidthAndHeight = function () {
39120 if (running) {
39121 var newWidth = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["offsetWidth"])(element);
39122 var newHeight = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["offsetHeight"])(element);
39123 var changed = newWidth !== widthLastTime || newHeight !== heightLastTime;
39124 if (changed) {
39125 widthLastTime = newWidth;
39126 heightLastTime = newHeight;
39127 callback();
39128 }
39129 _this.doNextPolyfillTurn(periodicallyCheckWidthAndHeight);
39130 }
39131 };
39132 periodicallyCheckWidthAndHeight();
39133 // the callback function we return sets running to false
39134 return function () { return running = false; };
39135 };
39136 var suppressResize = this.gridOptionsWrapper.isSuppressBrowserResizeObserver();
39137 var resizeObserverExists = !!win.ResizeObserver;
39138 if (resizeObserverExists && !suppressResize) {
39139 return useBrowserResizeObserver();
39140 }
39141 return usePolyfill();
39142 };
39143 ResizeObserverService.prototype.doNextPolyfillTurn = function (func) {
39144 this.polyfillFunctions.push(func);
39145 this.schedulePolyfill();
39146 };
39147 ResizeObserverService.prototype.schedulePolyfill = function () {
39148 var _this = this;
39149 if (this.polyfillScheduled) {
39150 return;
39151 }
39152 var executeAllFuncs = function () {
39153 var funcs = _this.polyfillFunctions;
39154 // make sure set scheduled to false and clear clear array
39155 // before executing the funcs, as the funcs could add more funcs
39156 _this.polyfillScheduled = false;
39157 _this.polyfillFunctions = [];
39158 funcs.forEach(function (f) { return f(); });
39159 };
39160 this.polyfillScheduled = true;
39161 this.getFrameworkOverrides().setTimeout(executeAllFuncs, DEBOUNCE_DELAY);
39162 };
39163 ResizeObserverService = __decorate([
39164 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('resizeObserverService')
39165 ], ResizeObserverService);
39166 return ResizeObserverService;
39167}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
39168
39169
39170
39171
39172
39173/***/ }),
39174/* 175 */
39175/***/ (function(module, __webpack_exports__, __webpack_require__) {
39176
39177"use strict";
39178__webpack_require__.r(__webpack_exports__);
39179/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AnimationFrameService", function() { return AnimationFrameService; });
39180/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
39181/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
39182/**
39183 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
39184 * @version v27.3.0
39185 * @link https://www.ag-grid.com/
39186 * @license MIT
39187 */
39188var __extends = (undefined && undefined.__extends) || (function () {
39189 var extendStatics = function (d, b) {
39190 extendStatics = Object.setPrototypeOf ||
39191 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
39192 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
39193 return extendStatics(d, b);
39194 };
39195 return function (d, b) {
39196 extendStatics(d, b);
39197 function __() { this.constructor = d; }
39198 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
39199 };
39200})();
39201var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
39202 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
39203 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
39204 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
39205 return c > 3 && r && Object.defineProperty(target, key, r), r;
39206};
39207
39208
39209var AnimationFrameService = /** @class */ (function (_super) {
39210 __extends(AnimationFrameService, _super);
39211 function AnimationFrameService() {
39212 var _this = _super !== null && _super.apply(this, arguments) || this;
39213 // p1 and p2 are create tasks are to do with row and cell creation.
39214 // for them we want to execute according to row order, so we use
39215 // TaskItem so we know what index the item is for.
39216 _this.createTasksP1 = { list: [], sorted: false }; // eg drawing back-ground of rows
39217 _this.createTasksP2 = { list: [], sorted: false }; // eg cell renderers, adding hover functionality
39218 // destroy tasks are to do with row removal. they are done after row creation as the user will need to see new
39219 // rows first (as blank is scrolled into view), when we remove the old rows (no longer in view) is not as
39220 // important.
39221 _this.destroyTasks = [];
39222 _this.ticking = false;
39223 // we need to know direction of scroll, to build up rows in the direction of
39224 // the scroll. eg if user scrolls down, we extend the rows by building down.
39225 _this.scrollGoingDown = true;
39226 _this.lastScrollTop = 0;
39227 _this.taskCount = 0;
39228 _this.cancelledTasks = new Set();
39229 return _this;
39230 }
39231 AnimationFrameService.prototype.setScrollTop = function (scrollTop) {
39232 this.scrollGoingDown = scrollTop > this.lastScrollTop;
39233 this.lastScrollTop = scrollTop;
39234 };
39235 AnimationFrameService.prototype.init = function () {
39236 this.useAnimationFrame = !this.gridOptionsWrapper.isSuppressAnimationFrame();
39237 };
39238 AnimationFrameService.prototype.isOn = function () {
39239 return this.useAnimationFrame;
39240 };
39241 // this method is for our AG Grid sanity only - if animation frames are turned off,
39242 // then no place in the code should be looking to add any work to be done in animation
39243 // frames. this stops bugs - where some code is asking for a frame to be executed
39244 // when it should not.
39245 AnimationFrameService.prototype.verifyAnimationFrameOn = function (methodName) {
39246 if (this.useAnimationFrame === false) {
39247 console.warn("AG Grid: AnimationFrameService." + methodName + " called but animation frames are off");
39248 }
39249 };
39250 AnimationFrameService.prototype.createTask = function (task, index, list) {
39251 this.verifyAnimationFrameOn(list);
39252 var taskItem = { task: task, index: index, createOrder: ++this.taskCount };
39253 this.addTaskToList(this[list], taskItem);
39254 this.schedule();
39255 };
39256 AnimationFrameService.prototype.cancelTask = function (task) {
39257 this.cancelledTasks.add(task);
39258 };
39259 AnimationFrameService.prototype.addTaskToList = function (taskList, task) {
39260 taskList.list.push(task);
39261 taskList.sorted = false;
39262 };
39263 AnimationFrameService.prototype.sortTaskList = function (taskList) {
39264 if (taskList.sorted) {
39265 return;
39266 }
39267 var sortDirection = this.scrollGoingDown ? 1 : -1;
39268 // sort first by row index (taking into account scroll direction), then by
39269 // order of task creation (always ascending, so cells will render left-to-right)
39270 taskList.list.sort(function (a, b) { return a.index !== b.index ? sortDirection * (b.index - a.index) : b.createOrder - a.createOrder; });
39271 taskList.sorted = true;
39272 };
39273 AnimationFrameService.prototype.addDestroyTask = function (task) {
39274 this.verifyAnimationFrameOn('createTasksP3');
39275 this.destroyTasks.push(task);
39276 this.schedule();
39277 };
39278 AnimationFrameService.prototype.executeFrame = function (millis) {
39279 this.verifyAnimationFrameOn('executeFrame');
39280 var p1TaskList = this.createTasksP1;
39281 var p1Tasks = p1TaskList.list;
39282 var p2TaskList = this.createTasksP2;
39283 var p2Tasks = p2TaskList.list;
39284 var destroyTasks = this.destroyTasks;
39285 var frameStart = new Date().getTime();
39286 var duration = (new Date().getTime()) - frameStart;
39287 // 16ms is 60 fps
39288 var noMaxMillis = millis <= 0;
39289 var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
39290 while (noMaxMillis || duration < millis) {
39291 var gridBodyDidSomething = gridBodyCon.getScrollFeature().executeAnimationFrameScroll();
39292 if (!gridBodyDidSomething) {
39293 var task = void 0;
39294 if (p1Tasks.length) {
39295 this.sortTaskList(p1TaskList);
39296 task = p1Tasks.pop().task;
39297 }
39298 else if (p2Tasks.length) {
39299 this.sortTaskList(p2TaskList);
39300 task = p2Tasks.pop().task;
39301 }
39302 else if (destroyTasks.length) {
39303 task = destroyTasks.pop();
39304 }
39305 else {
39306 this.cancelledTasks.clear();
39307 break;
39308 }
39309 if (!this.cancelledTasks.has(task)) {
39310 task();
39311 }
39312 }
39313 duration = (new Date().getTime()) - frameStart;
39314 }
39315 if (p1Tasks.length || p2Tasks.length || destroyTasks.length) {
39316 this.requestFrame();
39317 }
39318 else {
39319 this.stopTicking();
39320 }
39321 };
39322 AnimationFrameService.prototype.stopTicking = function () {
39323 this.ticking = false;
39324 };
39325 AnimationFrameService.prototype.flushAllFrames = function () {
39326 if (!this.useAnimationFrame) {
39327 return;
39328 }
39329 this.executeFrame(-1);
39330 };
39331 AnimationFrameService.prototype.schedule = function () {
39332 if (!this.useAnimationFrame) {
39333 return;
39334 }
39335 if (!this.ticking) {
39336 this.ticking = true;
39337 this.requestFrame();
39338 }
39339 };
39340 AnimationFrameService.prototype.requestFrame = function () {
39341 // check for the existence of requestAnimationFrame, and if
39342 // it's missing, then we polyfill it with setTimeout()
39343 var callback = this.executeFrame.bind(this, 60);
39344 var eDocument = this.gridOptionsWrapper.getDocument();
39345 var win = (eDocument.defaultView || window);
39346 if (win.requestAnimationFrame) {
39347 win.requestAnimationFrame(callback);
39348 }
39349 else if (win.webkitRequestAnimationFrame) {
39350 win.webkitRequestAnimationFrame(callback);
39351 }
39352 else {
39353 win.setTimeout(callback, 0);
39354 }
39355 };
39356 AnimationFrameService.prototype.isQueueEmpty = function () {
39357 return !this.ticking;
39358 };
39359 // a debounce utility used for parts of the app involved with rendering.
39360 // the advantage over normal debounce is the client can call flushAllFrames()
39361 // to make sure all rendering is complete. we don't wait any milliseconds,
39362 // as this is intended to batch calls in one VM turn.
39363 AnimationFrameService.prototype.debounce = function (func) {
39364 var _this = this;
39365 var pending = false;
39366 return function () {
39367 if (!_this.isOn()) {
39368 _this.getFrameworkOverrides().setTimeout(func, 0);
39369 return;
39370 }
39371 if (pending) {
39372 return;
39373 }
39374 pending = true;
39375 _this.addDestroyTask(function () {
39376 pending = false;
39377 func();
39378 });
39379 };
39380 };
39381 __decorate([
39382 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
39383 ], AnimationFrameService.prototype, "ctrlsService", void 0);
39384 __decorate([
39385 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
39386 ], AnimationFrameService.prototype, "init", null);
39387 AnimationFrameService = __decorate([
39388 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('animationFrameService')
39389 ], AnimationFrameService);
39390 return AnimationFrameService;
39391}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
39392
39393
39394
39395
39396
39397/***/ }),
39398/* 176 */
39399/***/ (function(module, __webpack_exports__, __webpack_require__) {
39400
39401"use strict";
39402__webpack_require__.r(__webpack_exports__);
39403/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PositionableFeature", function() { return PositionableFeature; });
39404/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
39405/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
39406/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
39407/**
39408 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
39409 * @version v27.3.0
39410 * @link https://www.ag-grid.com/
39411 * @license MIT
39412 */
39413var __extends = (undefined && undefined.__extends) || (function () {
39414 var extendStatics = function (d, b) {
39415 extendStatics = Object.setPrototypeOf ||
39416 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
39417 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
39418 return extendStatics(d, b);
39419 };
39420 return function (d, b) {
39421 extendStatics(d, b);
39422 function __() { this.constructor = d; }
39423 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
39424 };
39425})();
39426var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
39427 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
39428 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
39429 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
39430 return c > 3 && r && Object.defineProperty(target, key, r), r;
39431};
39432
39433
39434
39435var RESIZE_CONTAINER_STYLE = 'ag-resizer-wrapper';
39436var RESIZE_TEMPLATE = /* html */ "<div class=\"" + RESIZE_CONTAINER_STYLE + "\">\n <div ref=\"eTopLeftResizer\" class=\"ag-resizer ag-resizer-topLeft\"></div>\n <div ref=\"eTopResizer\" class=\"ag-resizer ag-resizer-top\"></div>\n <div ref=\"eTopRightResizer\" class=\"ag-resizer ag-resizer-topRight\"></div>\n <div ref=\"eRightResizer\" class=\"ag-resizer ag-resizer-right\"></div>\n <div ref=\"eBottomRightResizer\" class=\"ag-resizer ag-resizer-bottomRight\"></div>\n <div ref=\"eBottomResizer\" class=\"ag-resizer ag-resizer-bottom\"></div>\n <div ref=\"eBottomLeftResizer\" class=\"ag-resizer ag-resizer-bottomLeft\"></div>\n <div ref=\"eLeftResizer\" class=\"ag-resizer ag-resizer-left\"></div>\n </div>";
39437var PositionableFeature = /** @class */ (function (_super) {
39438 __extends(PositionableFeature, _super);
39439 function PositionableFeature(element, config) {
39440 var _this = _super.call(this) || this;
39441 _this.element = element;
39442 _this.dragStartPosition = {
39443 x: 0,
39444 y: 0
39445 };
39446 _this.position = {
39447 x: 0,
39448 y: 0
39449 };
39450 _this.lastSize = {
39451 width: -1,
39452 height: -1
39453 };
39454 _this.positioned = false;
39455 _this.resizersAdded = false;
39456 _this.resizeListeners = [];
39457 _this.boundaryEl = null;
39458 _this.isResizing = false;
39459 _this.isMoving = false;
39460 _this.resizable = {};
39461 _this.movable = false;
39462 _this.currentResizer = null;
39463 _this.config = Object.assign({}, { popup: false }, config);
39464 return _this;
39465 }
39466 PositionableFeature.prototype.center = function () {
39467 var _a = this.offsetParent, clientHeight = _a.clientHeight, clientWidth = _a.clientWidth;
39468 var x = (clientWidth / 2) - (this.getWidth() / 2);
39469 var y = (clientHeight / 2) - (this.getHeight() / 2);
39470 this.offsetElement(x, y);
39471 };
39472 PositionableFeature.prototype.initialisePosition = function () {
39473 var _a = this.config, centered = _a.centered, forcePopupParentAsOffsetParent = _a.forcePopupParentAsOffsetParent, minWidth = _a.minWidth, width = _a.width, minHeight = _a.minHeight, height = _a.height, x = _a.x, y = _a.y;
39474 if (!this.offsetParent) {
39475 this.setOffsetParent();
39476 }
39477 var computedMinHeight = 0;
39478 var computedMinWidth = 0;
39479 // here we don't use the main offset parent but the element's offsetParent
39480 // in order to calculated the minWidth and minHeight correctly
39481 var isVisible = !!this.element.offsetParent;
39482 if (isVisible) {
39483 var boundaryEl = this.findBoundaryElement();
39484 var offsetParentComputedStyles = window.getComputedStyle(boundaryEl);
39485 if (offsetParentComputedStyles.minWidth != null) {
39486 var paddingWidth = boundaryEl.offsetWidth - this.element.offsetWidth;
39487 computedMinWidth = parseInt(offsetParentComputedStyles.minWidth, 10) - paddingWidth;
39488 }
39489 if (offsetParentComputedStyles.minHeight != null) {
39490 var paddingHeight = boundaryEl.offsetHeight - this.element.offsetHeight;
39491 computedMinHeight = parseInt(offsetParentComputedStyles.minHeight, 10) - paddingHeight;
39492 }
39493 }
39494 this.minHeight = minHeight || computedMinHeight;
39495 this.minWidth = minWidth || computedMinWidth;
39496 if (width) {
39497 this.setWidth(width);
39498 }
39499 if (height) {
39500 this.setHeight(height);
39501 }
39502 if (!width || !height) {
39503 this.refreshSize();
39504 }
39505 if (centered) {
39506 this.center();
39507 }
39508 else if (x || y) {
39509 this.offsetElement(x, y);
39510 }
39511 else if (isVisible && forcePopupParentAsOffsetParent && this.boundaryEl) {
39512 var top_1 = parseFloat(this.boundaryEl.style.top);
39513 var left = parseFloat(this.boundaryEl.style.left);
39514 this.offsetElement(isNaN(left) ? 0 : left, isNaN(top_1) ? 0 : top_1);
39515 }
39516 this.positioned = !!this.offsetParent;
39517 };
39518 PositionableFeature.prototype.isPositioned = function () {
39519 return this.positioned;
39520 };
39521 PositionableFeature.prototype.getPosition = function () {
39522 return this.position;
39523 };
39524 PositionableFeature.prototype.setMovable = function (movable, moveElement) {
39525 if (!this.config.popup || movable === this.movable) {
39526 return;
39527 }
39528 this.movable = movable;
39529 var params = this.moveElementDragListener || {
39530 eElement: moveElement,
39531 onDragStart: this.onMoveStart.bind(this),
39532 onDragging: this.onMove.bind(this),
39533 onDragStop: this.onMoveEnd.bind(this)
39534 };
39535 if (movable) {
39536 this.dragService.addDragSource(params);
39537 this.moveElementDragListener = params;
39538 }
39539 else {
39540 this.dragService.removeDragSource(params);
39541 this.moveElementDragListener = undefined;
39542 }
39543 };
39544 PositionableFeature.prototype.setResizable = function (resizable) {
39545 var _this = this;
39546 this.clearResizeListeners();
39547 if (resizable) {
39548 this.addResizers();
39549 }
39550 else {
39551 this.removeResizers();
39552 }
39553 if (typeof resizable === 'boolean') {
39554 if (resizable === false) {
39555 return;
39556 }
39557 resizable = {
39558 topLeft: resizable,
39559 top: resizable,
39560 topRight: resizable,
39561 right: resizable,
39562 bottomRight: resizable,
39563 bottom: resizable,
39564 bottomLeft: resizable,
39565 left: resizable
39566 };
39567 }
39568 Object.keys(resizable).forEach(function (side) {
39569 var resizableStructure = resizable;
39570 var val = !!resizableStructure[side];
39571 var resizerEl = _this.getResizerElement(side);
39572 var params = {
39573 dragStartPixels: 0,
39574 eElement: resizerEl,
39575 onDragStart: function (e) { return _this.onResizeStart(e, side); },
39576 onDragging: _this.onResize.bind(_this),
39577 onDragStop: function (e) { return _this.onResizeEnd(e, side); },
39578 };
39579 if (!!_this.resizable[side] !== val || (!_this.isAlive() && !val)) {
39580 if (val) {
39581 _this.dragService.addDragSource(params);
39582 _this.resizeListeners.push(params);
39583 resizerEl.style.pointerEvents = 'all';
39584 }
39585 else {
39586 resizerEl.style.pointerEvents = 'none';
39587 }
39588 }
39589 });
39590 };
39591 PositionableFeature.prototype.removeSizeFromEl = function () {
39592 this.element.style.removeProperty('height');
39593 this.element.style.removeProperty('width');
39594 this.element.style.removeProperty('flex');
39595 };
39596 PositionableFeature.prototype.restoreLastSize = function () {
39597 this.element.style.flex = '0 0 auto';
39598 var _a = this.lastSize, height = _a.height, width = _a.width;
39599 if (width !== -1) {
39600 this.element.style.width = width + "px";
39601 }
39602 if (height !== -1) {
39603 this.element.style.height = height + "px";
39604 }
39605 };
39606 PositionableFeature.prototype.getHeight = function () {
39607 return this.element.offsetHeight;
39608 };
39609 PositionableFeature.prototype.setHeight = function (height) {
39610 var popup = this.config.popup;
39611 var eGui = this.element;
39612 var isPercent = false;
39613 if (typeof height === 'string' && height.indexOf('%') !== -1) {
39614 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setFixedHeight"])(eGui, height);
39615 height = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["getAbsoluteHeight"])(eGui);
39616 isPercent = true;
39617 }
39618 else if (this.positioned) {
39619 var elRect = this.element.getBoundingClientRect();
39620 var parentRect = this.offsetParent.getBoundingClientRect();
39621 height = Math.max(this.minHeight, height);
39622 var clientHeight = this.offsetParent.clientHeight;
39623 var yPosition = popup ? this.position.y : elRect.top;
39624 var parentTop = popup ? 0 : parentRect.top;
39625 if (clientHeight && (height + yPosition > clientHeight + parentTop)) {
39626 height = clientHeight - yPosition;
39627 }
39628 }
39629 if (this.getHeight() === height) {
39630 return;
39631 }
39632 if (!isPercent) {
39633 if (popup) {
39634 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setFixedHeight"])(eGui, height);
39635 }
39636 else {
39637 eGui.style.height = height + "px";
39638 eGui.style.flex = '0 0 auto';
39639 this.lastSize.height = typeof height === 'number' ? height : parseFloat(height);
39640 }
39641 }
39642 else {
39643 eGui.style.maxHeight = 'unset';
39644 eGui.style.minHeight = 'unset';
39645 }
39646 };
39647 PositionableFeature.prototype.getWidth = function () {
39648 return this.element.offsetWidth;
39649 };
39650 PositionableFeature.prototype.setWidth = function (width) {
39651 var eGui = this.element;
39652 var popup = this.config.popup;
39653 var isPercent = false;
39654 if (typeof width === 'string' && width.indexOf('%') !== -1) {
39655 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setFixedWidth"])(eGui, width);
39656 width = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["getAbsoluteWidth"])(eGui);
39657 isPercent = true;
39658 }
39659 else if (this.positioned) {
39660 width = Math.max(this.minWidth, width);
39661 var clientWidth = this.offsetParent.clientWidth;
39662 var xPosition = popup ? this.position.x : this.element.getBoundingClientRect().left;
39663 if (clientWidth && (width + xPosition > clientWidth)) {
39664 width = clientWidth - xPosition;
39665 }
39666 }
39667 if (this.getWidth() === width) {
39668 return;
39669 }
39670 if (!isPercent) {
39671 if (this.config.popup) {
39672 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["setFixedWidth"])(eGui, width);
39673 }
39674 else {
39675 eGui.style.width = width + "px";
39676 eGui.style.flex = ' unset';
39677 this.lastSize.width = typeof width === 'number' ? width : parseFloat(width);
39678 }
39679 }
39680 else {
39681 eGui.style.maxWidth = 'unset';
39682 eGui.style.minWidth = 'unset';
39683 }
39684 };
39685 PositionableFeature.prototype.offsetElement = function (x, y) {
39686 if (x === void 0) { x = 0; }
39687 if (y === void 0) { y = 0; }
39688 var ePopup = this.config.forcePopupParentAsOffsetParent ? this.boundaryEl : this.element;
39689 this.popupService.positionPopup({
39690 ePopup: ePopup,
39691 x: x,
39692 y: y,
39693 keepWithinBounds: true
39694 });
39695 this.setPosition(parseFloat(ePopup.style.left), parseFloat(ePopup.style.top));
39696 };
39697 PositionableFeature.prototype.setPosition = function (x, y) {
39698 this.position.x = x;
39699 this.position.y = y;
39700 };
39701 PositionableFeature.prototype.updateDragStartPosition = function (x, y) {
39702 this.dragStartPosition = { x: x, y: y };
39703 };
39704 PositionableFeature.prototype.calculateMouseMovement = function (params) {
39705 var e = params.e, isLeft = params.isLeft, isTop = params.isTop, anywhereWithin = params.anywhereWithin, topBuffer = params.topBuffer;
39706 var xDiff = e.clientX - this.dragStartPosition.x;
39707 var yDiff = e.clientY - this.dragStartPosition.y;
39708 var movementX = this.shouldSkipX(e, !!isLeft, !!anywhereWithin, xDiff) ? 0 : xDiff;
39709 var movementY = this.shouldSkipY(e, !!isTop, topBuffer, yDiff) ? 0 : yDiff;
39710 return { movementX: movementX, movementY: movementY };
39711 };
39712 PositionableFeature.prototype.shouldSkipX = function (e, isLeft, anywhereWithin, diff) {
39713 var elRect = this.element.getBoundingClientRect();
39714 var parentRect = this.offsetParent.getBoundingClientRect();
39715 var boundaryElRect = this.boundaryEl.getBoundingClientRect();
39716 var xPosition = this.config.popup ? this.position.x : elRect.left;
39717 // skip if cursor is outside of popupParent horizontally
39718 var skipX = ((xPosition <= 0 && parentRect.left >= e.clientX) ||
39719 (parentRect.right <= e.clientX && parentRect.right <= boundaryElRect.right));
39720 if (skipX) {
39721 return true;
39722 }
39723 if (isLeft) {
39724 skipX = (
39725 // skip if we are moving to the left and the cursor
39726 // is positioned to the right of the left side anchor
39727 (diff < 0 && e.clientX > xPosition + parentRect.left) ||
39728 // skip if we are moving to the right and the cursor
39729 // is positioned to the left of the dialog
39730 (diff > 0 && e.clientX < xPosition + parentRect.left));
39731 }
39732 else {
39733 if (anywhereWithin) {
39734 // if anywhereWithin is true, we allow to move
39735 // as long as the cursor is within the dialog
39736 skipX = ((diff < 0 && e.clientX > boundaryElRect.right) ||
39737 (diff > 0 && e.clientX < xPosition + parentRect.left));
39738 }
39739 else {
39740 skipX = (
39741 // if the movement is bound to the right side of the dialog
39742 // we skip if we are moving to the left and the cursor
39743 // is to the right of the dialog
39744 (diff < 0 && e.clientX > boundaryElRect.right) ||
39745 // or skip if we are moving to the right and the cursor
39746 // is to the left of the right side anchor
39747 (diff > 0 && e.clientX < boundaryElRect.right));
39748 }
39749 }
39750 return skipX;
39751 };
39752 PositionableFeature.prototype.shouldSkipY = function (e, isTop, topBuffer, diff) {
39753 if (topBuffer === void 0) { topBuffer = 0; }
39754 var elRect = this.element.getBoundingClientRect();
39755 var parentRect = this.offsetParent.getBoundingClientRect();
39756 var boundaryElRect = this.boundaryEl.getBoundingClientRect();
39757 var yPosition = this.config.popup ? this.position.y : elRect.top;
39758 // skip if cursor is outside of popupParent vertically
39759 var skipY = ((yPosition <= 0 && parentRect.top >= e.clientY) ||
39760 (parentRect.bottom <= e.clientY && parentRect.bottom <= boundaryElRect.bottom));
39761 if (skipY) {
39762 return true;
39763 }
39764 if (isTop) {
39765 skipY = (
39766 // skip if we are moving to towards top and the cursor is
39767 // below the top anchor + topBuffer
39768 // note: topBuffer is used when moving the dialog using the title bar
39769 (diff < 0 && e.clientY > yPosition + parentRect.top + topBuffer) ||
39770 // skip if we are moving to the bottom and the cursor is
39771 // above the top anchor
39772 (diff > 0 && e.clientY < yPosition + parentRect.top));
39773 }
39774 else {
39775 skipY = (
39776 // skip if we are moving towards the top and the cursor
39777 // is below the bottom anchor
39778 (diff < 0 && e.clientY > boundaryElRect.bottom) ||
39779 // skip if we are moving towards the bottom and the cursor
39780 // is above the bottom anchor
39781 (diff > 0 && e.clientY < boundaryElRect.bottom));
39782 }
39783 return skipY;
39784 };
39785 PositionableFeature.prototype.createResizeMap = function () {
39786 var eGui = this.element;
39787 this.resizerMap = {
39788 topLeft: { element: eGui.querySelector('[ref=eTopLeftResizer]') },
39789 top: { element: eGui.querySelector('[ref=eTopResizer]') },
39790 topRight: { element: eGui.querySelector('[ref=eTopRightResizer]') },
39791 right: { element: eGui.querySelector('[ref=eRightResizer]') },
39792 bottomRight: { element: eGui.querySelector('[ref=eBottomRightResizer]') },
39793 bottom: { element: eGui.querySelector('[ref=eBottomResizer]') },
39794 bottomLeft: { element: eGui.querySelector('[ref=eBottomLeftResizer]') },
39795 left: { element: eGui.querySelector('[ref=eLeftResizer]') }
39796 };
39797 };
39798 PositionableFeature.prototype.addResizers = function () {
39799 if (this.resizersAdded) {
39800 return;
39801 }
39802 var eGui = this.element;
39803 if (!eGui) {
39804 return;
39805 }
39806 var parser = new DOMParser();
39807 var resizers = parser.parseFromString(RESIZE_TEMPLATE, 'text/html').body;
39808 eGui.appendChild(resizers.firstChild);
39809 this.createResizeMap();
39810 this.resizersAdded = true;
39811 };
39812 PositionableFeature.prototype.removeResizers = function () {
39813 this.resizerMap = undefined;
39814 var resizerEl = this.element.querySelector("." + RESIZE_CONTAINER_STYLE);
39815 if (resizerEl) {
39816 this.element.removeChild(resizerEl);
39817 }
39818 this.resizersAdded = false;
39819 };
39820 PositionableFeature.prototype.getResizerElement = function (side) {
39821 return this.resizerMap[side].element;
39822 };
39823 PositionableFeature.prototype.onResizeStart = function (e, side) {
39824 this.boundaryEl = this.findBoundaryElement();
39825 if (!this.positioned) {
39826 this.initialisePosition();
39827 }
39828 this.currentResizer = {
39829 isTop: !!side.match(/top/i),
39830 isRight: !!side.match(/right/i),
39831 isBottom: !!side.match(/bottom/i),
39832 isLeft: !!side.match(/left/i),
39833 };
39834 this.element.classList.add('ag-resizing');
39835 this.resizerMap[side].element.classList.add('ag-active');
39836 var _a = this.config, popup = _a.popup, forcePopupParentAsOffsetParent = _a.forcePopupParentAsOffsetParent;
39837 if (!popup && !forcePopupParentAsOffsetParent) {
39838 this.applySizeToSiblings(this.currentResizer.isBottom || this.currentResizer.isTop);
39839 }
39840 this.isResizing = true;
39841 this.updateDragStartPosition(e.clientX, e.clientY);
39842 };
39843 PositionableFeature.prototype.getSiblings = function () {
39844 var element = this.element;
39845 var parent = element.parentElement;
39846 if (!parent) {
39847 return null;
39848 }
39849 return Array.prototype.slice.call(parent.children).filter(function (el) { return !el.classList.contains('ag-hidden'); });
39850 };
39851 PositionableFeature.prototype.getMinSizeOfSiblings = function () {
39852 var siblings = this.getSiblings() || [];
39853 var height = 0;
39854 var width = 0;
39855 for (var i = 0; i < siblings.length; i++) {
39856 var currentEl = siblings[i];
39857 var isFlex = !!currentEl.style.flex && currentEl.style.flex !== '0 0 auto';
39858 if (currentEl === this.element) {
39859 continue;
39860 }
39861 var nextHeight = this.minHeight || 0;
39862 var nextWidth = this.minWidth || 0;
39863 if (isFlex) {
39864 var computedStyle = window.getComputedStyle(currentEl);
39865 if (computedStyle.minHeight) {
39866 nextHeight = parseInt(computedStyle.minHeight, 10);
39867 }
39868 if (computedStyle.minWidth) {
39869 nextWidth = parseInt(computedStyle.minWidth, 10);
39870 }
39871 }
39872 else {
39873 nextHeight = currentEl.offsetHeight;
39874 nextWidth = currentEl.offsetWidth;
39875 }
39876 height += nextHeight;
39877 width += nextWidth;
39878 }
39879 return { height: height, width: width };
39880 };
39881 PositionableFeature.prototype.applySizeToSiblings = function (vertical) {
39882 var containerToFlex = null;
39883 var siblings = this.getSiblings();
39884 if (!siblings) {
39885 return;
39886 }
39887 for (var i = 0; i < siblings.length; i++) {
39888 var el = siblings[i];
39889 if (el === containerToFlex) {
39890 continue;
39891 }
39892 if (vertical) {
39893 el.style.height = el.offsetHeight + "px";
39894 }
39895 else {
39896 el.style.width = el.offsetWidth + "px";
39897 }
39898 el.style.flex = '0 0 auto';
39899 if (el === this.element) {
39900 containerToFlex = siblings[i + 1];
39901 }
39902 }
39903 if (containerToFlex) {
39904 containerToFlex.style.removeProperty('height');
39905 containerToFlex.style.removeProperty('min-height');
39906 containerToFlex.style.removeProperty('max-height');
39907 containerToFlex.style.flex = '1 1 auto';
39908 }
39909 };
39910 PositionableFeature.prototype.onResize = function (e) {
39911 if (!this.isResizing || !this.currentResizer) {
39912 return;
39913 }
39914 var _a = this.config, popup = _a.popup, forcePopupParentAsOffsetParent = _a.forcePopupParentAsOffsetParent;
39915 var _b = this.currentResizer, isTop = _b.isTop, isRight = _b.isRight, isBottom = _b.isBottom, isLeft = _b.isLeft;
39916 var isHorizontal = isRight || isLeft;
39917 var isVertical = isBottom || isTop;
39918 var _c = this.calculateMouseMovement({ e: e, isLeft: isLeft, isTop: isTop }), movementX = _c.movementX, movementY = _c.movementY;
39919 var xPosition = this.position.x;
39920 var yPosition = this.position.y;
39921 var offsetLeft = 0;
39922 var offsetTop = 0;
39923 if (isHorizontal && movementX) {
39924 var direction = isLeft ? -1 : 1;
39925 var oldWidth = this.getWidth();
39926 var newWidth = oldWidth + (movementX * direction);
39927 var skipWidth = false;
39928 if (isLeft) {
39929 offsetLeft = oldWidth - newWidth;
39930 if (xPosition + offsetLeft <= 0 || newWidth <= this.minWidth) {
39931 skipWidth = true;
39932 offsetLeft = 0;
39933 }
39934 }
39935 if (!skipWidth) {
39936 this.setWidth(newWidth);
39937 }
39938 }
39939 if (isVertical && movementY) {
39940 var direction = isTop ? -1 : 1;
39941 var oldHeight = this.getHeight();
39942 var newHeight = oldHeight + (movementY * direction);
39943 var skipHeight = false;
39944 if (isTop) {
39945 offsetTop = oldHeight - newHeight;
39946 if (yPosition + offsetTop <= 0 || newHeight <= this.minHeight) {
39947 skipHeight = true;
39948 offsetTop = 0;
39949 }
39950 }
39951 else {
39952 // do not let the size of all siblings be higher than the parent container
39953 if (!this.config.popup &&
39954 !this.config.forcePopupParentAsOffsetParent &&
39955 oldHeight < newHeight &&
39956 (this.getMinSizeOfSiblings().height + newHeight) > this.element.parentElement.offsetHeight) {
39957 skipHeight = true;
39958 }
39959 }
39960 if (!skipHeight) {
39961 this.setHeight(newHeight);
39962 }
39963 }
39964 this.updateDragStartPosition(e.clientX, e.clientY);
39965 if ((popup || forcePopupParentAsOffsetParent) && offsetLeft || offsetTop) {
39966 this.offsetElement(xPosition + offsetLeft, yPosition + offsetTop);
39967 }
39968 };
39969 PositionableFeature.prototype.onResizeEnd = function (e, side) {
39970 this.isResizing = false;
39971 this.currentResizer = null;
39972 this.boundaryEl = null;
39973 var params = {
39974 type: 'resize',
39975 api: this.gridOptionsWrapper.getApi(),
39976 columnApi: this.gridOptionsWrapper.getColumnApi()
39977 };
39978 this.element.classList.remove('ag-resizing');
39979 this.resizerMap[side].element.classList.remove('ag-active');
39980 this.dispatchEvent(params);
39981 };
39982 PositionableFeature.prototype.refreshSize = function () {
39983 var eGui = this.element;
39984 if (this.config.popup) {
39985 if (!this.config.width) {
39986 this.setWidth(eGui.offsetWidth);
39987 }
39988 if (!this.config.height) {
39989 this.setHeight(eGui.offsetHeight);
39990 }
39991 }
39992 };
39993 PositionableFeature.prototype.onMoveStart = function (e) {
39994 this.boundaryEl = this.findBoundaryElement();
39995 if (!this.positioned) {
39996 this.initialisePosition();
39997 }
39998 this.isMoving = true;
39999 this.element.classList.add('ag-moving');
40000 this.updateDragStartPosition(e.clientX, e.clientY);
40001 };
40002 PositionableFeature.prototype.onMove = function (e) {
40003 if (!this.isMoving) {
40004 return;
40005 }
40006 var _a = this.position, x = _a.x, y = _a.y;
40007 var topBuffer;
40008 if (this.config.calculateTopBuffer) {
40009 topBuffer = this.config.calculateTopBuffer();
40010 }
40011 var _b = this.calculateMouseMovement({
40012 e: e,
40013 isTop: true,
40014 anywhereWithin: true,
40015 topBuffer: topBuffer
40016 }), movementX = _b.movementX, movementY = _b.movementY;
40017 this.offsetElement(x + movementX, y + movementY);
40018 this.updateDragStartPosition(e.clientX, e.clientY);
40019 };
40020 PositionableFeature.prototype.onMoveEnd = function () {
40021 this.isMoving = false;
40022 this.boundaryEl = null;
40023 this.element.classList.remove('ag-moving');
40024 };
40025 PositionableFeature.prototype.setOffsetParent = function () {
40026 if (this.config.forcePopupParentAsOffsetParent) {
40027 this.offsetParent = this.popupService.getPopupParent();
40028 }
40029 else {
40030 this.offsetParent = this.element.offsetParent;
40031 }
40032 };
40033 PositionableFeature.prototype.findBoundaryElement = function () {
40034 var el = this.element;
40035 while (el) {
40036 if (window.getComputedStyle(el).position !== 'static') {
40037 return el;
40038 }
40039 el = el.parentElement;
40040 }
40041 return this.element;
40042 };
40043 PositionableFeature.prototype.clearResizeListeners = function () {
40044 while (this.resizeListeners.length) {
40045 var params = this.resizeListeners.pop();
40046 this.dragService.removeDragSource(params);
40047 }
40048 };
40049 PositionableFeature.prototype.destroy = function () {
40050 _super.prototype.destroy.call(this);
40051 if (this.moveElementDragListener) {
40052 this.dragService.removeDragSource(this.moveElementDragListener);
40053 }
40054 this.clearResizeListeners();
40055 this.removeResizers();
40056 };
40057 __decorate([
40058 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('popupService')
40059 ], PositionableFeature.prototype, "popupService", void 0);
40060 __decorate([
40061 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('dragService')
40062 ], PositionableFeature.prototype, "dragService", void 0);
40063 return PositionableFeature;
40064}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
40065
40066
40067
40068
40069
40070/***/ }),
40071/* 177 */
40072/***/ (function(module, __webpack_exports__, __webpack_require__) {
40073
40074"use strict";
40075__webpack_require__.r(__webpack_exports__);
40076/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AutoWidthCalculator", function() { return AutoWidthCalculator; });
40077/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
40078/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
40079/**
40080 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
40081 * @version v27.3.0
40082 * @link https://www.ag-grid.com/
40083 * @license MIT
40084 */
40085var __extends = (undefined && undefined.__extends) || (function () {
40086 var extendStatics = function (d, b) {
40087 extendStatics = Object.setPrototypeOf ||
40088 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
40089 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
40090 return extendStatics(d, b);
40091 };
40092 return function (d, b) {
40093 extendStatics(d, b);
40094 function __() { this.constructor = d; }
40095 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
40096 };
40097})();
40098var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
40099 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
40100 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
40101 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
40102 return c > 3 && r && Object.defineProperty(target, key, r), r;
40103};
40104
40105
40106var AutoWidthCalculator = /** @class */ (function (_super) {
40107 __extends(AutoWidthCalculator, _super);
40108 function AutoWidthCalculator() {
40109 return _super !== null && _super.apply(this, arguments) || this;
40110 }
40111 AutoWidthCalculator.prototype.postConstruct = function () {
40112 var _this = this;
40113 this.ctrlsService.whenReady(function (p) {
40114 _this.centerRowContainerCtrl = p.centerRowContainerCtrl;
40115 });
40116 };
40117 // this is the trick: we create a dummy container and clone all the cells
40118 // into the dummy, then check the dummy's width. then destroy the dummy
40119 // as we don't need it any more.
40120 // drawback: only the cells visible on the screen are considered
40121 AutoWidthCalculator.prototype.getPreferredWidthForColumn = function (column, skipHeader) {
40122 var eHeaderCell = this.getHeaderCellForColumn(column);
40123 // cell isn't visible
40124 if (!eHeaderCell) {
40125 return -1;
40126 }
40127 var elements = this.rowRenderer.getAllCellsForColumn(column);
40128 if (!skipHeader) {
40129 // we only consider the lowest level cell, not the group cell. in 99% of the time, this
40130 // will be enough. if we consider groups, then it gets too complicated for what it's worth,
40131 // as the groups can span columns and this class only considers one column at a time.
40132 elements.push(eHeaderCell);
40133 }
40134 return this.addElementsToContainerAndGetWidth(elements);
40135 };
40136 AutoWidthCalculator.prototype.getPreferredWidthForColumnGroup = function (columnGroup) {
40137 var eHeaderCell = this.getHeaderCellForColumn(columnGroup);
40138 if (!eHeaderCell) {
40139 return -1;
40140 }
40141 return this.addElementsToContainerAndGetWidth([eHeaderCell]);
40142 };
40143 AutoWidthCalculator.prototype.addElementsToContainerAndGetWidth = function (elements) {
40144 var _this = this;
40145 var eDummyContainer = document.createElement('span');
40146 // position fixed, so it isn't restricted to the boundaries of the parent
40147 eDummyContainer.style.position = 'fixed';
40148 // we put the dummy into the body container, so it will inherit all the
40149 // css styles that the real cells are inheriting
40150 var eBodyContainer = this.centerRowContainerCtrl.getContainerElement();
40151 eBodyContainer.appendChild(eDummyContainer);
40152 elements.forEach(function (el) { return _this.cloneItemIntoDummy(el, eDummyContainer); });
40153 // at this point, all the clones are lined up vertically with natural widths. the dummy
40154 // container will have a width wide enough just to fit the largest.
40155 var dummyContainerWidth = eDummyContainer.offsetWidth;
40156 // we are finished with the dummy container, so get rid of it
40157 eBodyContainer.removeChild(eDummyContainer);
40158 // we add padding as I found sometimes the gui still put '...' after some of the texts. so the
40159 // user can configure the grid to add a few more pixels after the calculated width
40160 var autoSizePadding = this.gridOptionsWrapper.getAutoSizePadding();
40161 return dummyContainerWidth + autoSizePadding;
40162 };
40163 AutoWidthCalculator.prototype.getHeaderCellForColumn = function (column) {
40164 /* tslint:enable */
40165 var element = null;
40166 this.ctrlsService.getHeaderRowContainerCtrls().forEach(function (container) {
40167 var res = container.getHtmlElementForColumnHeader(column);
40168 if (res != null) {
40169 element = res;
40170 }
40171 });
40172 return element;
40173 };
40174 AutoWidthCalculator.prototype.cloneItemIntoDummy = function (eCell, eDummyContainer) {
40175 // make a deep clone of the cell
40176 var eCellClone = eCell.cloneNode(true);
40177 // the original has a fixed width, we remove this to allow the natural width based on content
40178 eCellClone.style.width = '';
40179 // the original has position = absolute, we need to remove this so it's positioned normally
40180 eCellClone.style.position = 'static';
40181 eCellClone.style.left = '';
40182 // we put the cell into a containing div, as otherwise the cells would just line up
40183 // on the same line, standard flow layout, by putting them into divs, they are laid
40184 // out one per line
40185 var eCloneParent = document.createElement('div');
40186 var eCloneParentClassList = eCloneParent.classList;
40187 var isHeader = ['ag-header-cell', 'ag-header-group-cell'].some(function (cls) { return eCellClone.classList.contains(cls); });
40188 if (isHeader) {
40189 eCloneParentClassList.add('ag-header', 'ag-header-row');
40190 eCloneParent.style.position = 'static';
40191 }
40192 else {
40193 eCloneParentClassList.add('ag-row');
40194 }
40195 // find parent using classes (headers have ag-header-cell, rows have ag-row), and copy classes from it.
40196 // if we didn't do this, things like ag-row-level-2 would be missing if present, which sets indents
40197 // onto group items.
40198 var pointer = eCell.parentElement;
40199 while (pointer) {
40200 var isRow = ['ag-header-row', 'ag-row'].some(function (cls) { return pointer.classList.contains(cls); });
40201 if (isRow) {
40202 for (var i = 0; i < pointer.classList.length; i++) {
40203 var item = pointer.classList[i];
40204 // we skip ag-row-position-absolute, as this has structural CSS applied that stops the
40205 // element from fitting into it's parent, and we need the element to stretch the parent
40206 // as we are measuring the parents width
40207 if (item != 'ag-row-position-absolute') {
40208 eCloneParentClassList.add(item);
40209 }
40210 }
40211 break;
40212 }
40213 pointer = pointer.parentElement;
40214 }
40215 // the twig on the branch, the branch on the tree, the tree in the hole,
40216 // the hole in the bog, the bog in the clone, the clone in the parent,
40217 // the parent in the dummy, and the dummy down in the vall-e-ooo, OOOOOOOOO! Oh row the rattling bog....
40218 eCloneParent.appendChild(eCellClone);
40219 eDummyContainer.appendChild(eCloneParent);
40220 };
40221 __decorate([
40222 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowRenderer')
40223 ], AutoWidthCalculator.prototype, "rowRenderer", void 0);
40224 __decorate([
40225 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
40226 ], AutoWidthCalculator.prototype, "ctrlsService", void 0);
40227 __decorate([
40228 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowCssClassCalculator')
40229 ], AutoWidthCalculator.prototype, "rowCssClassCalculator", void 0);
40230 __decorate([
40231 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
40232 ], AutoWidthCalculator.prototype, "postConstruct", null);
40233 AutoWidthCalculator = __decorate([
40234 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('autoWidthCalculator')
40235 ], AutoWidthCalculator);
40236 return AutoWidthCalculator;
40237}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
40238
40239
40240
40241
40242
40243/***/ }),
40244/* 178 */
40245/***/ (function(module, __webpack_exports__, __webpack_require__) {
40246
40247"use strict";
40248__webpack_require__.r(__webpack_exports__);
40249/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowRenderer", function() { return RowRenderer; });
40250/* harmony import */ var _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(112);
40251/* harmony import */ var _row_rowCtrl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(120);
40252/* harmony import */ var _entities_column__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10);
40253/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(23);
40254/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(15);
40255/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(12);
40256/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(20);
40257/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(7);
40258/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(13);
40259/* harmony import */ var _utils_number__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(46);
40260/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(14);
40261/* harmony import */ var _cell_cellCtrl__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(121);
40262/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(18);
40263/**
40264 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
40265 * @version v27.3.0
40266 * @link https://www.ag-grid.com/
40267 * @license MIT
40268 */
40269var __extends = (undefined && undefined.__extends) || (function () {
40270 var extendStatics = function (d, b) {
40271 extendStatics = Object.setPrototypeOf ||
40272 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
40273 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
40274 return extendStatics(d, b);
40275 };
40276 return function (d, b) {
40277 extendStatics(d, b);
40278 function __() { this.constructor = d; }
40279 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
40280 };
40281})();
40282var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
40283 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
40284 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
40285 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
40286 return c > 3 && r && Object.defineProperty(target, key, r), r;
40287};
40288var __read = (undefined && undefined.__read) || function (o, n) {
40289 var m = typeof Symbol === "function" && o[Symbol.iterator];
40290 if (!m) return o;
40291 var i = m.call(o), r, ar = [], e;
40292 try {
40293 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
40294 }
40295 catch (error) { e = { error: error }; }
40296 finally {
40297 try {
40298 if (r && !r.done && (m = i["return"])) m.call(i);
40299 }
40300 finally { if (e) throw e.error; }
40301 }
40302 return ar;
40303};
40304var __spread = (undefined && undefined.__spread) || function () {
40305 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
40306 return ar;
40307};
40308
40309
40310
40311
40312
40313
40314
40315
40316
40317
40318
40319
40320
40321var RowRenderer = /** @class */ (function (_super) {
40322 __extends(RowRenderer, _super);
40323 function RowRenderer() {
40324 var _this = _super !== null && _super.apply(this, arguments) || this;
40325 _this.destroyFuncsForColumnListeners = [];
40326 // map of row ids to row objects. keeps track of which elements
40327 // are rendered for which rows in the dom.
40328 _this.rowCtrlsByRowIndex = {};
40329 _this.zombieRowCtrls = {};
40330 _this.allRowCtrls = [];
40331 _this.topRowCtrls = [];
40332 _this.bottomRowCtrls = [];
40333 // we only allow one refresh at a time, otherwise the internal memory structure here
40334 // will get messed up. this can happen if the user has a cellRenderer, and inside the
40335 // renderer they call an API method that results in another pass of the refresh,
40336 // then it will be trying to draw rows in the middle of a refresh.
40337 _this.refreshInProgress = false;
40338 return _this;
40339 }
40340 RowRenderer.prototype.postConstruct = function () {
40341 var _this = this;
40342 this.ctrlsService.whenReady(function () {
40343 _this.gridBodyCtrl = _this.ctrlsService.getGridBodyCtrl();
40344 _this.initialise();
40345 });
40346 };
40347 RowRenderer.prototype.initialise = function () {
40348 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_PAGINATION_CHANGED, this.onPageLoaded.bind(this));
40349 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_PINNED_ROW_DATA_CHANGED, this.onPinnedRowDataChanged.bind(this));
40350 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED, this.onDisplayedColumnsChanged.bind(this));
40351 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_BODY_SCROLL, this.redrawAfterScroll.bind(this));
40352 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_BODY_HEIGHT_CHANGED, this.redrawAfterScroll.bind(this));
40353 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_0__["GridOptionsWrapper"].PROP_DOM_LAYOUT, this.onDomLayoutChanged.bind(this));
40354 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_0__["GridOptionsWrapper"].PROP_ROW_CLASS, this.redrawRows.bind(this));
40355 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_NEW_COLUMNS_LOADED, this.onNewColumnsLoaded.bind(this));
40356 this.registerCellEventListeners();
40357 this.initialiseCache();
40358 this.printLayout = this.gridOptionsWrapper.getDomLayout() === _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].DOM_LAYOUT_PRINT;
40359 this.embedFullWidthRows = this.printLayout || this.gridOptionsWrapper.isEmbedFullWidthRows();
40360 this.redrawAfterModelUpdate();
40361 };
40362 RowRenderer.prototype.initialiseCache = function () {
40363 if (this.gridOptionsWrapper.isKeepDetailRows()) {
40364 var countProp = this.gridOptionsWrapper.getKeepDetailRowsCount();
40365 var count = countProp != null ? countProp : 3;
40366 this.cachedRowCtrls = new RowCtrlCache(count);
40367 }
40368 };
40369 RowRenderer.prototype.getRowCtrls = function () {
40370 return this.allRowCtrls;
40371 };
40372 RowRenderer.prototype.updateAllRowCtrls = function () {
40373 var liveList = Object(_utils_object__WEBPACK_IMPORTED_MODULE_8__["getAllValuesInObject"])(this.rowCtrlsByRowIndex);
40374 if (this.gridOptionsWrapper.isEnsureDomOrder()) {
40375 liveList.sort(function (a, b) { return a.getRowNode().rowIndex - b.getRowNode.rowIndex; });
40376 }
40377 var zombieList = Object(_utils_object__WEBPACK_IMPORTED_MODULE_8__["getAllValuesInObject"])(this.zombieRowCtrls);
40378 var cachedList = this.cachedRowCtrls ? this.cachedRowCtrls.getEntries() : [];
40379 this.allRowCtrls = __spread(liveList, zombieList, cachedList);
40380 };
40381 // in a clean design, each cell would register for each of these events. however when scrolling, all the cells
40382 // registering and de-registering for events is a performance bottleneck. so we register here once and inform
40383 // all active cells.
40384 RowRenderer.prototype.registerCellEventListeners = function () {
40385 var _this = this;
40386 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_CELL_FOCUSED, function (event) {
40387 _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onCellFocused(event); });
40388 _this.getFullWidthRowCtrls().forEach(function (rowCtrl) {
40389 rowCtrl.onFullWidthRowFocused(event);
40390 });
40391 });
40392 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_FLASH_CELLS, function (event) {
40393 _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onFlashCells(event); });
40394 });
40395 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_COLUMN_HOVER_CHANGED, function () {
40396 _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onColumnHover(); });
40397 });
40398 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED, function () {
40399 _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onDisplayedColumnsChanged(); });
40400 });
40401 // only for printLayout - because we are rendering all the cells in the same row, regardless of pinned state,
40402 // then changing the width of the containers will impact left position. eg the center cols all have their
40403 // left position adjusted by the width of the left pinned column, so if the pinned left column width changes,
40404 // all the center cols need to be shifted to accommodate this. when in normal layout, the pinned cols are
40405 // in different containers so doesn't impact.
40406 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, function () {
40407 if (_this.printLayout) {
40408 _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onLeftChanged(); });
40409 }
40410 });
40411 var rangeSelectionEnabled = this.gridOptionsWrapper.isEnableRangeSelection();
40412 if (rangeSelectionEnabled) {
40413 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_RANGE_SELECTION_CHANGED, function () {
40414 _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onRangeSelectionChanged(); });
40415 });
40416 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_COLUMN_MOVED, function () {
40417 _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.updateRangeBordersIfRangeCount(); });
40418 });
40419 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_COLUMN_PINNED, function () {
40420 _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.updateRangeBordersIfRangeCount(); });
40421 });
40422 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_COLUMN_VISIBLE, function () {
40423 _this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.updateRangeBordersIfRangeCount(); });
40424 });
40425 }
40426 // add listeners to the grid columns
40427 this.refreshListenersToColumnsForCellComps();
40428 // if the grid columns change, then refresh the listeners again
40429 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_GRID_COLUMNS_CHANGED, this.refreshListenersToColumnsForCellComps.bind(this));
40430 this.addDestroyFunc(this.removeGridColumnListeners.bind(this));
40431 };
40432 // executes all functions in destroyFuncsForColumnListeners and then clears the list
40433 RowRenderer.prototype.removeGridColumnListeners = function () {
40434 this.destroyFuncsForColumnListeners.forEach(function (func) { return func(); });
40435 this.destroyFuncsForColumnListeners.length = 0;
40436 };
40437 // this function adds listeners onto all the grid columns, which are the column that we could have cellComps for.
40438 // when the grid columns change, we add listeners again. in an ideal design, each CellComp would just register to
40439 // the column it belongs to on creation, however this was a bottleneck with the number of cells, so do it here
40440 // once instead.
40441 RowRenderer.prototype.refreshListenersToColumnsForCellComps = function () {
40442 var _this = this;
40443 this.removeGridColumnListeners();
40444 var cols = this.columnModel.getAllGridColumns();
40445 if (!cols) {
40446 return;
40447 }
40448 cols.forEach(function (col) {
40449 var forEachCellWithThisCol = function (callback) {
40450 _this.getAllCellCtrls().forEach(function (cellCtrl) {
40451 if (cellCtrl.getColumn() === col) {
40452 callback(cellCtrl);
40453 }
40454 });
40455 };
40456 var leftChangedListener = function () {
40457 forEachCellWithThisCol(function (cellCtrl) { return cellCtrl.onLeftChanged(); });
40458 };
40459 var widthChangedListener = function () {
40460 forEachCellWithThisCol(function (cellCtrl) { return cellCtrl.onWidthChanged(); });
40461 };
40462 var firstRightPinnedChangedListener = function () {
40463 forEachCellWithThisCol(function (cellCtrl) { return cellCtrl.onFirstRightPinnedChanged(); });
40464 };
40465 var lastLeftPinnedChangedListener = function () {
40466 forEachCellWithThisCol(function (cellCtrl) { return cellCtrl.onLastLeftPinnedChanged(); });
40467 };
40468 col.addEventListener(_entities_column__WEBPACK_IMPORTED_MODULE_2__["Column"].EVENT_LEFT_CHANGED, leftChangedListener);
40469 col.addEventListener(_entities_column__WEBPACK_IMPORTED_MODULE_2__["Column"].EVENT_WIDTH_CHANGED, widthChangedListener);
40470 col.addEventListener(_entities_column__WEBPACK_IMPORTED_MODULE_2__["Column"].EVENT_FIRST_RIGHT_PINNED_CHANGED, firstRightPinnedChangedListener);
40471 col.addEventListener(_entities_column__WEBPACK_IMPORTED_MODULE_2__["Column"].EVENT_LAST_LEFT_PINNED_CHANGED, lastLeftPinnedChangedListener);
40472 _this.destroyFuncsForColumnListeners.push(function () {
40473 col.removeEventListener(_entities_column__WEBPACK_IMPORTED_MODULE_2__["Column"].EVENT_LEFT_CHANGED, leftChangedListener);
40474 col.removeEventListener(_entities_column__WEBPACK_IMPORTED_MODULE_2__["Column"].EVENT_WIDTH_CHANGED, widthChangedListener);
40475 col.removeEventListener(_entities_column__WEBPACK_IMPORTED_MODULE_2__["Column"].EVENT_FIRST_RIGHT_PINNED_CHANGED, firstRightPinnedChangedListener);
40476 col.removeEventListener(_entities_column__WEBPACK_IMPORTED_MODULE_2__["Column"].EVENT_LAST_LEFT_PINNED_CHANGED, lastLeftPinnedChangedListener);
40477 });
40478 });
40479 };
40480 RowRenderer.prototype.onDomLayoutChanged = function () {
40481 var printLayout = this.gridOptionsWrapper.getDomLayout() === _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].DOM_LAYOUT_PRINT;
40482 var embedFullWidthRows = printLayout || this.gridOptionsWrapper.isEmbedFullWidthRows();
40483 // if moving towards or away from print layout, means we need to destroy all rows, as rows are not laid
40484 // out using absolute positioning when doing print layout
40485 var destroyRows = embedFullWidthRows !== this.embedFullWidthRows || this.printLayout !== printLayout;
40486 this.printLayout = printLayout;
40487 this.embedFullWidthRows = embedFullWidthRows;
40488 if (destroyRows) {
40489 this.redrawAfterModelUpdate();
40490 }
40491 };
40492 // for row models that have datasources, when we update the datasource, we need to force the rowRenderer
40493 // to redraw all rows. otherwise the old rows from the old datasource will stay displayed.
40494 RowRenderer.prototype.datasourceChanged = function () {
40495 this.firstRenderedRow = 0;
40496 this.lastRenderedRow = -1;
40497 var rowIndexesToRemove = Object.keys(this.rowCtrlsByRowIndex);
40498 this.removeRowCtrls(rowIndexesToRemove);
40499 };
40500 RowRenderer.prototype.onPageLoaded = function (event) {
40501 var params = {
40502 recycleRows: event.keepRenderedRows,
40503 animate: event.animate,
40504 newData: event.newData,
40505 newPage: event.newPage,
40506 // because this is a model updated event (not pinned rows), we
40507 // can skip updating the pinned rows. this is needed so that if user
40508 // is doing transaction updates, the pinned rows are not getting constantly
40509 // trashed - or editing cells in pinned rows are not refreshed and put into read mode
40510 onlyBody: true
40511 };
40512 this.redrawAfterModelUpdate(params);
40513 };
40514 RowRenderer.prototype.getAllCellsForColumn = function (column) {
40515 var res = [];
40516 this.getAllRowCtrls().forEach(function (rowCtrl) {
40517 var eCell = rowCtrl.getCellElement(column);
40518 if (eCell) {
40519 res.push(eCell);
40520 }
40521 });
40522 return res;
40523 };
40524 RowRenderer.prototype.refreshFloatingRowComps = function () {
40525 this.refreshFloatingRows(this.topRowCtrls, this.pinnedRowModel.getPinnedTopRowData());
40526 this.refreshFloatingRows(this.bottomRowCtrls, this.pinnedRowModel.getPinnedBottomRowData());
40527 };
40528 RowRenderer.prototype.getTopRowCtrls = function () {
40529 return this.topRowCtrls;
40530 };
40531 RowRenderer.prototype.getBottomRowCtrls = function () {
40532 return this.bottomRowCtrls;
40533 };
40534 RowRenderer.prototype.refreshFloatingRows = function (rowComps, rowNodes) {
40535 var _this = this;
40536 rowComps.forEach(function (row) {
40537 row.destroyFirstPass();
40538 row.destroySecondPass();
40539 });
40540 rowComps.length = 0;
40541 if (!rowNodes) {
40542 return;
40543 }
40544 rowNodes.forEach(function (rowNode) {
40545 var rowCtrl = new _row_rowCtrl__WEBPACK_IMPORTED_MODULE_1__["RowCtrl"](rowNode, _this.beans, false, false, _this.printLayout);
40546 rowComps.push(rowCtrl);
40547 });
40548 };
40549 RowRenderer.prototype.onPinnedRowDataChanged = function () {
40550 // recycling rows in order to ensure cell editing is not cancelled
40551 var params = {
40552 recycleRows: true
40553 };
40554 this.redrawAfterModelUpdate(params);
40555 };
40556 // if the row nodes are not rendered, no index is returned
40557 RowRenderer.prototype.getRenderedIndexesForRowNodes = function (rowNodes) {
40558 var result = [];
40559 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_7__["missing"])(rowNodes)) {
40560 return result;
40561 }
40562 Object(_utils_object__WEBPACK_IMPORTED_MODULE_8__["iterateObject"])(this.rowCtrlsByRowIndex, function (index, renderedRow) {
40563 var rowNode = renderedRow.getRowNode();
40564 if (rowNodes.indexOf(rowNode) >= 0) {
40565 result.push(index);
40566 }
40567 });
40568 return result;
40569 };
40570 RowRenderer.prototype.redrawRows = function (rowNodes) {
40571 // if no row nodes provided, then refresh everything
40572 var partialRefresh = rowNodes != null && rowNodes.length > 0;
40573 if (partialRefresh) {
40574 var indexesToRemove = this.getRenderedIndexesForRowNodes(rowNodes);
40575 // remove the rows
40576 this.removeRowCtrls(indexesToRemove);
40577 }
40578 // add draw them again
40579 this.redrawAfterModelUpdate({
40580 recycleRows: partialRefresh
40581 });
40582 };
40583 RowRenderer.prototype.getCellToRestoreFocusToAfterRefresh = function (params) {
40584 var focusedCell = params.suppressKeepFocus ? null : this.focusService.getFocusCellToUseAfterRefresh();
40585 if (focusedCell == null) {
40586 return null;
40587 }
40588 // if the dom is not actually focused on a cell, then we don't try to refocus. the problem this
40589 // solves is with editing - if the user is editing, eg focus is on a text field, and not on the
40590 // cell itself, then the cell can be registered as having focus, however it's the text field that
40591 // has the focus and not the cell div. therefore, when the refresh is finished, the grid will focus
40592 // the cell, and not the textfield. that means if the user is in a text field, and the grid refreshes,
40593 // the focus is lost from the text field. we do not want this.
40594 var eDocument = this.gridOptionsWrapper.getDocument();
40595 var activeElement = eDocument.activeElement;
40596 var cellDomData = this.gridOptionsWrapper.getDomData(activeElement, _cell_cellCtrl__WEBPACK_IMPORTED_MODULE_11__["CellCtrl"].DOM_DATA_KEY_CELL_CTRL);
40597 var rowDomData = this.gridOptionsWrapper.getDomData(activeElement, _row_rowCtrl__WEBPACK_IMPORTED_MODULE_1__["RowCtrl"].DOM_DATA_KEY_ROW_CTRL);
40598 var gridElementFocused = cellDomData || rowDomData;
40599 return gridElementFocused ? focusedCell : null;
40600 };
40601 // gets called from:
40602 // +) initialisation (in registerGridComp) params = null
40603 // +) onDomLayoutChanged, params = null
40604 // +) onPageLoaded, recycleRows, animate, newData, newPage from event, onlyBody=true
40605 // +) onPinnedRowDataChanged, recycleRows = true
40606 // +) redrawRows (from Grid API), recycleRows = true/false
40607 RowRenderer.prototype.redrawAfterModelUpdate = function (params) {
40608 if (params === void 0) { params = {}; }
40609 this.getLockOnRefresh();
40610 var focusedCell = this.getCellToRestoreFocusToAfterRefresh(params);
40611 this.updateContainerHeights();
40612 this.scrollToTopIfNewData(params);
40613 // never recycle rows when print layout, we draw each row again from scratch. this is because print layout
40614 // uses normal dom layout to put cells into dom - it doesn't allow reordering rows.
40615 var recycleRows = !this.printLayout && !!params.recycleRows;
40616 var animate = params.animate && this.gridOptionsWrapper.isAnimateRows();
40617 // after modelUpdate, row indexes can change, so we clear out the rowsByIndex map,
40618 // however we can reuse the rows, so we keep them but index by rowNode.id
40619 var rowsToRecycle = recycleRows ? this.recycleRows() : null;
40620 if (!recycleRows) {
40621 this.removeAllRowComps();
40622 }
40623 var isFocusedCellGettingRecycled = function () {
40624 if (focusedCell == null || rowsToRecycle == null) {
40625 return false;
40626 }
40627 var res = false;
40628 Object(_utils_object__WEBPACK_IMPORTED_MODULE_8__["iterateObject"])(rowsToRecycle, function (key, rowComp) {
40629 var rowNode = rowComp.getRowNode();
40630 var rowIndexEqual = rowNode.rowIndex == focusedCell.rowIndex;
40631 var pinnedEqual = rowNode.rowPinned == focusedCell.rowPinned;
40632 if (rowIndexEqual && pinnedEqual) {
40633 res = true;
40634 }
40635 });
40636 return res;
40637 };
40638 var focusedCellRecycled = isFocusedCellGettingRecycled();
40639 this.redraw(rowsToRecycle, animate);
40640 if (!params.onlyBody) {
40641 this.refreshFloatingRowComps();
40642 }
40643 this.dispatchDisplayedRowsChanged();
40644 // if we focus a cell that's already focused, then we get an unnecessary 'cellFocused' event fired.
40645 // this was happening when user clicked 'expand' on a rowGroup, then cellFocused was getting fired twice.
40646 if (!focusedCellRecycled) {
40647 this.restoreFocusedCell(focusedCell);
40648 }
40649 this.releaseLockOnRefresh();
40650 };
40651 RowRenderer.prototype.scrollToTopIfNewData = function (params) {
40652 var scrollToTop = params.newData || params.newPage;
40653 var suppressScrollToTop = this.gridOptionsWrapper.isSuppressScrollOnNewData();
40654 if (scrollToTop && !suppressScrollToTop) {
40655 this.gridBodyCtrl.getScrollFeature().scrollToTop();
40656 }
40657 };
40658 RowRenderer.prototype.updateContainerHeights = function () {
40659 // when doing print layout, we don't explicitly set height on the containers
40660 if (this.printLayout) {
40661 this.rowContainerHeightService.setModelHeight(null);
40662 return;
40663 }
40664 var containerHeight = this.paginationProxy.getCurrentPageHeight();
40665 // we need at least 1 pixel for the horizontal scroll to work. so if there are now rows,
40666 // we still want the scroll to be present, otherwise there would be no way to scroll the header
40667 // which might be needed us user wants to access columns
40668 // on the RHS - and if that was where the filter was that cause no rows to be presented, there
40669 // is no way to remove the filter.
40670 if (containerHeight === 0) {
40671 containerHeight = 1;
40672 }
40673 this.rowContainerHeightService.setModelHeight(containerHeight);
40674 };
40675 RowRenderer.prototype.getLockOnRefresh = function () {
40676 if (this.refreshInProgress) {
40677 throw new Error("AG Grid: cannot get grid to draw rows when it is in the middle of drawing rows. " +
40678 "Your code probably called a grid API method while the grid was in the render stage. To overcome " +
40679 "this, put the API call into a timeout, e.g. instead of api.redrawRows(), " +
40680 "call setTimeout(function() { api.redrawRows(); }, 0). To see what part of your code " +
40681 "that caused the refresh check this stacktrace.");
40682 }
40683 this.refreshInProgress = true;
40684 };
40685 RowRenderer.prototype.releaseLockOnRefresh = function () {
40686 this.refreshInProgress = false;
40687 };
40688 RowRenderer.prototype.isRefreshInProgress = function () {
40689 return this.refreshInProgress;
40690 };
40691 // sets the focus to the provided cell, if the cell is provided. this way, the user can call refresh without
40692 // worry about the focus been lost. this is important when the user is using keyboard navigation to do edits
40693 // and the cellEditor is calling 'refresh' to get other cells to update (as other cells might depend on the
40694 // edited cell).
40695 RowRenderer.prototype.restoreFocusedCell = function (cellPosition) {
40696 if (cellPosition) {
40697 this.focusService.setFocusedCell(cellPosition.rowIndex, cellPosition.column, cellPosition.rowPinned, true);
40698 }
40699 };
40700 RowRenderer.prototype.stopEditing = function (cancel) {
40701 if (cancel === void 0) { cancel = false; }
40702 this.getAllRowCtrls().forEach(function (rowCtrl) {
40703 rowCtrl.stopEditing(cancel);
40704 });
40705 };
40706 RowRenderer.prototype.onNewColumnsLoaded = function () {
40707 // we don't want each cellComp to register for events, as would increase rendering time.
40708 // so for newColumnsLoaded, we register once here (in rowRenderer) and then inform
40709 // each cell if / when event was fired.
40710 this.getAllCellCtrls().forEach(function (cellCtrl) { return cellCtrl.onNewColumnsLoaded(); });
40711 };
40712 RowRenderer.prototype.getAllCellCtrls = function () {
40713 var res = [];
40714 this.getAllRowCtrls().forEach(function (rowCtrl) { return res = res.concat(rowCtrl.getAllCellCtrls()); });
40715 return res;
40716 };
40717 RowRenderer.prototype.getAllRowCtrls = function () {
40718 var _this = this;
40719 var res = __spread(this.topRowCtrls, this.bottomRowCtrls);
40720 Object.keys(this.rowCtrlsByRowIndex).forEach(function (key) { return res.push(_this.rowCtrlsByRowIndex[key]); });
40721 return res;
40722 };
40723 RowRenderer.prototype.addRenderedRowListener = function (eventName, rowIndex, callback) {
40724 var rowComp = this.rowCtrlsByRowIndex[rowIndex];
40725 if (rowComp) {
40726 rowComp.addEventListener(eventName, callback);
40727 }
40728 };
40729 RowRenderer.prototype.flashCells = function (params) {
40730 if (params === void 0) { params = {}; }
40731 var flashDelay = params.flashDelay, fadeDelay = params.fadeDelay;
40732 this.getCellCtrls(params.rowNodes, params.columns)
40733 .forEach(function (cellCtrl) { return cellCtrl.flashCell({ flashDelay: flashDelay, fadeDelay: fadeDelay }); });
40734 };
40735 RowRenderer.prototype.refreshCells = function (params) {
40736 if (params === void 0) { params = {}; }
40737 var refreshCellParams = {
40738 forceRefresh: params.force,
40739 newData: false,
40740 suppressFlash: params.suppressFlash
40741 };
40742 this.getCellCtrls(params.rowNodes, params.columns)
40743 .forEach(function (cellCtrl) {
40744 if (cellCtrl.refreshShouldDestroy()) {
40745 var rowCtrl = cellCtrl.getRowCtrl();
40746 if (rowCtrl) {
40747 rowCtrl.refreshCell(cellCtrl);
40748 }
40749 }
40750 else {
40751 cellCtrl.refreshCell(refreshCellParams);
40752 }
40753 });
40754 this.getFullWidthRowCtrls(params.rowNodes).forEach(function (fullWidthRowCtrl) {
40755 fullWidthRowCtrl.refreshFullWidth();
40756 });
40757 };
40758 RowRenderer.prototype.getCellRendererInstances = function (params) {
40759 var res = this.getCellCtrls(params.rowNodes, params.columns)
40760 .map(function (cellCtrl) { return cellCtrl.getCellRenderer(); })
40761 .filter(function (renderer) { return renderer != null; });
40762 return res;
40763 };
40764 RowRenderer.prototype.getCellEditorInstances = function (params) {
40765 var res = [];
40766 this.getCellCtrls(params.rowNodes, params.columns).forEach(function (cellCtrl) {
40767 var cellEditor = cellCtrl.getCellEditor();
40768 if (cellEditor) {
40769 res.push(cellEditor);
40770 }
40771 });
40772 return res;
40773 };
40774 RowRenderer.prototype.getEditingCells = function () {
40775 var res = [];
40776 this.getAllCellCtrls().forEach(function (cellCtrl) {
40777 if (cellCtrl.isEditing()) {
40778 var cellPosition = cellCtrl.getCellPosition();
40779 res.push(cellPosition);
40780 }
40781 });
40782 return res;
40783 };
40784 RowRenderer.prototype.mapRowNodes = function (rowNodes) {
40785 if (!rowNodes) {
40786 return;
40787 }
40788 var res = {
40789 top: {},
40790 bottom: {},
40791 normal: {}
40792 };
40793 rowNodes.forEach(function (rowNode) {
40794 var id = rowNode.id;
40795 if (rowNode.rowPinned === _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].PINNED_TOP) {
40796 res.top[id] = rowNode;
40797 }
40798 else if (rowNode.rowPinned === _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].PINNED_BOTTOM) {
40799 res.bottom[id] = rowNode;
40800 }
40801 else {
40802 res.normal[id] = rowNode;
40803 }
40804 });
40805 return res;
40806 };
40807 RowRenderer.prototype.isRowInMap = function (rowNode, rowIdsMap) {
40808 // skip this row if it is missing from the provided list
40809 var id = rowNode.id;
40810 var floating = rowNode.rowPinned;
40811 if (floating === _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].PINNED_BOTTOM) {
40812 return rowIdsMap.bottom[id] != null;
40813 }
40814 else if (floating === _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].PINNED_TOP) {
40815 return rowIdsMap.top[id] != null;
40816 }
40817 else {
40818 return rowIdsMap.normal[id] != null;
40819 }
40820 };
40821 // returns CellCtrl's that match the provided rowNodes and columns. eg if one row node
40822 // and two columns provided, that identifies 4 cells, so 4 CellCtrl's returned.
40823 RowRenderer.prototype.getCellCtrls = function (rowNodes, columns) {
40824 var _this = this;
40825 var rowIdsMap = this.mapRowNodes(rowNodes);
40826 var res = [];
40827 var colIdsMap;
40828 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_7__["exists"])(columns)) {
40829 colIdsMap = {};
40830 columns.forEach(function (colKey) {
40831 var column = _this.columnModel.getGridColumn(colKey);
40832 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_7__["exists"])(column)) {
40833 colIdsMap[column.getId()] = true;
40834 }
40835 });
40836 }
40837 var processRow = function (rowComp) {
40838 var rowNode = rowComp.getRowNode();
40839 // skip this row if it is missing from the provided list
40840 if (rowIdsMap != null && !_this.isRowInMap(rowNode, rowIdsMap)) {
40841 return;
40842 }
40843 rowComp.getAllCellCtrls().forEach(function (cellCtrl) {
40844 var colId = cellCtrl.getColumn().getId();
40845 var excludeColFromRefresh = colIdsMap && !colIdsMap[colId];
40846 if (excludeColFromRefresh) {
40847 return;
40848 }
40849 res.push(cellCtrl);
40850 });
40851 };
40852 Object(_utils_object__WEBPACK_IMPORTED_MODULE_8__["iterateObject"])(this.rowCtrlsByRowIndex, function (index, rowComp) {
40853 processRow(rowComp);
40854 });
40855 if (this.topRowCtrls) {
40856 this.topRowCtrls.forEach(processRow);
40857 }
40858 if (this.bottomRowCtrls) {
40859 this.bottomRowCtrls.forEach(processRow);
40860 }
40861 return res;
40862 };
40863 RowRenderer.prototype.destroy = function () {
40864 this.removeAllRowComps();
40865 _super.prototype.destroy.call(this);
40866 };
40867 RowRenderer.prototype.removeAllRowComps = function () {
40868 var rowIndexesToRemove = Object.keys(this.rowCtrlsByRowIndex);
40869 this.removeRowCtrls(rowIndexesToRemove);
40870 };
40871 RowRenderer.prototype.recycleRows = function () {
40872 // remove all stub nodes, they can't be reused, as no rowNode id
40873 var stubNodeIndexes = [];
40874 Object(_utils_object__WEBPACK_IMPORTED_MODULE_8__["iterateObject"])(this.rowCtrlsByRowIndex, function (index, rowComp) {
40875 var stubNode = rowComp.getRowNode().id == null;
40876 if (stubNode) {
40877 stubNodeIndexes.push(index);
40878 }
40879 });
40880 this.removeRowCtrls(stubNodeIndexes);
40881 // then clear out rowCompsByIndex, but before that take a copy, but index by id, not rowIndex
40882 var nodesByIdMap = {};
40883 Object(_utils_object__WEBPACK_IMPORTED_MODULE_8__["iterateObject"])(this.rowCtrlsByRowIndex, function (index, rowComp) {
40884 var rowNode = rowComp.getRowNode();
40885 nodesByIdMap[rowNode.id] = rowComp;
40886 });
40887 this.rowCtrlsByRowIndex = {};
40888 return nodesByIdMap;
40889 };
40890 // takes array of row indexes
40891 RowRenderer.prototype.removeRowCtrls = function (rowsToRemove) {
40892 var _this = this;
40893 // if no fromIndex then set to -1, which will refresh everything
40894 // let realFromIndex = -1;
40895 rowsToRemove.forEach(function (indexToRemove) {
40896 var rowCtrl = _this.rowCtrlsByRowIndex[indexToRemove];
40897 if (rowCtrl) {
40898 rowCtrl.destroyFirstPass();
40899 rowCtrl.destroySecondPass();
40900 }
40901 delete _this.rowCtrlsByRowIndex[indexToRemove];
40902 });
40903 };
40904 // gets called when rows don't change, but viewport does, so after:
40905 // 1) height of grid body changes, ie number of displayed rows has changed
40906 // 2) grid scrolled to new position
40907 // 3) ensure index visible (which is a scroll)
40908 RowRenderer.prototype.redrawAfterScroll = function () {
40909 this.getLockOnRefresh();
40910 this.redraw(null, false, true);
40911 this.releaseLockOnRefresh();
40912 this.dispatchDisplayedRowsChanged();
40913 };
40914 RowRenderer.prototype.removeRowCompsNotToDraw = function (indexesToDraw) {
40915 // for speedy lookup, dump into map
40916 var indexesToDrawMap = {};
40917 indexesToDraw.forEach(function (index) { return (indexesToDrawMap[index] = true); });
40918 var existingIndexes = Object.keys(this.rowCtrlsByRowIndex);
40919 var indexesNotToDraw = existingIndexes.filter(function (index) { return !indexesToDrawMap[index]; });
40920 this.removeRowCtrls(indexesNotToDraw);
40921 };
40922 RowRenderer.prototype.calculateIndexesToDraw = function (rowsToRecycle) {
40923 var _this = this;
40924 // all in all indexes in the viewport
40925 var indexesToDraw = Object(_utils_number__WEBPACK_IMPORTED_MODULE_9__["createArrayOfNumbers"])(this.firstRenderedRow, this.lastRenderedRow);
40926 var checkRowToDraw = function (indexStr, rowComp) {
40927 var index = rowComp.getRowNode().rowIndex;
40928 if (index == null) {
40929 return;
40930 }
40931 if (index < _this.firstRenderedRow || index > _this.lastRenderedRow) {
40932 if (_this.doNotUnVirtualiseRow(rowComp)) {
40933 indexesToDraw.push(index);
40934 }
40935 }
40936 };
40937 // if we are redrawing due to scrolling change, then old rows are in this.rowCompsByIndex
40938 Object(_utils_object__WEBPACK_IMPORTED_MODULE_8__["iterateObject"])(this.rowCtrlsByRowIndex, checkRowToDraw);
40939 // if we are redrawing due to model update, then old rows are in rowsToRecycle
40940 Object(_utils_object__WEBPACK_IMPORTED_MODULE_8__["iterateObject"])(rowsToRecycle, checkRowToDraw);
40941 indexesToDraw.sort(function (a, b) { return a - b; });
40942 return indexesToDraw;
40943 };
40944 RowRenderer.prototype.redraw = function (rowsToRecycle, animate, afterScroll) {
40945 var _this = this;
40946 if (animate === void 0) { animate = false; }
40947 if (afterScroll === void 0) { afterScroll = false; }
40948 this.rowContainerHeightService.updateOffset();
40949 this.workOutFirstAndLastRowsToRender();
40950 // the row can already exist and be in the following:
40951 // rowsToRecycle -> if model change, then the index may be different, however row may
40952 // exist here from previous time (mapped by id).
40953 // this.rowCompsByIndex -> if just a scroll, then this will contain what is currently in the viewport
40954 // this is all the indexes we want, including those that already exist, so this method
40955 // will end up going through each index and drawing only if the row doesn't already exist
40956 var indexesToDraw = this.calculateIndexesToDraw(rowsToRecycle);
40957 this.removeRowCompsNotToDraw(indexesToDraw);
40958 // never animate when doing print layout - as we want to get things ready to print as quickly as possible,
40959 // otherwise we risk the printer printing a row that's half faded (half way through fading in)
40960 if (this.printLayout) {
40961 animate = false;
40962 }
40963 // add in new rows
40964 var rowCtrls = [];
40965 indexesToDraw.forEach(function (rowIndex) {
40966 var rowCtrl = _this.createOrUpdateRowCtrl(rowIndex, rowsToRecycle, animate, afterScroll);
40967 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_7__["exists"])(rowCtrl)) {
40968 rowCtrls.push(rowCtrl);
40969 }
40970 });
40971 if (rowsToRecycle) {
40972 var useAnimationFrame = afterScroll && !this.gridOptionsWrapper.isSuppressAnimationFrame() && !this.printLayout;
40973 if (useAnimationFrame) {
40974 this.beans.animationFrameService.addDestroyTask(function () {
40975 _this.destroyRowCtrls(rowsToRecycle, animate);
40976 _this.updateAllRowCtrls();
40977 _this.dispatchDisplayedRowsChanged();
40978 });
40979 }
40980 else {
40981 this.destroyRowCtrls(rowsToRecycle, animate);
40982 }
40983 }
40984 this.updateAllRowCtrls();
40985 this.gridBodyCtrl.updateRowCount();
40986 };
40987 RowRenderer.prototype.dispatchDisplayedRowsChanged = function () {
40988 var event = { type: _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_DISPLAYED_ROWS_CHANGED };
40989 this.eventService.dispatchEvent(event);
40990 };
40991 RowRenderer.prototype.onDisplayedColumnsChanged = function () {
40992 var pinningLeft = this.columnModel.isPinningLeft();
40993 var pinningRight = this.columnModel.isPinningRight();
40994 var atLeastOneChanged = this.pinningLeft !== pinningLeft || pinningRight !== this.pinningRight;
40995 if (atLeastOneChanged) {
40996 this.pinningLeft = pinningLeft;
40997 this.pinningRight = pinningRight;
40998 if (this.embedFullWidthRows) {
40999 this.redrawFullWidthEmbeddedRows();
41000 }
41001 }
41002 };
41003 // when embedding, what gets showed in each section depends on what is pinned. eg if embedding group expand / collapse,
41004 // then it should go into the pinned left area if pinning left, or the center area if not pinning.
41005 RowRenderer.prototype.redrawFullWidthEmbeddedRows = function () {
41006 // if either of the pinned panels has shown / hidden, then need to redraw the fullWidth bits when
41007 // embedded, as what appears in each section depends on whether we are pinned or not
41008 var rowsToRemove = [];
41009 this.getFullWidthRowCtrls().forEach(function (fullWidthCtrl) {
41010 var rowIndex = fullWidthCtrl.getRowNode().rowIndex;
41011 rowsToRemove.push(rowIndex.toString());
41012 });
41013 this.refreshFloatingRowComps();
41014 this.removeRowCtrls(rowsToRemove);
41015 this.redrawAfterScroll();
41016 };
41017 RowRenderer.prototype.getFullWidthRowCtrls = function (rowNodes) {
41018 var _this = this;
41019 var rowNodesMap = this.mapRowNodes(rowNodes);
41020 return Object(_utils_object__WEBPACK_IMPORTED_MODULE_8__["getAllValuesInObject"])(this.rowCtrlsByRowIndex).filter(function (rowCtrl) {
41021 // include just full width
41022 if (!rowCtrl.isFullWidth()) {
41023 return false;
41024 }
41025 // if Row Nodes provided, we exclude where Row Node is missing
41026 var rowNode = rowCtrl.getRowNode();
41027 if (rowNodesMap != null && !_this.isRowInMap(rowNode, rowNodesMap)) {
41028 return false;
41029 }
41030 return true;
41031 });
41032 };
41033 RowRenderer.prototype.refreshFullWidthRows = function (rowNodesToRefresh) {
41034 var rowsToRemove = [];
41035 var selectivelyRefreshing = !!rowNodesToRefresh;
41036 var idsToRefresh = selectivelyRefreshing ? {} : undefined;
41037 if (selectivelyRefreshing && idsToRefresh) {
41038 rowNodesToRefresh.forEach(function (r) { return idsToRefresh[r.id] = true; });
41039 }
41040 this.getFullWidthRowCtrls().forEach(function (fullWidthRowCtrl) {
41041 var rowNode = fullWidthRowCtrl.getRowNode();
41042 if (selectivelyRefreshing && idsToRefresh) {
41043 // we refresh if a) this node is present or b) this parents nodes is present. checking parent
41044 // node is important for master/detail, as we want detail to refresh on changes to parent node.
41045 // it's also possible, if user is provider their own fullWidth, that details panels contain
41046 // some info on the parent, eg if in tree data and child row shows some data from parent row also.
41047 var parentId = (rowNode.level > 0 && rowNode.parent) ? rowNode.parent.id : undefined;
41048 var skipThisNode = !idsToRefresh[rowNode.id] && !idsToRefresh[parentId];
41049 if (skipThisNode) {
41050 return;
41051 }
41052 }
41053 var fullWidthRowsRefreshed = fullWidthRowCtrl.refreshFullWidth();
41054 if (!fullWidthRowsRefreshed) {
41055 var rowIndex = fullWidthRowCtrl.getRowNode().rowIndex;
41056 rowsToRemove.push(rowIndex.toString());
41057 }
41058 });
41059 this.removeRowCtrls(rowsToRemove);
41060 this.redrawAfterScroll();
41061 };
41062 RowRenderer.prototype.createOrUpdateRowCtrl = function (rowIndex, rowsToRecycle, animate, afterScroll) {
41063 var rowNode;
41064 var rowCtrl = this.rowCtrlsByRowIndex[rowIndex];
41065 // if no row comp, see if we can get it from the previous rowComps
41066 if (!rowCtrl) {
41067 rowNode = this.paginationProxy.getRow(rowIndex);
41068 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_7__["exists"])(rowNode) && Object(_utils_generic__WEBPACK_IMPORTED_MODULE_7__["exists"])(rowsToRecycle) && rowsToRecycle[rowNode.id] && rowNode.alreadyRendered) {
41069 rowCtrl = rowsToRecycle[rowNode.id];
41070 rowsToRecycle[rowNode.id] = null;
41071 }
41072 }
41073 var creatingNewRowCtrl = !rowCtrl;
41074 if (creatingNewRowCtrl) {
41075 // create a new one
41076 if (!rowNode) {
41077 rowNode = this.paginationProxy.getRow(rowIndex);
41078 }
41079 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_7__["exists"])(rowNode)) {
41080 rowCtrl = this.createRowCon(rowNode, animate, afterScroll);
41081 }
41082 else {
41083 // this should never happen - if somehow we are trying to create
41084 // a row for a rowNode that does not exist.
41085 return;
41086 }
41087 }
41088 if (rowNode) {
41089 // set node as 'alreadyRendered' to ensure we only recycle rowComps that have been rendered, this ensures
41090 // we don't reuse rowComps that have been removed and then re-added in the same batch transaction.
41091 rowNode.alreadyRendered = true;
41092 }
41093 this.rowCtrlsByRowIndex[rowIndex] = rowCtrl;
41094 return rowCtrl;
41095 };
41096 RowRenderer.prototype.destroyRowCtrls = function (rowCtrlsMap, animate) {
41097 var _this = this;
41098 var executeInAWhileFuncs = [];
41099 Object(_utils_object__WEBPACK_IMPORTED_MODULE_8__["iterateObject"])(rowCtrlsMap, function (nodeId, rowCtrl) {
41100 // if row was used, then it's null
41101 if (!rowCtrl) {
41102 return;
41103 }
41104 if (_this.cachedRowCtrls && rowCtrl.isCacheable()) {
41105 _this.cachedRowCtrls.addRow(rowCtrl);
41106 return;
41107 }
41108 rowCtrl.destroyFirstPass();
41109 if (animate) {
41110 _this.zombieRowCtrls[rowCtrl.getInstanceId()] = rowCtrl;
41111 executeInAWhileFuncs.push(function () {
41112 rowCtrl.destroySecondPass();
41113 delete _this.zombieRowCtrls[rowCtrl.getInstanceId()];
41114 });
41115 }
41116 else {
41117 rowCtrl.destroySecondPass();
41118 }
41119 });
41120 if (animate) {
41121 // this ensures we fire displayedRowsChanged AFTER all the 'executeInAWhileFuncs' get
41122 // executed, as we added it to the end of the list.
41123 executeInAWhileFuncs.push(function () {
41124 _this.updateAllRowCtrls();
41125 _this.dispatchDisplayedRowsChanged();
41126 });
41127 Object(_utils_function__WEBPACK_IMPORTED_MODULE_10__["executeInAWhile"])(executeInAWhileFuncs);
41128 }
41129 };
41130 RowRenderer.prototype.workOutFirstAndLastRowsToRender = function () {
41131 var _this = this;
41132 var newFirst;
41133 var newLast;
41134 if (!this.paginationProxy.isRowsToRender()) {
41135 newFirst = 0;
41136 newLast = -1; // setting to -1 means nothing in range
41137 }
41138 else if (this.printLayout) {
41139 newFirst = this.paginationProxy.getPageFirstRow();
41140 newLast = this.paginationProxy.getPageLastRow();
41141 }
41142 else {
41143 var bufferPixels = this.gridOptionsWrapper.getRowBufferInPixels();
41144 var gridBodyCtrl = this.ctrlsService.getGridBodyCtrl();
41145 var suppressRowVirtualisation = this.gridOptionsWrapper.isSuppressRowVirtualisation();
41146 var rowHeightsChanged = false;
41147 var firstPixel = void 0;
41148 var lastPixel = void 0;
41149 do {
41150 var paginationOffset = this.paginationProxy.getPixelOffset();
41151 var _a = this.paginationProxy.getCurrentPagePixelRange(), pageFirstPixel = _a.pageFirstPixel, pageLastPixel = _a.pageLastPixel;
41152 var divStretchOffset = this.rowContainerHeightService.getDivStretchOffset();
41153 if (suppressRowVirtualisation) {
41154 firstPixel = pageFirstPixel + divStretchOffset;
41155 lastPixel = pageLastPixel + divStretchOffset;
41156 }
41157 else {
41158 var bodyVRange = gridBodyCtrl.getScrollFeature().getVScrollPosition();
41159 var bodyTopPixel = bodyVRange.top;
41160 var bodyBottomPixel = bodyVRange.bottom;
41161 firstPixel = Math.max(bodyTopPixel + paginationOffset - bufferPixels, pageFirstPixel) + divStretchOffset;
41162 lastPixel = Math.min(bodyBottomPixel + paginationOffset + bufferPixels, pageLastPixel) + divStretchOffset;
41163 }
41164 // if the rows we are about to display get their heights changed, then that upsets the calcs from above.
41165 rowHeightsChanged = this.ensureAllRowsInRangeHaveHeightsCalculated(firstPixel, lastPixel);
41166 } while (rowHeightsChanged);
41167 var firstRowIndex = this.paginationProxy.getRowIndexAtPixel(firstPixel);
41168 var lastRowIndex = this.paginationProxy.getRowIndexAtPixel(lastPixel);
41169 var pageFirstRow = this.paginationProxy.getPageFirstRow();
41170 var pageLastRow = this.paginationProxy.getPageLastRow();
41171 // adjust, in case buffer extended actual size
41172 if (firstRowIndex < pageFirstRow) {
41173 firstRowIndex = pageFirstRow;
41174 }
41175 if (lastRowIndex > pageLastRow) {
41176 lastRowIndex = pageLastRow;
41177 }
41178 newFirst = firstRowIndex;
41179 newLast = lastRowIndex;
41180 }
41181 // sometimes user doesn't set CSS right and ends up with grid with no height and grid ends up
41182 // trying to render all the rows, eg 10,000+ rows. this will kill the browser. so instead of
41183 // killing the browser, we limit the number of rows. just in case some use case we didn't think
41184 // of, we also have a property to not do this operation.
41185 var rowLayoutNormal = this.gridOptionsWrapper.getDomLayout() === _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].DOM_LAYOUT_NORMAL;
41186 var suppressRowCountRestriction = this.gridOptionsWrapper.isSuppressMaxRenderedRowRestriction();
41187 var rowBufferMaxSize = Math.max(this.gridOptionsWrapper.getRowBuffer(), 500);
41188 if (rowLayoutNormal && !suppressRowCountRestriction) {
41189 if (newLast - newFirst > rowBufferMaxSize) {
41190 newLast = newFirst + rowBufferMaxSize;
41191 }
41192 }
41193 var firstDiffers = newFirst !== this.firstRenderedRow;
41194 var lastDiffers = newLast !== this.lastRenderedRow;
41195 if (firstDiffers || lastDiffers) {
41196 this.firstRenderedRow = newFirst;
41197 this.lastRenderedRow = newLast;
41198 var event_1 = {
41199 type: _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_VIEWPORT_CHANGED,
41200 firstRow: newFirst,
41201 lastRow: newLast,
41202 api: this.gridApi,
41203 columnApi: this.columnApi
41204 };
41205 this.eventService.dispatchEvent(event_1);
41206 }
41207 // only dispatch firstDataRendered if we have actually rendered some data
41208 if (this.paginationProxy.isRowsToRender()) {
41209 var event_2 = {
41210 type: _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_FIRST_DATA_RENDERED,
41211 firstRow: newFirst,
41212 lastRow: newLast,
41213 api: this.gridApi,
41214 columnApi: this.columnApi
41215 };
41216 // added a small delay here because in some scenarios this can be fired
41217 // before the grid is actually rendered, causing component creation
41218 // on EVENT_FIRST_DATA_RENDERED to fail.
41219 window.setTimeout(function () { return _this.eventService.dispatchEventOnce(event_2); }, 50);
41220 }
41221 };
41222 RowRenderer.prototype.ensureAllRowsInRangeHaveHeightsCalculated = function (topPixel, bottomPixel) {
41223 // ensureRowHeightsVisible only works with CSRM, as it's the only row model that allows lazy row height calcs.
41224 // all the other row models just hard code so the method just returns back false
41225 var res = this.paginationProxy.ensureRowHeightsValid(topPixel, bottomPixel, -1, -1);
41226 if (res) {
41227 this.updateContainerHeights();
41228 }
41229 return res;
41230 };
41231 RowRenderer.prototype.getFirstVirtualRenderedRow = function () {
41232 return this.firstRenderedRow;
41233 };
41234 RowRenderer.prototype.getLastVirtualRenderedRow = function () {
41235 return this.lastRenderedRow;
41236 };
41237 // check that none of the rows to remove are editing or focused as:
41238 // a) if editing, we want to keep them, otherwise the user will loose the context of the edit,
41239 // eg user starts editing, enters some text, then scrolls down and then up, next time row rendered
41240 // the edit is reset - so we want to keep it rendered.
41241 // b) if focused, we want ot keep keyboard focus, so if user ctrl+c, it goes to clipboard,
41242 // otherwise the user can range select and drag (with focus cell going out of the viewport)
41243 // and then ctrl+c, nothing will happen if cell is removed from dom.
41244 // c) if detail record of master detail, as users complained that the context of detail rows
41245 // was getting lost when detail row out of view. eg user expands to show detail row,
41246 // then manipulates the detail panel (eg sorts the detail grid), then context is lost
41247 // after detail panel is scrolled out of / into view.
41248 RowRenderer.prototype.doNotUnVirtualiseRow = function (rowComp) {
41249 var REMOVE_ROW = false;
41250 var KEEP_ROW = true;
41251 var rowNode = rowComp.getRowNode();
41252 var rowHasFocus = this.focusService.isRowNodeFocused(rowNode);
41253 var rowIsEditing = rowComp.isEditing();
41254 var rowIsDetail = rowNode.detail;
41255 var mightWantToKeepRow = rowHasFocus || rowIsEditing || rowIsDetail;
41256 // if we deffo don't want to keep it,
41257 if (!mightWantToKeepRow) {
41258 return REMOVE_ROW;
41259 }
41260 // editing row, only remove if it is no longer rendered, eg filtered out or new data set.
41261 // the reason we want to keep is if user is scrolling up and down, we don't want to loose
41262 // the context of the editing in process.
41263 var rowNodePresent = this.paginationProxy.isRowPresent(rowNode);
41264 return rowNodePresent ? KEEP_ROW : REMOVE_ROW;
41265 };
41266 RowRenderer.prototype.createRowCon = function (rowNode, animate, afterScroll) {
41267 var rowCtrlFromCache = this.cachedRowCtrls ? this.cachedRowCtrls.getRow(rowNode) : null;
41268 if (rowCtrlFromCache) {
41269 return rowCtrlFromCache;
41270 }
41271 // we don't use animations frames for printing, so the user can put the grid into print mode
41272 // and immediately print - otherwise the user would have to wait for the rows to draw in the background
41273 // (via the animation frames) which is awkward to do from code.
41274 // we only do the animation frames after scrolling, as this is where we want the smooth user experience.
41275 // having animation frames for other times makes the grid look 'jumpy'.
41276 var suppressAnimationFrame = this.gridOptionsWrapper.isSuppressAnimationFrame();
41277 var useAnimationFrameForCreate = afterScroll && !suppressAnimationFrame && !this.printLayout;
41278 var res = new _row_rowCtrl__WEBPACK_IMPORTED_MODULE_1__["RowCtrl"](rowNode, this.beans, animate, useAnimationFrameForCreate, this.printLayout);
41279 return res;
41280 };
41281 RowRenderer.prototype.getRenderedNodes = function () {
41282 var renderedRows = this.rowCtrlsByRowIndex;
41283 return Object.keys(renderedRows).map(function (key) { return renderedRows[key].getRowNode(); });
41284 };
41285 RowRenderer.prototype.getRowByPosition = function (rowPosition) {
41286 var rowComponent;
41287 switch (rowPosition.rowPinned) {
41288 case _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].PINNED_TOP:
41289 rowComponent = this.topRowCtrls[rowPosition.rowIndex];
41290 break;
41291 case _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].PINNED_BOTTOM:
41292 rowComponent = this.bottomRowCtrls[rowPosition.rowIndex];
41293 break;
41294 default:
41295 rowComponent = this.rowCtrlsByRowIndex[rowPosition.rowIndex];
41296 break;
41297 }
41298 return rowComponent;
41299 };
41300 RowRenderer.prototype.getRowNode = function (gridRow) {
41301 switch (gridRow.rowPinned) {
41302 case _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].PINNED_TOP:
41303 return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];
41304 case _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].PINNED_BOTTOM:
41305 return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];
41306 default:
41307 return this.rowModel.getRow(gridRow.rowIndex);
41308 }
41309 };
41310 // returns true if any row between startIndex and endIndex is rendered. used by
41311 // SSRM or IRM, as they don't want to purge visible blocks from cache.
41312 RowRenderer.prototype.isRangeInRenderedViewport = function (startIndex, endIndex) {
41313 // parent closed means the parent node is not expanded, thus these blocks are not visible
41314 var parentClosed = startIndex == null || endIndex == null;
41315 if (parentClosed) {
41316 return false;
41317 }
41318 var blockAfterViewport = startIndex > this.lastRenderedRow;
41319 var blockBeforeViewport = endIndex < this.firstRenderedRow;
41320 var blockInsideViewport = !blockBeforeViewport && !blockAfterViewport;
41321 return blockInsideViewport;
41322 };
41323 __decorate([
41324 Object(_context_context__WEBPACK_IMPORTED_MODULE_5__["Autowired"])("paginationProxy")
41325 ], RowRenderer.prototype, "paginationProxy", void 0);
41326 __decorate([
41327 Object(_context_context__WEBPACK_IMPORTED_MODULE_5__["Autowired"])("columnModel")
41328 ], RowRenderer.prototype, "columnModel", void 0);
41329 __decorate([
41330 Object(_context_context__WEBPACK_IMPORTED_MODULE_5__["Autowired"])("pinnedRowModel")
41331 ], RowRenderer.prototype, "pinnedRowModel", void 0);
41332 __decorate([
41333 Object(_context_context__WEBPACK_IMPORTED_MODULE_5__["Autowired"])("rowModel")
41334 ], RowRenderer.prototype, "rowModel", void 0);
41335 __decorate([
41336 Object(_context_context__WEBPACK_IMPORTED_MODULE_5__["Autowired"])("focusService")
41337 ], RowRenderer.prototype, "focusService", void 0);
41338 __decorate([
41339 Object(_context_context__WEBPACK_IMPORTED_MODULE_5__["Autowired"])("columnApi")
41340 ], RowRenderer.prototype, "columnApi", void 0);
41341 __decorate([
41342 Object(_context_context__WEBPACK_IMPORTED_MODULE_5__["Autowired"])("gridApi")
41343 ], RowRenderer.prototype, "gridApi", void 0);
41344 __decorate([
41345 Object(_context_context__WEBPACK_IMPORTED_MODULE_5__["Autowired"])("beans")
41346 ], RowRenderer.prototype, "beans", void 0);
41347 __decorate([
41348 Object(_context_context__WEBPACK_IMPORTED_MODULE_5__["Autowired"])("rowContainerHeightService")
41349 ], RowRenderer.prototype, "rowContainerHeightService", void 0);
41350 __decorate([
41351 Object(_context_context__WEBPACK_IMPORTED_MODULE_5__["Optional"])("ctrlsService")
41352 ], RowRenderer.prototype, "ctrlsService", void 0);
41353 __decorate([
41354 _context_context__WEBPACK_IMPORTED_MODULE_5__["PostConstruct"]
41355 ], RowRenderer.prototype, "postConstruct", null);
41356 RowRenderer = __decorate([
41357 Object(_context_context__WEBPACK_IMPORTED_MODULE_5__["Bean"])("rowRenderer")
41358 ], RowRenderer);
41359 return RowRenderer;
41360}(_context_beanStub__WEBPACK_IMPORTED_MODULE_6__["BeanStub"]));
41361
41362var RowCtrlCache = /** @class */ (function () {
41363 function RowCtrlCache(maxCount) {
41364 // map for fast access
41365 this.entriesMap = {};
41366 // list for keeping order
41367 this.entriesList = [];
41368 this.maxCount = maxCount;
41369 }
41370 RowCtrlCache.prototype.addRow = function (rowCtrl) {
41371 this.entriesMap[rowCtrl.getRowNode().id] = rowCtrl;
41372 this.entriesList.push(rowCtrl);
41373 rowCtrl.setCached(true);
41374 if (this.entriesList.length > this.maxCount) {
41375 var rowCtrlToDestroy = this.entriesList[0];
41376 rowCtrlToDestroy.destroyFirstPass();
41377 rowCtrlToDestroy.destroySecondPass();
41378 this.removeFromCache(rowCtrlToDestroy);
41379 }
41380 };
41381 RowCtrlCache.prototype.getRow = function (rowNode) {
41382 if (rowNode == null || rowNode.id == null) {
41383 return null;
41384 }
41385 var res = this.entriesMap[rowNode.id];
41386 if (!res) {
41387 return null;
41388 }
41389 this.removeFromCache(res);
41390 res.setCached(false);
41391 // this can happen if user reloads data, and a new RowNode is reusing
41392 // the same ID as the old one
41393 var rowNodeMismatch = res.getRowNode() != rowNode;
41394 return rowNodeMismatch ? null : res;
41395 };
41396 RowCtrlCache.prototype.removeFromCache = function (rowCtrl) {
41397 var rowNodeId = rowCtrl.getRowNode().id;
41398 delete this.entriesMap[rowNodeId];
41399 Object(_utils_array__WEBPACK_IMPORTED_MODULE_12__["removeFromArray"])(this.entriesList, rowCtrl);
41400 };
41401 RowCtrlCache.prototype.getEntries = function () {
41402 return this.entriesList;
41403 };
41404 return RowCtrlCache;
41405}());
41406
41407
41408
41409
41410/***/ }),
41411/* 179 */
41412/***/ (function(module, __webpack_exports__, __webpack_require__) {
41413
41414"use strict";
41415__webpack_require__.r(__webpack_exports__);
41416/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ValueFormatterService", function() { return ValueFormatterService; });
41417/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
41418/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
41419/**
41420 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
41421 * @version v27.3.0
41422 * @link https://www.ag-grid.com/
41423 * @license MIT
41424 */
41425var __extends = (undefined && undefined.__extends) || (function () {
41426 var extendStatics = function (d, b) {
41427 extendStatics = Object.setPrototypeOf ||
41428 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
41429 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
41430 return extendStatics(d, b);
41431 };
41432 return function (d, b) {
41433 extendStatics(d, b);
41434 function __() { this.constructor = d; }
41435 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
41436 };
41437})();
41438var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
41439 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
41440 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
41441 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
41442 return c > 3 && r && Object.defineProperty(target, key, r), r;
41443};
41444
41445
41446var ValueFormatterService = /** @class */ (function (_super) {
41447 __extends(ValueFormatterService, _super);
41448 function ValueFormatterService() {
41449 return _super !== null && _super.apply(this, arguments) || this;
41450 }
41451 ValueFormatterService.prototype.formatValue = function (column, node, value, suppliedFormatter, useFormatterFromColumn) {
41452 if (useFormatterFromColumn === void 0) { useFormatterFromColumn = true; }
41453 var result = null;
41454 var formatter;
41455 var colDef = column.getColDef();
41456 if (suppliedFormatter) {
41457 // use supplied formatter if provided, e.g. set filter items can have their own value formatters
41458 formatter = suppliedFormatter;
41459 }
41460 else if (useFormatterFromColumn) {
41461 // if row is pinned, give preference to the pinned formatter
41462 formatter = node && node.rowPinned && colDef.pinnedRowValueFormatter ?
41463 colDef.pinnedRowValueFormatter : colDef.valueFormatter;
41464 }
41465 if (formatter) {
41466 var params = {
41467 value: value,
41468 node: node,
41469 data: node ? node.data : null,
41470 colDef: colDef,
41471 column: column,
41472 api: this.gridOptionsWrapper.getApi(),
41473 columnApi: this.gridOptionsWrapper.getColumnApi(),
41474 context: this.gridOptionsWrapper.getContext()
41475 };
41476 result = this.expressionService.evaluate(formatter, params);
41477 }
41478 else if (colDef.refData) {
41479 return colDef.refData[value] || '';
41480 }
41481 // if we don't do this, then arrays get displayed as 1,2,3, but we want 1, 2, 3 (i.e. with spaces)
41482 if (result == null && Array.isArray(value)) {
41483 result = value.join(', ');
41484 }
41485 return result;
41486 };
41487 __decorate([
41488 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('expressionService')
41489 ], ValueFormatterService.prototype, "expressionService", void 0);
41490 ValueFormatterService = __decorate([
41491 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('valueFormatterService')
41492 ], ValueFormatterService);
41493 return ValueFormatterService;
41494}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
41495
41496
41497
41498
41499
41500/***/ }),
41501/* 180 */
41502/***/ (function(module, __webpack_exports__, __webpack_require__) {
41503
41504"use strict";
41505__webpack_require__.r(__webpack_exports__);
41506/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PinnedRowModel", function() { return PinnedRowModel; });
41507/* harmony import */ var _entities_rowNode__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(94);
41508/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
41509/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23);
41510/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15);
41511/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(20);
41512/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7);
41513/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(18);
41514/**
41515 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
41516 * @version v27.3.0
41517 * @link https://www.ag-grid.com/
41518 * @license MIT
41519 */
41520var __extends = (undefined && undefined.__extends) || (function () {
41521 var extendStatics = function (d, b) {
41522 extendStatics = Object.setPrototypeOf ||
41523 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
41524 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
41525 return extendStatics(d, b);
41526 };
41527 return function (d, b) {
41528 extendStatics(d, b);
41529 function __() { this.constructor = d; }
41530 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
41531 };
41532})();
41533var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
41534 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
41535 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
41536 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
41537 return c > 3 && r && Object.defineProperty(target, key, r), r;
41538};
41539
41540
41541
41542
41543
41544
41545
41546var PinnedRowModel = /** @class */ (function (_super) {
41547 __extends(PinnedRowModel, _super);
41548 function PinnedRowModel() {
41549 return _super !== null && _super.apply(this, arguments) || this;
41550 }
41551 PinnedRowModel.prototype.init = function () {
41552 this.setPinnedTopRowData(this.gridOptionsWrapper.getPinnedTopRowData());
41553 this.setPinnedBottomRowData(this.gridOptionsWrapper.getPinnedBottomRowData());
41554 };
41555 PinnedRowModel.prototype.isEmpty = function (floating) {
41556 var rows = floating === _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].PINNED_TOP ? this.pinnedTopRows : this.pinnedBottomRows;
41557 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["missingOrEmpty"])(rows);
41558 };
41559 PinnedRowModel.prototype.isRowsToRender = function (floating) {
41560 return !this.isEmpty(floating);
41561 };
41562 PinnedRowModel.prototype.getRowAtPixel = function (pixel, floating) {
41563 var rows = floating === _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].PINNED_TOP ? this.pinnedTopRows : this.pinnedBottomRows;
41564 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["missingOrEmpty"])(rows)) {
41565 return 0; // this should never happen, just in case, 0 is graceful failure
41566 }
41567 for (var i = 0; i < rows.length; i++) {
41568 var rowNode = rows[i];
41569 var rowTopPixel = rowNode.rowTop + rowNode.rowHeight - 1;
41570 // only need to range check against the top pixel, as we are going through the list
41571 // in order, first row to hit the pixel wins
41572 if (rowTopPixel >= pixel) {
41573 return i;
41574 }
41575 }
41576 return rows.length - 1;
41577 };
41578 PinnedRowModel.prototype.setPinnedTopRowData = function (rowData) {
41579 this.pinnedTopRows = this.createNodesFromData(rowData, true);
41580 var event = {
41581 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_PINNED_ROW_DATA_CHANGED,
41582 api: this.gridApi,
41583 columnApi: this.columnApi
41584 };
41585 this.eventService.dispatchEvent(event);
41586 };
41587 PinnedRowModel.prototype.setPinnedBottomRowData = function (rowData) {
41588 this.pinnedBottomRows = this.createNodesFromData(rowData, false);
41589 var event = {
41590 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_PINNED_ROW_DATA_CHANGED,
41591 api: this.gridApi,
41592 columnApi: this.columnApi
41593 };
41594 this.eventService.dispatchEvent(event);
41595 };
41596 PinnedRowModel.prototype.createNodesFromData = function (allData, isTop) {
41597 var _this = this;
41598 var rowNodes = [];
41599 if (allData) {
41600 var nextRowTop_1 = 0;
41601 allData.forEach(function (dataItem, index) {
41602 var rowNode = new _entities_rowNode__WEBPACK_IMPORTED_MODULE_0__["RowNode"](_this.beans);
41603 rowNode.data = dataItem;
41604 var idPrefix = isTop ? _entities_rowNode__WEBPACK_IMPORTED_MODULE_0__["RowNode"].ID_PREFIX_TOP_PINNED : _entities_rowNode__WEBPACK_IMPORTED_MODULE_0__["RowNode"].ID_PREFIX_BOTTOM_PINNED;
41605 rowNode.id = idPrefix + index;
41606 rowNode.rowPinned = isTop ? _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].PINNED_TOP : _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].PINNED_BOTTOM;
41607 rowNode.setRowTop(nextRowTop_1);
41608 rowNode.setRowHeight(_this.gridOptionsWrapper.getRowHeightForNode(rowNode).height);
41609 rowNode.setRowIndex(index);
41610 nextRowTop_1 += rowNode.rowHeight;
41611 rowNodes.push(rowNode);
41612 });
41613 }
41614 return rowNodes;
41615 };
41616 PinnedRowModel.prototype.getPinnedTopRowData = function () {
41617 return this.pinnedTopRows;
41618 };
41619 PinnedRowModel.prototype.getPinnedBottomRowData = function () {
41620 return this.pinnedBottomRows;
41621 };
41622 PinnedRowModel.prototype.getPinnedTopTotalHeight = function () {
41623 return this.getTotalHeight(this.pinnedTopRows);
41624 };
41625 PinnedRowModel.prototype.getPinnedTopRowCount = function () {
41626 return this.pinnedTopRows ? this.pinnedTopRows.length : 0;
41627 };
41628 PinnedRowModel.prototype.getPinnedBottomRowCount = function () {
41629 return this.pinnedBottomRows ? this.pinnedBottomRows.length : 0;
41630 };
41631 PinnedRowModel.prototype.getPinnedTopRow = function (index) {
41632 return this.pinnedTopRows[index];
41633 };
41634 PinnedRowModel.prototype.getPinnedBottomRow = function (index) {
41635 return this.pinnedBottomRows[index];
41636 };
41637 PinnedRowModel.prototype.forEachPinnedTopRow = function (callback) {
41638 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["missingOrEmpty"])(this.pinnedTopRows)) {
41639 return;
41640 }
41641 this.pinnedTopRows.forEach(callback);
41642 };
41643 PinnedRowModel.prototype.forEachPinnedBottomRow = function (callback) {
41644 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["missingOrEmpty"])(this.pinnedBottomRows)) {
41645 return;
41646 }
41647 this.pinnedBottomRows.forEach(callback);
41648 };
41649 PinnedRowModel.prototype.getPinnedBottomTotalHeight = function () {
41650 return this.getTotalHeight(this.pinnedBottomRows);
41651 };
41652 PinnedRowModel.prototype.getTotalHeight = function (rowNodes) {
41653 if (!rowNodes || rowNodes.length === 0) {
41654 return 0;
41655 }
41656 var lastNode = Object(_utils_array__WEBPACK_IMPORTED_MODULE_6__["last"])(rowNodes);
41657 return lastNode.rowTop + lastNode.rowHeight;
41658 };
41659 __decorate([
41660 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnApi')
41661 ], PinnedRowModel.prototype, "columnApi", void 0);
41662 __decorate([
41663 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('gridApi')
41664 ], PinnedRowModel.prototype, "gridApi", void 0);
41665 __decorate([
41666 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('beans')
41667 ], PinnedRowModel.prototype, "beans", void 0);
41668 __decorate([
41669 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
41670 ], PinnedRowModel.prototype, "init", null);
41671 PinnedRowModel = __decorate([
41672 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('pinnedRowModel')
41673 ], PinnedRowModel);
41674 return PinnedRowModel;
41675}(_context_beanStub__WEBPACK_IMPORTED_MODULE_4__["BeanStub"]));
41676
41677
41678
41679
41680
41681/***/ }),
41682/* 181 */
41683/***/ (function(module, __webpack_exports__, __webpack_require__) {
41684
41685"use strict";
41686__webpack_require__.r(__webpack_exports__);
41687/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ServerSideTransactionResultStatus", function() { return ServerSideTransactionResultStatus; });
41688/**
41689 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
41690 * @version v27.3.0
41691 * @link https://www.ag-grid.com/
41692 * @license MIT
41693 */
41694var ServerSideTransactionResultStatus;
41695(function (ServerSideTransactionResultStatus) {
41696 /** Transaction was successfully applied */
41697 ServerSideTransactionResultStatus["Applied"] = "Applied";
41698 /**
41699 * Store was not found, transaction not applied.
41700 * Either invalid route, or the parent row has not yet been expanded.
41701 */
41702 ServerSideTransactionResultStatus["StoreNotFound"] = "StoreNotFound";
41703 /**
41704 * Store is loading, transaction not applied.
41705 */
41706 ServerSideTransactionResultStatus["StoreLoading"] = "StoreLoading";
41707 /**
41708 * Store is loading (as max loads exceeded), transaction not applied.
41709 */
41710 ServerSideTransactionResultStatus["StoreWaitingToLoad"] = "StoreWaitingToLoad";
41711 /**
41712 * Store load attempt failed, transaction not applied.
41713 */
41714 ServerSideTransactionResultStatus["StoreLoadingFailed"] = "StoreLoadingFailed";
41715 /**
41716 * Store is type Partial, which doesn't accept transactions
41717 */
41718 ServerSideTransactionResultStatus["StoreWrongType"] = "StoreWrongType";
41719 /**
41720 * Transaction was cancelled, due to grid.
41721 * Callback isApplyServerSideTransaction() returning false
41722 */
41723 ServerSideTransactionResultStatus["Cancelled"] = "Cancelled";
41724})(ServerSideTransactionResultStatus || (ServerSideTransactionResultStatus = {}));
41725
41726
41727
41728
41729/***/ }),
41730/* 182 */
41731/***/ (function(module, __webpack_exports__, __webpack_require__) {
41732
41733"use strict";
41734__webpack_require__.r(__webpack_exports__);
41735/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ChangedPath", function() { return ChangedPath; });
41736/**
41737 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
41738 * @version v27.3.0
41739 * @link https://www.ag-grid.com/
41740 * @license MIT
41741 */
41742// when doing transactions, or change detection, and grouping is present
41743// in the data, there is no need for the ClientSideRowModel to update each
41744// group after an update, ony parts that were impacted by the change.
41745// this class keeps track of all groups that were impacted by a transaction.
41746// the the different CSRM operations (filter, sort etc) use the forEach method
41747// to visit each group that was changed.
41748var ChangedPath = /** @class */ (function () {
41749 function ChangedPath(keepingColumns, rootNode) {
41750 // whether changed path is active of not. it is active when a) doing
41751 // a transaction update or b) doing change detection. if we are doing
41752 // a CSRM refresh for other reasons (after sort or filter, or user calling
41753 // setRowData() without delta mode) then we are not active. we are also
41754 // marked as not active if secondary columns change in pivot (as this impacts
41755 // aggregations)
41756 this.active = true;
41757 // for each node in the change path, we also store which columns need
41758 // to be re-aggregated.
41759 this.nodeIdsToColumns = {};
41760 // for quick lookup, all items in the change path are mapped by nodeId
41761 this.mapToItems = {};
41762 this.keepingColumns = keepingColumns;
41763 this.pathRoot = {
41764 rowNode: rootNode,
41765 children: null
41766 };
41767 this.mapToItems[rootNode.id] = this.pathRoot;
41768 }
41769 // can be set inactive by:
41770 // a) ClientSideRowModel, if no transactions or
41771 // b) PivotService, if secondary columns changed
41772 ChangedPath.prototype.setInactive = function () {
41773 this.active = false;
41774 };
41775 ChangedPath.prototype.isActive = function () {
41776 return this.active;
41777 };
41778 ChangedPath.prototype.depthFirstSearchChangedPath = function (pathItem, callback) {
41779 if (pathItem.children) {
41780 for (var i = 0; i < pathItem.children.length; i++) {
41781 this.depthFirstSearchChangedPath(pathItem.children[i], callback);
41782 }
41783 }
41784 callback(pathItem.rowNode);
41785 };
41786 ChangedPath.prototype.depthFirstSearchEverything = function (rowNode, callback, traverseEverything) {
41787 if (rowNode.childrenAfterGroup) {
41788 for (var i = 0; i < rowNode.childrenAfterGroup.length; i++) {
41789 var childNode = rowNode.childrenAfterGroup[i];
41790 if (childNode.childrenAfterGroup) {
41791 this.depthFirstSearchEverything(rowNode.childrenAfterGroup[i], callback, traverseEverything);
41792 }
41793 else if (traverseEverything) {
41794 callback(childNode);
41795 }
41796 }
41797 }
41798 callback(rowNode);
41799 };
41800 // traverseLeafNodes -> used when NOT doing changed path, ie traversing everything. the callback
41801 // will be called for child nodes in addition to parent nodes.
41802 ChangedPath.prototype.forEachChangedNodeDepthFirst = function (callback, traverseLeafNodes) {
41803 if (traverseLeafNodes === void 0) { traverseLeafNodes = false; }
41804 if (this.active) {
41805 // if we are active, then use the change path to callback
41806 // only for updated groups
41807 this.depthFirstSearchChangedPath(this.pathRoot, callback);
41808 }
41809 else {
41810 // we are not active, so callback for everything, walk the entire path
41811 this.depthFirstSearchEverything(this.pathRoot.rowNode, callback, traverseLeafNodes);
41812 }
41813 };
41814 ChangedPath.prototype.executeFromRootNode = function (callback) {
41815 callback(this.pathRoot.rowNode);
41816 };
41817 ChangedPath.prototype.createPathItems = function (rowNode) {
41818 var pointer = rowNode;
41819 var newEntryCount = 0;
41820 while (!this.mapToItems[pointer.id]) {
41821 var newEntry = {
41822 rowNode: pointer,
41823 children: null
41824 };
41825 this.mapToItems[pointer.id] = newEntry;
41826 newEntryCount++;
41827 pointer = pointer.parent;
41828 }
41829 return newEntryCount;
41830 };
41831 ChangedPath.prototype.populateColumnsMap = function (rowNode, columns) {
41832 var _this = this;
41833 if (!this.keepingColumns || !columns) {
41834 return;
41835 }
41836 var pointer = rowNode;
41837 while (pointer) {
41838 // if columns, add the columns in all the way to parent, merging
41839 // in any other columns that might be there already
41840 if (!this.nodeIdsToColumns[pointer.id]) {
41841 this.nodeIdsToColumns[pointer.id] = {};
41842 }
41843 columns.forEach(function (col) { return _this.nodeIdsToColumns[pointer.id][col.getId()] = true; });
41844 pointer = pointer.parent;
41845 }
41846 };
41847 ChangedPath.prototype.linkPathItems = function (rowNode, newEntryCount) {
41848 var pointer = rowNode;
41849 for (var i = 0; i < newEntryCount; i++) {
41850 var thisItem = this.mapToItems[pointer.id];
41851 var parentItem = this.mapToItems[pointer.parent.id];
41852 if (!parentItem.children) {
41853 parentItem.children = [];
41854 }
41855 parentItem.children.push(thisItem);
41856 pointer = pointer.parent;
41857 }
41858 };
41859 // called by
41860 // 1) change detection (provides cols) and
41861 // 2) groupStage if doing transaction update (doesn't provide cols)
41862 ChangedPath.prototype.addParentNode = function (rowNode, columns) {
41863 if (!rowNode || rowNode.isRowPinned()) {
41864 return;
41865 }
41866 // we cannot do both steps below in the same loop as
41867 // the second loop has a dependency on the first loop.
41868 // ie the hierarchy cannot be stitched up yet because
41869 // we don't have it built yet
41870 // create the new PathItem objects.
41871 var newEntryCount = this.createPathItems(rowNode);
41872 // link in the node items
41873 this.linkPathItems(rowNode, newEntryCount);
41874 // update columns
41875 this.populateColumnsMap(rowNode, columns);
41876 };
41877 ChangedPath.prototype.canSkip = function (rowNode) {
41878 return this.active && !this.mapToItems[rowNode.id];
41879 };
41880 ChangedPath.prototype.getValueColumnsForNode = function (rowNode, valueColumns) {
41881 if (!this.keepingColumns) {
41882 return valueColumns;
41883 }
41884 var colsForThisNode = this.nodeIdsToColumns[rowNode.id];
41885 var result = valueColumns.filter(function (col) { return colsForThisNode[col.getId()]; });
41886 return result;
41887 };
41888 ChangedPath.prototype.getNotValueColumnsForNode = function (rowNode, valueColumns) {
41889 if (!this.keepingColumns) {
41890 return null;
41891 }
41892 var colsForThisNode = this.nodeIdsToColumns[rowNode.id];
41893 var result = valueColumns.filter(function (col) { return !colsForThisNode[col.getId()]; });
41894 return result;
41895 };
41896 return ChangedPath;
41897}());
41898
41899
41900
41901
41902
41903/***/ }),
41904/* 183 */
41905/***/ (function(module, __webpack_exports__, __webpack_require__) {
41906
41907"use strict";
41908__webpack_require__.r(__webpack_exports__);
41909/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowNodeBlock", function() { return RowNodeBlock; });
41910/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
41911/**
41912 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
41913 * @version v27.3.0
41914 * @link https://www.ag-grid.com/
41915 * @license MIT
41916 */
41917var __extends = (undefined && undefined.__extends) || (function () {
41918 var extendStatics = function (d, b) {
41919 extendStatics = Object.setPrototypeOf ||
41920 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
41921 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
41922 return extendStatics(d, b);
41923 };
41924 return function (d, b) {
41925 extendStatics(d, b);
41926 function __() { this.constructor = d; }
41927 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
41928 };
41929})();
41930
41931var RowNodeBlock = /** @class */ (function (_super) {
41932 __extends(RowNodeBlock, _super);
41933 function RowNodeBlock(id) {
41934 var _this = _super.call(this) || this;
41935 _this.state = RowNodeBlock.STATE_WAITING_TO_LOAD;
41936 _this.version = 0;
41937 _this.id = id;
41938 return _this;
41939 }
41940 RowNodeBlock.prototype.getId = function () {
41941 return this.id;
41942 };
41943 RowNodeBlock.prototype.load = function () {
41944 this.state = RowNodeBlock.STATE_LOADING;
41945 this.loadFromDatasource();
41946 };
41947 RowNodeBlock.prototype.getVersion = function () {
41948 return this.version;
41949 };
41950 RowNodeBlock.prototype.setStateWaitingToLoad = function () {
41951 // in case any current loads in progress, this will have their results ignored
41952 this.version++;
41953 this.state = RowNodeBlock.STATE_WAITING_TO_LOAD;
41954 };
41955 RowNodeBlock.prototype.getState = function () {
41956 return this.state;
41957 };
41958 RowNodeBlock.prototype.pageLoadFailed = function (version) {
41959 var requestMostRecentAndLive = this.isRequestMostRecentAndLive(version);
41960 if (requestMostRecentAndLive) {
41961 this.state = RowNodeBlock.STATE_FAILED;
41962 this.processServerFail();
41963 }
41964 this.dispatchLoadCompleted(false);
41965 };
41966 RowNodeBlock.prototype.success = function (version, params) {
41967 this.successCommon(version, params);
41968 };
41969 RowNodeBlock.prototype.pageLoaded = function (version, rows, lastRow) {
41970 this.successCommon(version, { rowData: rows, rowCount: lastRow });
41971 };
41972 RowNodeBlock.prototype.isRequestMostRecentAndLive = function (version) {
41973 // thisIsMostRecentRequest - if block was refreshed, then another request
41974 // could of been sent after this one.
41975 var thisIsMostRecentRequest = version === this.version;
41976 // weAreNotDestroyed - if InfiniteStore is purged, then blocks are destroyed
41977 // and new blocks created. so data loads of old blocks are discarded.
41978 var weAreNotDestroyed = this.isAlive();
41979 return thisIsMostRecentRequest && weAreNotDestroyed;
41980 };
41981 RowNodeBlock.prototype.successCommon = function (version, params) {
41982 // need to dispatch load complete before processing the data, as PaginationComp checks
41983 // RowNodeBlockLoader to see if it is still loading, so the RowNodeBlockLoader needs to
41984 // be updated first (via LoadComplete event) before PaginationComp updates (via processServerResult method)
41985 this.dispatchLoadCompleted();
41986 var requestMostRecentAndLive = this.isRequestMostRecentAndLive(version);
41987 if (requestMostRecentAndLive) {
41988 this.state = RowNodeBlock.STATE_LOADED;
41989 this.processServerResult(params);
41990 }
41991 };
41992 RowNodeBlock.prototype.dispatchLoadCompleted = function (success) {
41993 if (success === void 0) { success = true; }
41994 // we fire event regardless of processing data or now, as we want
41995 // the concurrentLoadRequests count to be reduced in BlockLoader
41996 var event = {
41997 type: RowNodeBlock.EVENT_LOAD_COMPLETE,
41998 success: success,
41999 block: this
42000 };
42001 this.dispatchEvent(event);
42002 };
42003 RowNodeBlock.EVENT_LOAD_COMPLETE = 'loadComplete';
42004 RowNodeBlock.STATE_WAITING_TO_LOAD = 'needsLoading';
42005 RowNodeBlock.STATE_LOADING = 'loading';
42006 RowNodeBlock.STATE_LOADED = 'loaded';
42007 RowNodeBlock.STATE_FAILED = 'failed';
42008 return RowNodeBlock;
42009}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
42010
42011
42012
42013
42014
42015/***/ }),
42016/* 184 */
42017/***/ (function(module, __webpack_exports__, __webpack_require__) {
42018
42019"use strict";
42020__webpack_require__.r(__webpack_exports__);
42021/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowNodeBlockLoader", function() { return RowNodeBlockLoader; });
42022/* harmony import */ var _rowNodeBlock__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(183);
42023/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
42024/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(20);
42025/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(37);
42026/**
42027 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
42028 * @version v27.3.0
42029 * @link https://www.ag-grid.com/
42030 * @license MIT
42031 */
42032var __extends = (undefined && undefined.__extends) || (function () {
42033 var extendStatics = function (d, b) {
42034 extendStatics = Object.setPrototypeOf ||
42035 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
42036 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
42037 return extendStatics(d, b);
42038 };
42039 return function (d, b) {
42040 extendStatics(d, b);
42041 function __() { this.constructor = d; }
42042 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
42043 };
42044})();
42045var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
42046 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
42047 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
42048 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
42049 return c > 3 && r && Object.defineProperty(target, key, r), r;
42050};
42051var __param = (undefined && undefined.__param) || function (paramIndex, decorator) {
42052 return function (target, key) { decorator(target, key, paramIndex); }
42053};
42054
42055
42056
42057
42058var RowNodeBlockLoader = /** @class */ (function (_super) {
42059 __extends(RowNodeBlockLoader, _super);
42060 function RowNodeBlockLoader() {
42061 var _this = _super !== null && _super.apply(this, arguments) || this;
42062 _this.activeBlockLoadsCount = 0;
42063 _this.blocks = [];
42064 _this.active = true;
42065 return _this;
42066 }
42067 RowNodeBlockLoader_1 = RowNodeBlockLoader;
42068 RowNodeBlockLoader.prototype.postConstruct = function () {
42069 this.maxConcurrentRequests = this.gridOptionsWrapper.getMaxConcurrentDatasourceRequests();
42070 var blockLoadDebounceMillis = this.gridOptionsWrapper.getBlockLoadDebounceMillis();
42071 if (blockLoadDebounceMillis && blockLoadDebounceMillis > 0) {
42072 this.checkBlockToLoadDebounce = _utils__WEBPACK_IMPORTED_MODULE_3__["_"].debounce(this.performCheckBlocksToLoad.bind(this), blockLoadDebounceMillis);
42073 }
42074 };
42075 RowNodeBlockLoader.prototype.setBeans = function (loggerFactory) {
42076 this.logger = loggerFactory.create('RowNodeBlockLoader');
42077 };
42078 RowNodeBlockLoader.prototype.addBlock = function (block) {
42079 this.blocks.push(block);
42080 // note that we do not remove this listener when removing the block. this is because the
42081 // cache can get destroyed (and containing blocks) when a block is loading. however the loading block
42082 // is still counted as an active loading block and we must decrement activeBlockLoadsCount when it finishes.
42083 block.addEventListener(_rowNodeBlock__WEBPACK_IMPORTED_MODULE_0__["RowNodeBlock"].EVENT_LOAD_COMPLETE, this.loadComplete.bind(this));
42084 this.checkBlockToLoad();
42085 };
42086 RowNodeBlockLoader.prototype.removeBlock = function (block) {
42087 _utils__WEBPACK_IMPORTED_MODULE_3__["_"].removeFromArray(this.blocks, block);
42088 };
42089 RowNodeBlockLoader.prototype.destroy = function () {
42090 _super.prototype.destroy.call(this);
42091 this.active = false;
42092 };
42093 RowNodeBlockLoader.prototype.loadComplete = function () {
42094 this.activeBlockLoadsCount--;
42095 this.checkBlockToLoad();
42096 if (this.activeBlockLoadsCount == 0) {
42097 this.dispatchEvent({ type: RowNodeBlockLoader_1.BLOCK_LOADER_FINISHED_EVENT });
42098 }
42099 };
42100 RowNodeBlockLoader.prototype.checkBlockToLoad = function () {
42101 if (this.checkBlockToLoadDebounce) {
42102 this.checkBlockToLoadDebounce();
42103 }
42104 else {
42105 this.performCheckBlocksToLoad();
42106 }
42107 };
42108 RowNodeBlockLoader.prototype.performCheckBlocksToLoad = function () {
42109 if (!this.active) {
42110 return;
42111 }
42112 this.printCacheStatus();
42113 if (this.maxConcurrentRequests != null && this.activeBlockLoadsCount >= this.maxConcurrentRequests) {
42114 this.logger.log("checkBlockToLoad: max loads exceeded");
42115 return;
42116 }
42117 var blockToLoad = null;
42118 this.blocks.forEach(function (block) {
42119 if (block.getState() === _rowNodeBlock__WEBPACK_IMPORTED_MODULE_0__["RowNodeBlock"].STATE_WAITING_TO_LOAD) {
42120 blockToLoad = block;
42121 }
42122 });
42123 if (blockToLoad) {
42124 blockToLoad.load();
42125 this.activeBlockLoadsCount++;
42126 this.printCacheStatus();
42127 }
42128 };
42129 RowNodeBlockLoader.prototype.getBlockState = function () {
42130 var result = {};
42131 this.blocks.forEach(function (block) {
42132 var _a = block.getBlockStateJson(), id = _a.id, state = _a.state;
42133 result[id] = state;
42134 });
42135 return result;
42136 };
42137 RowNodeBlockLoader.prototype.printCacheStatus = function () {
42138 if (this.logger.isLogging()) {
42139 this.logger.log("printCacheStatus: activePageLoadsCount = " + this.activeBlockLoadsCount + ","
42140 + (" blocks = " + JSON.stringify(this.getBlockState())));
42141 }
42142 };
42143 RowNodeBlockLoader.prototype.isLoading = function () {
42144 return this.activeBlockLoadsCount > 0;
42145 };
42146 var RowNodeBlockLoader_1;
42147 RowNodeBlockLoader.BLOCK_LOADER_FINISHED_EVENT = 'blockLoaderFinished';
42148 __decorate([
42149 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
42150 ], RowNodeBlockLoader.prototype, "postConstruct", null);
42151 __decorate([
42152 __param(0, Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Qualifier"])('loggerFactory'))
42153 ], RowNodeBlockLoader.prototype, "setBeans", null);
42154 RowNodeBlockLoader = RowNodeBlockLoader_1 = __decorate([
42155 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('rowNodeBlockLoader')
42156 ], RowNodeBlockLoader);
42157 return RowNodeBlockLoader;
42158}(_context_beanStub__WEBPACK_IMPORTED_MODULE_2__["BeanStub"]));
42159
42160
42161
42162
42163
42164/***/ }),
42165/* 185 */
42166/***/ (function(module, __webpack_exports__, __webpack_require__) {
42167
42168"use strict";
42169__webpack_require__.r(__webpack_exports__);
42170/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PaginationProxy", function() { return PaginationProxy; });
42171/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
42172/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(23);
42173/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
42174/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7);
42175/* harmony import */ var _utils_number__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(46);
42176/**
42177 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
42178 * @version v27.3.0
42179 * @link https://www.ag-grid.com/
42180 * @license MIT
42181 */
42182var __extends = (undefined && undefined.__extends) || (function () {
42183 var extendStatics = function (d, b) {
42184 extendStatics = Object.setPrototypeOf ||
42185 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
42186 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
42187 return extendStatics(d, b);
42188 };
42189 return function (d, b) {
42190 extendStatics(d, b);
42191 function __() { this.constructor = d; }
42192 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
42193 };
42194})();
42195var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
42196 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
42197 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
42198 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
42199 return c > 3 && r && Object.defineProperty(target, key, r), r;
42200};
42201
42202
42203
42204
42205
42206var PaginationProxy = /** @class */ (function (_super) {
42207 __extends(PaginationProxy, _super);
42208 function PaginationProxy() {
42209 var _this = _super !== null && _super.apply(this, arguments) || this;
42210 _this.currentPage = 0;
42211 _this.topDisplayedRowIndex = 0;
42212 _this.bottomDisplayedRowIndex = 0;
42213 _this.pixelOffset = 0;
42214 _this.masterRowCount = 0;
42215 return _this;
42216 }
42217 PaginationProxy.prototype.postConstruct = function () {
42218 this.active = this.gridOptionsWrapper.isPagination();
42219 this.paginateChildRows = this.gridOptionsWrapper.isPaginateChildRows();
42220 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_MODEL_UPDATED, this.onModelUpdated.bind(this));
42221 this.addManagedListener(this.gridOptionsWrapper, 'paginationPageSize', this.onPaginationPageSizeChanged.bind(this));
42222 this.onModelUpdated();
42223 };
42224 PaginationProxy.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {
42225 var res = this.rowModel.ensureRowHeightsValid(startPixel, endPixel, this.getPageFirstRow(), this.getPageLastRow());
42226 if (res) {
42227 this.calculatePages();
42228 }
42229 return res;
42230 };
42231 PaginationProxy.prototype.onModelUpdated = function (modelUpdatedEvent) {
42232 this.calculatePages();
42233 var paginationChangedEvent = {
42234 type: _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_PAGINATION_CHANGED,
42235 animate: modelUpdatedEvent ? modelUpdatedEvent.animate : false,
42236 newData: modelUpdatedEvent ? modelUpdatedEvent.newData : false,
42237 newPage: modelUpdatedEvent ? modelUpdatedEvent.newPage : false,
42238 keepRenderedRows: modelUpdatedEvent ? modelUpdatedEvent.keepRenderedRows : false,
42239 api: this.gridApi,
42240 columnApi: this.columnApi
42241 };
42242 this.eventService.dispatchEvent(paginationChangedEvent);
42243 };
42244 PaginationProxy.prototype.onPaginationPageSizeChanged = function () {
42245 this.calculatePages();
42246 var paginationChangedEvent = {
42247 type: _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_PAGINATION_CHANGED,
42248 animate: false,
42249 newData: false,
42250 newPage: false,
42251 // important to keep rendered rows, otherwise every time grid is resized,
42252 // we would destroy all the rows.
42253 keepRenderedRows: true,
42254 api: this.gridApi,
42255 columnApi: this.columnApi
42256 };
42257 this.eventService.dispatchEvent(paginationChangedEvent);
42258 };
42259 PaginationProxy.prototype.goToPage = function (page) {
42260 if (!this.active || this.currentPage === page) {
42261 return;
42262 }
42263 this.currentPage = page;
42264 var event = {
42265 type: _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_MODEL_UPDATED,
42266 animate: false,
42267 keepRenderedRows: false,
42268 newData: false,
42269 newPage: true,
42270 api: this.gridApi,
42271 columnApi: this.columnApi
42272 };
42273 this.onModelUpdated(event);
42274 };
42275 PaginationProxy.prototype.getPixelOffset = function () {
42276 return this.pixelOffset;
42277 };
42278 PaginationProxy.prototype.getRow = function (index) {
42279 return this.rowModel.getRow(index);
42280 };
42281 PaginationProxy.prototype.getRowNode = function (id) {
42282 return this.rowModel.getRowNode(id);
42283 };
42284 PaginationProxy.prototype.getRowIndexAtPixel = function (pixel) {
42285 return this.rowModel.getRowIndexAtPixel(pixel);
42286 };
42287 PaginationProxy.prototype.getCurrentPageHeight = function () {
42288 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["missing"])(this.topRowBounds) || Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["missing"])(this.bottomRowBounds)) {
42289 return 0;
42290 }
42291 return Math.max(this.bottomRowBounds.rowTop + this.bottomRowBounds.rowHeight - this.topRowBounds.rowTop, 0);
42292 };
42293 PaginationProxy.prototype.getCurrentPagePixelRange = function () {
42294 var pageFirstPixel = this.topRowBounds ? this.topRowBounds.rowTop : 0;
42295 var pageLastPixel = this.bottomRowBounds ? this.bottomRowBounds.rowTop + this.bottomRowBounds.rowHeight : 0;
42296 return { pageFirstPixel: pageFirstPixel, pageLastPixel: pageLastPixel };
42297 };
42298 PaginationProxy.prototype.isRowPresent = function (rowNode) {
42299 if (!this.rowModel.isRowPresent(rowNode)) {
42300 return false;
42301 }
42302 var nodeIsInPage = rowNode.rowIndex >= this.topDisplayedRowIndex && rowNode.rowIndex <= this.bottomDisplayedRowIndex;
42303 return nodeIsInPage;
42304 };
42305 PaginationProxy.prototype.isEmpty = function () {
42306 return this.rowModel.isEmpty();
42307 };
42308 PaginationProxy.prototype.isRowsToRender = function () {
42309 return this.rowModel.isRowsToRender();
42310 };
42311 PaginationProxy.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {
42312 return this.rowModel.getNodesInRangeForSelection(firstInRange, lastInRange);
42313 };
42314 PaginationProxy.prototype.forEachNode = function (callback) {
42315 return this.rowModel.forEachNode(callback);
42316 };
42317 PaginationProxy.prototype.getType = function () {
42318 return this.rowModel.getType();
42319 };
42320 PaginationProxy.prototype.getRowBounds = function (index) {
42321 var res = this.rowModel.getRowBounds(index);
42322 res.rowIndex = index;
42323 return res;
42324 };
42325 PaginationProxy.prototype.getPageFirstRow = function () {
42326 return this.topRowBounds ? this.topRowBounds.rowIndex : -1;
42327 };
42328 PaginationProxy.prototype.getPageLastRow = function () {
42329 return this.bottomRowBounds ? this.bottomRowBounds.rowIndex : -1;
42330 };
42331 PaginationProxy.prototype.getRowCount = function () {
42332 return this.rowModel.getRowCount();
42333 };
42334 PaginationProxy.prototype.getPageForIndex = function (index) {
42335 return Math.floor(index / this.pageSize);
42336 };
42337 PaginationProxy.prototype.goToPageWithIndex = function (index) {
42338 if (!this.active) {
42339 return;
42340 }
42341 var pageNumber = this.getPageForIndex(index);
42342 this.goToPage(pageNumber);
42343 };
42344 PaginationProxy.prototype.isRowInPage = function (row) {
42345 if (!this.active) {
42346 return true;
42347 }
42348 var rowPage = this.getPageForIndex(row.rowIndex);
42349 return rowPage === this.currentPage;
42350 };
42351 PaginationProxy.prototype.isLastPageFound = function () {
42352 return this.rowModel.isLastRowIndexKnown();
42353 };
42354 PaginationProxy.prototype.getCurrentPage = function () {
42355 return this.currentPage;
42356 };
42357 PaginationProxy.prototype.goToNextPage = function () {
42358 this.goToPage(this.currentPage + 1);
42359 };
42360 PaginationProxy.prototype.goToPreviousPage = function () {
42361 this.goToPage(this.currentPage - 1);
42362 };
42363 PaginationProxy.prototype.goToFirstPage = function () {
42364 this.goToPage(0);
42365 };
42366 PaginationProxy.prototype.goToLastPage = function () {
42367 var rowCount = this.rowModel.getRowCount();
42368 var lastPage = Math.floor(rowCount / this.pageSize);
42369 this.goToPage(lastPage);
42370 };
42371 PaginationProxy.prototype.getPageSize = function () {
42372 return this.pageSize;
42373 };
42374 PaginationProxy.prototype.getTotalPages = function () {
42375 return this.totalPages;
42376 };
42377 PaginationProxy.prototype.setPageSize = function () {
42378 // show put this into super class
42379 this.pageSize = this.gridOptionsWrapper.getPaginationPageSize();
42380 if (this.pageSize == null || this.pageSize < 1) {
42381 this.pageSize = 100;
42382 }
42383 };
42384 PaginationProxy.prototype.calculatePages = function () {
42385 if (this.active) {
42386 this.setPageSize();
42387 if (this.paginateChildRows) {
42388 this.calculatePagesAllRows();
42389 }
42390 else {
42391 this.calculatePagesMasterRowsOnly();
42392 }
42393 }
42394 else {
42395 this.calculatedPagesNotActive();
42396 }
42397 this.topRowBounds = this.rowModel.getRowBounds(this.topDisplayedRowIndex);
42398 if (this.topRowBounds) {
42399 this.topRowBounds.rowIndex = this.topDisplayedRowIndex;
42400 }
42401 this.bottomRowBounds = this.rowModel.getRowBounds(this.bottomDisplayedRowIndex);
42402 if (this.bottomRowBounds) {
42403 this.bottomRowBounds.rowIndex = this.bottomDisplayedRowIndex;
42404 }
42405 this.setPixelOffset(Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["exists"])(this.topRowBounds) ? this.topRowBounds.rowTop : 0);
42406 };
42407 PaginationProxy.prototype.setPixelOffset = function (value) {
42408 if (this.pixelOffset === value) {
42409 return;
42410 }
42411 this.pixelOffset = value;
42412 this.eventService.dispatchEvent({ type: _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_PAGINATION_PIXEL_OFFSET_CHANGED });
42413 };
42414 PaginationProxy.prototype.setZeroRows = function () {
42415 this.masterRowCount = 0;
42416 this.topDisplayedRowIndex = 0;
42417 this.bottomDisplayedRowIndex = -1;
42418 this.currentPage = 0;
42419 this.totalPages = 0;
42420 };
42421 PaginationProxy.prototype.calculatePagesMasterRowsOnly = function () {
42422 // const csrm = <ClientSideRowModel> this.rowModel;
42423 // const rootNode = csrm.getRootNode();
42424 // const masterRows = rootNode.childrenAfterSort;
42425 this.masterRowCount = this.rowModel.getTopLevelRowCount();
42426 // we say <=0 (rather than =0) as viewport returns -1 when no rows
42427 if (this.masterRowCount <= 0) {
42428 this.setZeroRows();
42429 return;
42430 }
42431 var masterLastRowIndex = this.masterRowCount - 1;
42432 this.totalPages = Math.floor((masterLastRowIndex) / this.pageSize) + 1;
42433 if (this.currentPage >= this.totalPages) {
42434 this.currentPage = this.totalPages - 1;
42435 }
42436 if (!Object(_utils_number__WEBPACK_IMPORTED_MODULE_4__["isNumeric"])(this.currentPage) || this.currentPage < 0) {
42437 this.currentPage = 0;
42438 }
42439 var masterPageStartIndex = this.pageSize * this.currentPage;
42440 var masterPageEndIndex = (this.pageSize * (this.currentPage + 1)) - 1;
42441 if (masterPageEndIndex > masterLastRowIndex) {
42442 masterPageEndIndex = masterLastRowIndex;
42443 }
42444 this.topDisplayedRowIndex = this.rowModel.getTopLevelRowDisplayedIndex(masterPageStartIndex);
42445 // masterRows[masterPageStartIndex].rowIndex;
42446 if (masterPageEndIndex === masterLastRowIndex) {
42447 // if showing the last master row, then we want to show the very last row of the model
42448 this.bottomDisplayedRowIndex = this.rowModel.getRowCount() - 1;
42449 }
42450 else {
42451 var firstIndexNotToShow = this.rowModel.getTopLevelRowDisplayedIndex(masterPageEndIndex + 1);
42452 //masterRows[masterPageEndIndex + 1].rowIndex;
42453 // this gets the index of the last child - eg current row is open, we want to display all children,
42454 // the index of the last child is one less than the index of the next parent row.
42455 this.bottomDisplayedRowIndex = firstIndexNotToShow - 1;
42456 }
42457 };
42458 PaginationProxy.prototype.getMasterRowCount = function () {
42459 return this.masterRowCount;
42460 };
42461 PaginationProxy.prototype.calculatePagesAllRows = function () {
42462 this.masterRowCount = this.rowModel.getRowCount();
42463 if (this.masterRowCount === 0) {
42464 this.setZeroRows();
42465 return;
42466 }
42467 var maxRowIndex = this.masterRowCount - 1;
42468 this.totalPages = Math.floor((maxRowIndex) / this.pageSize) + 1;
42469 if (this.currentPage >= this.totalPages) {
42470 this.currentPage = this.totalPages - 1;
42471 }
42472 if (!Object(_utils_number__WEBPACK_IMPORTED_MODULE_4__["isNumeric"])(this.currentPage) || this.currentPage < 0) {
42473 this.currentPage = 0;
42474 }
42475 this.topDisplayedRowIndex = this.pageSize * this.currentPage;
42476 this.bottomDisplayedRowIndex = (this.pageSize * (this.currentPage + 1)) - 1;
42477 if (this.bottomDisplayedRowIndex > maxRowIndex) {
42478 this.bottomDisplayedRowIndex = maxRowIndex;
42479 }
42480 };
42481 PaginationProxy.prototype.calculatedPagesNotActive = function () {
42482 this.pageSize = this.rowModel.getRowCount();
42483 this.totalPages = 1;
42484 this.currentPage = 0;
42485 this.topDisplayedRowIndex = 0;
42486 this.bottomDisplayedRowIndex = this.rowModel.getRowCount() - 1;
42487 };
42488 __decorate([
42489 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('rowModel')
42490 ], PaginationProxy.prototype, "rowModel", void 0);
42491 __decorate([
42492 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('columnApi')
42493 ], PaginationProxy.prototype, "columnApi", void 0);
42494 __decorate([
42495 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('gridApi')
42496 ], PaginationProxy.prototype, "gridApi", void 0);
42497 __decorate([
42498 _context_context__WEBPACK_IMPORTED_MODULE_2__["PostConstruct"]
42499 ], PaginationProxy.prototype, "postConstruct", null);
42500 PaginationProxy = __decorate([
42501 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Bean"])('paginationProxy')
42502 ], PaginationProxy);
42503 return PaginationProxy;
42504}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
42505
42506
42507
42508
42509
42510/***/ }),
42511/* 186 */
42512/***/ (function(module, __webpack_exports__, __webpack_require__) {
42513
42514"use strict";
42515__webpack_require__.r(__webpack_exports__);
42516/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StylingService", function() { return StylingService; });
42517/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
42518/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
42519/**
42520 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
42521 * @version v27.3.0
42522 * @link https://www.ag-grid.com/
42523 * @license MIT
42524 */
42525var __extends = (undefined && undefined.__extends) || (function () {
42526 var extendStatics = function (d, b) {
42527 extendStatics = Object.setPrototypeOf ||
42528 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
42529 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
42530 return extendStatics(d, b);
42531 };
42532 return function (d, b) {
42533 extendStatics(d, b);
42534 function __() { this.constructor = d; }
42535 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
42536 };
42537})();
42538var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
42539 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
42540 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
42541 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
42542 return c > 3 && r && Object.defineProperty(target, key, r), r;
42543};
42544
42545
42546var StylingService = /** @class */ (function (_super) {
42547 __extends(StylingService, _super);
42548 function StylingService() {
42549 return _super !== null && _super.apply(this, arguments) || this;
42550 }
42551 StylingService.prototype.processAllCellClasses = function (colDef, params, onApplicableClass, onNotApplicableClass) {
42552 this.processClassRules(colDef.cellClassRules, params, onApplicableClass, onNotApplicableClass);
42553 this.processStaticCellClasses(colDef, params, onApplicableClass);
42554 };
42555 StylingService.prototype.processClassRules = function (classRules, params, onApplicableClass, onNotApplicableClass) {
42556 if (classRules == null) {
42557 return;
42558 }
42559 var classNames = Object.keys(classRules);
42560 var classesToApply = {};
42561 var classesToRemove = {};
42562 var _loop_1 = function (i) {
42563 var className = classNames[i];
42564 var rule = classRules[className];
42565 var resultOfRule;
42566 if (typeof rule === 'string') {
42567 resultOfRule = this_1.expressionService.evaluate(rule, params);
42568 }
42569 else if (typeof rule === 'function') {
42570 resultOfRule = rule(params);
42571 }
42572 // in case className = 'my-class1 my-class2', we need to split into individual class names
42573 className.split(' ').forEach(function (singleClass) {
42574 if (singleClass == null || singleClass.trim() == '') {
42575 return;
42576 }
42577 resultOfRule ? classesToApply[singleClass] = true : classesToRemove[singleClass] = true;
42578 });
42579 };
42580 var this_1 = this;
42581 for (var i = 0; i < classNames.length; i++) {
42582 _loop_1(i);
42583 }
42584 // we remove all classes first, then add all classes second,
42585 // in case a class appears in more than one rule, this means it will be added
42586 // if appears in at least one truthy rule
42587 if (onNotApplicableClass) {
42588 Object.keys(classesToRemove).forEach(onNotApplicableClass);
42589 }
42590 Object.keys(classesToApply).forEach(onApplicableClass);
42591 };
42592 StylingService.prototype.getStaticCellClasses = function (colDef, params) {
42593 var cellClass = colDef.cellClass;
42594 if (!cellClass) {
42595 return [];
42596 }
42597 var classOrClasses;
42598 if (typeof cellClass === 'function') {
42599 var cellClassFunc = cellClass;
42600 classOrClasses = cellClassFunc(params);
42601 }
42602 else {
42603 classOrClasses = cellClass;
42604 }
42605 if (typeof classOrClasses === 'string') {
42606 classOrClasses = [classOrClasses];
42607 }
42608 return classOrClasses || [];
42609 };
42610 StylingService.prototype.processStaticCellClasses = function (colDef, params, onApplicableClass) {
42611 var classOrClasses = this.getStaticCellClasses(colDef, params);
42612 classOrClasses.forEach(function (cssClassItem) {
42613 onApplicableClass(cssClassItem);
42614 });
42615 };
42616 __decorate([
42617 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('expressionService')
42618 ], StylingService.prototype, "expressionService", void 0);
42619 StylingService = __decorate([
42620 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('stylingService')
42621 ], StylingService);
42622 return StylingService;
42623}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
42624
42625
42626
42627
42628
42629/***/ }),
42630/* 187 */
42631/***/ (function(module, __webpack_exports__, __webpack_require__) {
42632
42633"use strict";
42634__webpack_require__.r(__webpack_exports__);
42635/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgRadioButton", function() { return AgRadioButton; });
42636/* harmony import */ var _agCheckbox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(163);
42637/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(24);
42638/**
42639 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
42640 * @version v27.3.0
42641 * @link https://www.ag-grid.com/
42642 * @license MIT
42643 */
42644var __extends = (undefined && undefined.__extends) || (function () {
42645 var extendStatics = function (d, b) {
42646 extendStatics = Object.setPrototypeOf ||
42647 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
42648 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
42649 return extendStatics(d, b);
42650 };
42651 return function (d, b) {
42652 extendStatics(d, b);
42653 function __() { this.constructor = d; }
42654 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
42655 };
42656})();
42657
42658
42659var AgRadioButton = /** @class */ (function (_super) {
42660 __extends(AgRadioButton, _super);
42661 function AgRadioButton(config) {
42662 return _super.call(this, config, 'ag-radio-button', 'radio') || this;
42663 }
42664 AgRadioButton.prototype.isSelected = function () {
42665 return this.eInput.checked;
42666 };
42667 AgRadioButton.prototype.toggle = function () {
42668 if (this.eInput.disabled) {
42669 return;
42670 }
42671 // do not allow an active radio button to be deselected
42672 if (!this.isSelected()) {
42673 this.setValue(true);
42674 }
42675 };
42676 AgRadioButton.prototype.addInputListeners = function () {
42677 _super.prototype.addInputListeners.call(this);
42678 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_CHECKBOX_CHANGED, this.onChange.bind(this));
42679 };
42680 /**
42681 * This ensures that if another radio button in the same named group is selected, we deselect this radio button.
42682 * By default the browser does this for you, but we are managing classes ourselves in order to ensure input
42683 * elements are styled correctly in IE11, and the DOM 'changed' event is only fired when a button is selected,
42684 * not deselected, so we need to use our own event.
42685 */
42686 AgRadioButton.prototype.onChange = function (event) {
42687 if (event.selected &&
42688 event.name &&
42689 this.eInput.name &&
42690 this.eInput.name === event.name &&
42691 event.id &&
42692 this.eInput.id !== event.id) {
42693 this.setValue(false, true);
42694 }
42695 };
42696 return AgRadioButton;
42697}(_agCheckbox__WEBPACK_IMPORTED_MODULE_0__["AgCheckbox"]));
42698
42699
42700
42701
42702
42703/***/ }),
42704/* 188 */
42705/***/ (function(module, __webpack_exports__, __webpack_require__) {
42706
42707"use strict";
42708__webpack_require__.r(__webpack_exports__);
42709/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgToggleButton", function() { return AgToggleButton; });
42710/* harmony import */ var _agCheckbox__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(163);
42711/**
42712 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
42713 * @version v27.3.0
42714 * @link https://www.ag-grid.com/
42715 * @license MIT
42716 */
42717var __extends = (undefined && undefined.__extends) || (function () {
42718 var extendStatics = function (d, b) {
42719 extendStatics = Object.setPrototypeOf ||
42720 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
42721 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
42722 return extendStatics(d, b);
42723 };
42724 return function (d, b) {
42725 extendStatics(d, b);
42726 function __() { this.constructor = d; }
42727 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
42728 };
42729})();
42730
42731var AgToggleButton = /** @class */ (function (_super) {
42732 __extends(AgToggleButton, _super);
42733 function AgToggleButton(config) {
42734 return _super.call(this, config, 'ag-toggle-button') || this;
42735 }
42736 AgToggleButton.prototype.setValue = function (value, silent) {
42737 _super.prototype.setValue.call(this, value, silent);
42738 this.addOrRemoveCssClass('ag-selected', this.getValue());
42739 return this;
42740 };
42741 return AgToggleButton;
42742}(_agCheckbox__WEBPACK_IMPORTED_MODULE_0__["AgCheckbox"]));
42743
42744
42745
42746
42747
42748/***/ }),
42749/* 189 */
42750/***/ (function(module, __webpack_exports__, __webpack_require__) {
42751
42752"use strict";
42753__webpack_require__.r(__webpack_exports__);
42754/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgInputTextField", function() { return AgInputTextField; });
42755/* harmony import */ var _agAbstractInputField__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(71);
42756/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(7);
42757/**
42758 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
42759 * @version v27.3.0
42760 * @link https://www.ag-grid.com/
42761 * @license MIT
42762 */
42763var __extends = (undefined && undefined.__extends) || (function () {
42764 var extendStatics = function (d, b) {
42765 extendStatics = Object.setPrototypeOf ||
42766 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
42767 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
42768 return extendStatics(d, b);
42769 };
42770 return function (d, b) {
42771 extendStatics(d, b);
42772 function __() { this.constructor = d; }
42773 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
42774 };
42775})();
42776
42777
42778var AgInputTextField = /** @class */ (function (_super) {
42779 __extends(AgInputTextField, _super);
42780 function AgInputTextField(config, className, inputType) {
42781 if (className === void 0) { className = 'ag-text-field'; }
42782 if (inputType === void 0) { inputType = 'text'; }
42783 return _super.call(this, config, className, inputType) || this;
42784 }
42785 AgInputTextField.prototype.postConstruct = function () {
42786 _super.prototype.postConstruct.call(this);
42787 if (this.config.allowedCharPattern) {
42788 this.preventDisallowedCharacters();
42789 }
42790 };
42791 AgInputTextField.prototype.setValue = function (value, silent) {
42792 var ret = _super.prototype.setValue.call(this, value, silent);
42793 if (this.eInput.value !== value) {
42794 this.eInput.value = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_1__["exists"])(value) ? value : '';
42795 }
42796 return ret;
42797 };
42798 AgInputTextField.prototype.preventDisallowedCharacters = function () {
42799 var pattern = new RegExp("[" + this.config.allowedCharPattern + "]");
42800 var preventDisallowedCharacters = function (event) {
42801 if (event.key && !pattern.test(event.key)) {
42802 event.preventDefault();
42803 }
42804 };
42805 this.addManagedListener(this.eInput, 'keypress', preventDisallowedCharacters);
42806 this.addManagedListener(this.eInput, 'paste', function (e) {
42807 var _a;
42808 var text = (_a = e.clipboardData) === null || _a === void 0 ? void 0 : _a.getData('text');
42809 if (text && text.split('').some(function (c) { return !pattern.test(c); })) {
42810 e.preventDefault();
42811 }
42812 });
42813 };
42814 return AgInputTextField;
42815}(_agAbstractInputField__WEBPACK_IMPORTED_MODULE_0__["AgAbstractInputField"]));
42816
42817
42818
42819
42820
42821/***/ }),
42822/* 190 */
42823/***/ (function(module, __webpack_exports__, __webpack_require__) {
42824
42825"use strict";
42826__webpack_require__.r(__webpack_exports__);
42827/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgInputTextArea", function() { return AgInputTextArea; });
42828/* harmony import */ var _agAbstractInputField__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(71);
42829/**
42830 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
42831 * @version v27.3.0
42832 * @link https://www.ag-grid.com/
42833 * @license MIT
42834 */
42835var __extends = (undefined && undefined.__extends) || (function () {
42836 var extendStatics = function (d, b) {
42837 extendStatics = Object.setPrototypeOf ||
42838 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
42839 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
42840 return extendStatics(d, b);
42841 };
42842 return function (d, b) {
42843 extendStatics(d, b);
42844 function __() { this.constructor = d; }
42845 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
42846 };
42847})();
42848
42849var AgInputTextArea = /** @class */ (function (_super) {
42850 __extends(AgInputTextArea, _super);
42851 function AgInputTextArea(config) {
42852 return _super.call(this, config, 'ag-text-area', null, 'textarea') || this;
42853 }
42854 AgInputTextArea.prototype.setValue = function (value, silent) {
42855 var ret = _super.prototype.setValue.call(this, value, silent);
42856 this.eInput.value = value;
42857 return ret;
42858 };
42859 AgInputTextArea.prototype.setCols = function (cols) {
42860 this.eInput.cols = cols;
42861 return this;
42862 };
42863 AgInputTextArea.prototype.setRows = function (rows) {
42864 this.eInput.rows = rows;
42865 return this;
42866 };
42867 return AgInputTextArea;
42868}(_agAbstractInputField__WEBPACK_IMPORTED_MODULE_0__["AgAbstractInputField"]));
42869
42870
42871
42872
42873
42874/***/ }),
42875/* 191 */
42876/***/ (function(module, __webpack_exports__, __webpack_require__) {
42877
42878"use strict";
42879__webpack_require__.r(__webpack_exports__);
42880/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgInputNumberField", function() { return AgInputNumberField; });
42881/* harmony import */ var _agInputTextField__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(189);
42882/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42);
42883/**
42884 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
42885 * @version v27.3.0
42886 * @link https://www.ag-grid.com/
42887 * @license MIT
42888 */
42889var __extends = (undefined && undefined.__extends) || (function () {
42890 var extendStatics = function (d, b) {
42891 extendStatics = Object.setPrototypeOf ||
42892 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
42893 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
42894 return extendStatics(d, b);
42895 };
42896 return function (d, b) {
42897 extendStatics(d, b);
42898 function __() { this.constructor = d; }
42899 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
42900 };
42901})();
42902
42903
42904var AgInputNumberField = /** @class */ (function (_super) {
42905 __extends(AgInputNumberField, _super);
42906 function AgInputNumberField(config) {
42907 return _super.call(this, config, 'ag-number-field', 'number') || this;
42908 }
42909 AgInputNumberField.prototype.postConstruct = function () {
42910 var _this = this;
42911 _super.prototype.postConstruct.call(this);
42912 this.addManagedListener(this.eInput, 'blur', function () {
42913 var floatedValue = parseFloat(_this.eInput.value);
42914 var value = isNaN(floatedValue) ? '' : _this.normalizeValue(floatedValue.toString());
42915 if (_this.value !== value) {
42916 _this.setValue(value);
42917 }
42918 });
42919 this.eInput.step = 'any';
42920 };
42921 AgInputNumberField.prototype.normalizeValue = function (value) {
42922 if (value === '') {
42923 return '';
42924 }
42925 if (this.precision) {
42926 value = this.adjustPrecision(value);
42927 }
42928 var val = parseFloat(value);
42929 if (this.min != null && val < this.min) {
42930 value = this.min.toString();
42931 }
42932 else if (this.max != null && val > this.max) {
42933 value = this.max.toString();
42934 }
42935 return value;
42936 };
42937 AgInputNumberField.prototype.adjustPrecision = function (value) {
42938 if (this.precision) {
42939 var floatString = parseFloat(value).toFixed(this.precision);
42940 value = parseFloat(floatString).toString();
42941 }
42942 return value;
42943 };
42944 AgInputNumberField.prototype.setMin = function (min) {
42945 if (this.min === min) {
42946 return this;
42947 }
42948 this.min = min;
42949 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__["addOrRemoveAttribute"])(this.eInput, 'min', min);
42950 return this;
42951 };
42952 AgInputNumberField.prototype.setMax = function (max) {
42953 if (this.max === max) {
42954 return this;
42955 }
42956 this.max = max;
42957 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__["addOrRemoveAttribute"])(this.eInput, 'max', max);
42958 return this;
42959 };
42960 AgInputNumberField.prototype.setPrecision = function (precision) {
42961 this.precision = precision;
42962 return this;
42963 };
42964 AgInputNumberField.prototype.setStep = function (step) {
42965 if (this.step === step) {
42966 return this;
42967 }
42968 this.step = step;
42969 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__["addOrRemoveAttribute"])(this.eInput, 'step', step);
42970 return this;
42971 };
42972 AgInputNumberField.prototype.setValue = function (value, silent) {
42973 value = this.adjustPrecision(value);
42974 var normalizedValue = this.normalizeValue(value);
42975 if (value != normalizedValue) {
42976 return this;
42977 }
42978 return _super.prototype.setValue.call(this, value, silent);
42979 };
42980 return AgInputNumberField;
42981}(_agInputTextField__WEBPACK_IMPORTED_MODULE_0__["AgInputTextField"]));
42982
42983
42984
42985
42986
42987/***/ }),
42988/* 192 */
42989/***/ (function(module, __webpack_exports__, __webpack_require__) {
42990
42991"use strict";
42992__webpack_require__.r(__webpack_exports__);
42993/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgInputRange", function() { return AgInputRange; });
42994/* harmony import */ var _agAbstractInputField__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(71);
42995/**
42996 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
42997 * @version v27.3.0
42998 * @link https://www.ag-grid.com/
42999 * @license MIT
43000 */
43001var __extends = (undefined && undefined.__extends) || (function () {
43002 var extendStatics = function (d, b) {
43003 extendStatics = Object.setPrototypeOf ||
43004 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
43005 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
43006 return extendStatics(d, b);
43007 };
43008 return function (d, b) {
43009 extendStatics(d, b);
43010 function __() { this.constructor = d; }
43011 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
43012 };
43013})();
43014
43015var AgInputRange = /** @class */ (function (_super) {
43016 __extends(AgInputRange, _super);
43017 function AgInputRange(config) {
43018 return _super.call(this, config, 'ag-range-field', 'range') || this;
43019 }
43020 AgInputRange.prototype.postConstruct = function () {
43021 _super.prototype.postConstruct.call(this);
43022 var _a = this.config, min = _a.min, max = _a.max, step = _a.step;
43023 if (min != null) {
43024 this.setMinValue(min);
43025 }
43026 if (max != null) {
43027 this.setMaxValue(max);
43028 }
43029 this.setStep(step || 1);
43030 };
43031 AgInputRange.prototype.addInputListeners = function () {
43032 var _this = this;
43033 this.addManagedListener(this.eInput, 'input', function (e) {
43034 var value = e.target.value;
43035 _this.setValue(value);
43036 });
43037 };
43038 AgInputRange.prototype.setMinValue = function (value) {
43039 this.min = value;
43040 this.eInput.setAttribute('min', value.toString());
43041 return this;
43042 };
43043 AgInputRange.prototype.setMaxValue = function (value) {
43044 this.max = value;
43045 this.eInput.setAttribute('max', value.toString());
43046 return this;
43047 };
43048 AgInputRange.prototype.setStep = function (value) {
43049 this.eInput.setAttribute('step', value.toString());
43050 return this;
43051 };
43052 AgInputRange.prototype.setValue = function (value, silent) {
43053 if (this.min != null) {
43054 value = Math.max(parseFloat(value), this.min).toString();
43055 }
43056 if (this.max != null) {
43057 value = Math.min(parseFloat(value), this.max).toString();
43058 }
43059 var ret = _super.prototype.setValue.call(this, value, silent);
43060 this.eInput.value = value;
43061 return ret;
43062 };
43063 return AgInputRange;
43064}(_agAbstractInputField__WEBPACK_IMPORTED_MODULE_0__["AgAbstractInputField"]));
43065
43066
43067
43068
43069
43070/***/ }),
43071/* 193 */
43072/***/ (function(module, __webpack_exports__, __webpack_require__) {
43073
43074"use strict";
43075__webpack_require__.r(__webpack_exports__);
43076/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgSlider", function() { return AgSlider; });
43077/* harmony import */ var _componentAnnotations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(57);
43078/* harmony import */ var _agAbstractLabel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(68);
43079/* harmony import */ var _agAbstractField__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(67);
43080/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12);
43081/**
43082 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
43083 * @version v27.3.0
43084 * @link https://www.ag-grid.com/
43085 * @license MIT
43086 */
43087var __extends = (undefined && undefined.__extends) || (function () {
43088 var extendStatics = function (d, b) {
43089 extendStatics = Object.setPrototypeOf ||
43090 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
43091 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
43092 return extendStatics(d, b);
43093 };
43094 return function (d, b) {
43095 extendStatics(d, b);
43096 function __() { this.constructor = d; }
43097 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
43098 };
43099})();
43100var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
43101 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
43102 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
43103 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
43104 return c > 3 && r && Object.defineProperty(target, key, r), r;
43105};
43106
43107
43108
43109
43110var AgSlider = /** @class */ (function (_super) {
43111 __extends(AgSlider, _super);
43112 function AgSlider(config) {
43113 var _this = _super.call(this, config, AgSlider.TEMPLATE) || this;
43114 _this.labelAlignment = 'top';
43115 return _this;
43116 }
43117 AgSlider.prototype.init = function () {
43118 this.eSlider.addCssClass('ag-slider-field');
43119 };
43120 AgSlider.prototype.onValueChange = function (callbackFn) {
43121 var _this = this;
43122 var eventChanged = _agAbstractField__WEBPACK_IMPORTED_MODULE_2__["AgAbstractField"].EVENT_CHANGED;
43123 this.addManagedListener(this.eText, eventChanged, function () {
43124 var textValue = parseFloat(_this.eText.getValue());
43125 _this.eSlider.setValue(textValue.toString(), true);
43126 callbackFn(textValue || 0);
43127 });
43128 this.addManagedListener(this.eSlider, eventChanged, function () {
43129 var sliderValue = _this.eSlider.getValue();
43130 _this.eText.setValue(sliderValue, true);
43131 callbackFn(parseFloat(sliderValue));
43132 });
43133 return this;
43134 };
43135 AgSlider.prototype.setSliderWidth = function (width) {
43136 this.eSlider.setWidth(width);
43137 return this;
43138 };
43139 AgSlider.prototype.setTextFieldWidth = function (width) {
43140 this.eText.setWidth(width);
43141 return this;
43142 };
43143 AgSlider.prototype.setMinValue = function (minValue) {
43144 this.eSlider.setMinValue(minValue);
43145 this.eText.setMin(minValue);
43146 return this;
43147 };
43148 AgSlider.prototype.setMaxValue = function (maxValue) {
43149 this.eSlider.setMaxValue(maxValue);
43150 this.eText.setMax(maxValue);
43151 return this;
43152 };
43153 AgSlider.prototype.getValue = function () {
43154 return this.eText.getValue();
43155 };
43156 AgSlider.prototype.setValue = function (value) {
43157 if (this.getValue() === value) {
43158 return this;
43159 }
43160 this.eText.setValue(value, true);
43161 this.eSlider.setValue(value, true);
43162 this.dispatchEvent({ type: _agAbstractField__WEBPACK_IMPORTED_MODULE_2__["AgAbstractField"].EVENT_CHANGED });
43163 return this;
43164 };
43165 AgSlider.prototype.setStep = function (step) {
43166 this.eSlider.setStep(step);
43167 this.eText.setStep(step);
43168 return this;
43169 };
43170 AgSlider.TEMPLATE = "<div class=\"ag-slider\">\n <label ref=\"eLabel\"></label>\n <div class=\"ag-wrapper ag-slider-wrapper\">\n <ag-input-range ref=\"eSlider\"></ag-input-range>\n <ag-input-number-field ref=\"eText\"></ag-input-number-field>\n </div>\n </div>";
43171 __decorate([
43172 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eLabel')
43173 ], AgSlider.prototype, "eLabel", void 0);
43174 __decorate([
43175 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eSlider')
43176 ], AgSlider.prototype, "eSlider", void 0);
43177 __decorate([
43178 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eText')
43179 ], AgSlider.prototype, "eText", void 0);
43180 __decorate([
43181 _context_context__WEBPACK_IMPORTED_MODULE_3__["PostConstruct"]
43182 ], AgSlider.prototype, "init", null);
43183 return AgSlider;
43184}(_agAbstractLabel__WEBPACK_IMPORTED_MODULE_1__["AgAbstractLabel"]));
43185
43186
43187
43188
43189
43190/***/ }),
43191/* 194 */
43192/***/ (function(module, __webpack_exports__, __webpack_require__) {
43193
43194"use strict";
43195__webpack_require__.r(__webpack_exports__);
43196/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgAngleSelect", function() { return AgAngleSelect; });
43197/* harmony import */ var _agAbstractLabel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(68);
43198/* harmony import */ var _componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
43199/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
43200/* harmony import */ var _agAbstractField__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(67);
43201/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
43202/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(42);
43203/**
43204 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
43205 * @version v27.3.0
43206 * @link https://www.ag-grid.com/
43207 * @license MIT
43208 */
43209var __extends = (undefined && undefined.__extends) || (function () {
43210 var extendStatics = function (d, b) {
43211 extendStatics = Object.setPrototypeOf ||
43212 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
43213 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
43214 return extendStatics(d, b);
43215 };
43216 return function (d, b) {
43217 extendStatics(d, b);
43218 function __() { this.constructor = d; }
43219 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
43220 };
43221})();
43222var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
43223 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
43224 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
43225 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
43226 return c > 3 && r && Object.defineProperty(target, key, r), r;
43227};
43228
43229
43230
43231
43232
43233
43234var AgAngleSelect = /** @class */ (function (_super) {
43235 __extends(AgAngleSelect, _super);
43236 function AgAngleSelect(config) {
43237 var _this = _super.call(this, config, AgAngleSelect.TEMPLATE) || this;
43238 _this.radius = 0;
43239 _this.offsetX = 0;
43240 _this.offsetY = 0;
43241 return _this;
43242 }
43243 AgAngleSelect.prototype.postConstruct = function () {
43244 var _this = this;
43245 _super.prototype.postConstruct.call(this);
43246 this.dragListener = {
43247 eElement: this.eParentCircle,
43248 dragStartPixels: 0,
43249 onDragStart: function (e) {
43250 _this.parentCircleRect = _this.eParentCircle.getBoundingClientRect();
43251 },
43252 onDragging: function (e) { return _this.calculateAngleDrag(e); },
43253 onDragStop: function () { }
43254 };
43255 this.dragService.addDragSource(this.dragListener);
43256 this.eAngleValue
43257 .setLabel('')
43258 .setLabelWidth(5)
43259 .setInputWidth(45)
43260 .setMin(0)
43261 .setMax(360)
43262 .setValue("" + this.degrees)
43263 .onValueChange(function (value) {
43264 if (value == null || value === '') {
43265 value = '0';
43266 }
43267 value = _this.eAngleValue.normalizeValue(value);
43268 var floatValue = parseFloat(value);
43269 if (floatValue > 180) {
43270 floatValue = floatValue - 360;
43271 }
43272 _this.setValue(floatValue);
43273 });
43274 this.updateNumberInput();
43275 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_4__["exists"])(this.getValue())) {
43276 this.eAngleValue.setValue(this.normalizeNegativeValue(this.getValue()).toString());
43277 }
43278 this.addManagedListener(this, _agAbstractField__WEBPACK_IMPORTED_MODULE_3__["AgAbstractField"].EVENT_CHANGED, function () {
43279 var eDocument = _this.gridOptionsWrapper.getDocument();
43280 if (_this.eAngleValue.getInputElement().contains(eDocument.activeElement)) {
43281 return;
43282 }
43283 _this.updateNumberInput();
43284 });
43285 };
43286 AgAngleSelect.prototype.updateNumberInput = function () {
43287 var normalizedValue = this.normalizeNegativeValue(this.getValue());
43288 this.eAngleValue.setValue(normalizedValue.toString());
43289 };
43290 AgAngleSelect.prototype.positionChildCircle = function (radians) {
43291 var rect = this.parentCircleRect || { width: 24, height: 24 };
43292 var eChildCircle = this.eChildCircle;
43293 var centerX = rect.width / 2;
43294 var centerY = rect.height / 2;
43295 eChildCircle.style.left = centerX + Math.cos(radians) * 8 + "px";
43296 eChildCircle.style.top = centerY + Math.sin(radians) * 8 + "px";
43297 };
43298 AgAngleSelect.prototype.calculatePolar = function () {
43299 var x = this.offsetX;
43300 var y = this.offsetY;
43301 var radians = Math.atan2(y, x);
43302 this.degrees = this.toDegrees(radians);
43303 this.radius = Math.sqrt((x * x) + (y * y));
43304 this.positionChildCircle(radians);
43305 };
43306 AgAngleSelect.prototype.calculateCartesian = function () {
43307 var radians = this.toRadians(this.getValue());
43308 var radius = this.getRadius();
43309 this
43310 .setOffsetX(Math.cos(radians) * radius)
43311 .setOffsetY(Math.sin(radians) * radius);
43312 };
43313 AgAngleSelect.prototype.setOffsetX = function (offset) {
43314 if (this.offsetX !== offset) {
43315 this.offsetX = offset;
43316 this.calculatePolar();
43317 }
43318 return this;
43319 };
43320 AgAngleSelect.prototype.setOffsetY = function (offset) {
43321 if (this.offsetY !== offset) {
43322 this.offsetY = offset;
43323 this.calculatePolar();
43324 }
43325 return this;
43326 };
43327 AgAngleSelect.prototype.calculateAngleDrag = function (e) {
43328 var rect = this.parentCircleRect;
43329 var centerX = rect.width / 2;
43330 var centerY = rect.height / 2;
43331 var x = e.clientX - rect.left;
43332 var y = e.clientY - rect.top;
43333 var dx = x - centerX;
43334 var dy = y - centerY;
43335 var radians = Math.atan2(dy, dx);
43336 this.setValue(radians, true);
43337 };
43338 AgAngleSelect.prototype.toDegrees = function (radians) {
43339 return radians / Math.PI * 180;
43340 };
43341 AgAngleSelect.prototype.toRadians = function (degrees) {
43342 return degrees / 180 * Math.PI;
43343 };
43344 AgAngleSelect.prototype.normalizeNegativeValue = function (degrees) {
43345 return degrees < 0 ? 360 + degrees : degrees;
43346 };
43347 AgAngleSelect.prototype.normalizeAngle180 = function (radians) {
43348 radians %= Math.PI * 2;
43349 if (radians < -Math.PI) {
43350 radians += Math.PI * 2;
43351 }
43352 else if (radians >= Math.PI) {
43353 radians -= Math.PI * 2;
43354 }
43355 return radians;
43356 };
43357 AgAngleSelect.prototype.getRadius = function () {
43358 return this.radius;
43359 };
43360 AgAngleSelect.prototype.setRadius = function (r) {
43361 if (this.radius === r) {
43362 return this;
43363 }
43364 this.radius = r;
43365 this.calculateCartesian();
43366 return this;
43367 };
43368 AgAngleSelect.prototype.onValueChange = function (callbackFn) {
43369 var _this = this;
43370 this.addManagedListener(this, _agAbstractField__WEBPACK_IMPORTED_MODULE_3__["AgAbstractField"].EVENT_CHANGED, function () {
43371 callbackFn(_this.degrees);
43372 });
43373 return this;
43374 };
43375 AgAngleSelect.prototype.getValue = function (radians) {
43376 return radians ? this.toRadians(this.degrees) : this.degrees;
43377 };
43378 AgAngleSelect.prototype.setValue = function (degrees, radians) {
43379 var radiansValue;
43380 if (!radians) {
43381 radiansValue = this.normalizeAngle180(this.toRadians(degrees));
43382 }
43383 else {
43384 radiansValue = degrees;
43385 }
43386 degrees = this.toDegrees(radiansValue);
43387 if (this.degrees !== degrees) {
43388 this.degrees = Math.floor(degrees);
43389 this.calculateCartesian();
43390 this.positionChildCircle(radiansValue);
43391 this.dispatchEvent({ type: _agAbstractField__WEBPACK_IMPORTED_MODULE_3__["AgAbstractField"].EVENT_CHANGED });
43392 }
43393 return this;
43394 };
43395 AgAngleSelect.prototype.setWidth = function (width) {
43396 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_5__["setFixedWidth"])(this.getGui(), width);
43397 return this;
43398 };
43399 AgAngleSelect.prototype.destroy = function () {
43400 this.dragService.removeDragSource(this.dragListener);
43401 _super.prototype.destroy.call(this);
43402 };
43403 AgAngleSelect.TEMPLATE = "<div class=\"ag-angle-select\">\n <div ref=\"eLabel\"></div>\n <div class=\"ag-wrapper ag-angle-select-wrapper\">\n <div ref=\"eAngleSelectField\" class=\"ag-angle-select-field\">\n <div ref=\"eParentCircle\" class=\"ag-angle-select-parent-circle\">\n <div ref=\"eChildCircle\" class=\"ag-angle-select-child-circle\"></div>\n </div>\n </div>\n <ag-input-number-field ref=\"eAngleValue\"></ag-input-number-field>\n </div>\n </div>";
43404 __decorate([
43405 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eLabel')
43406 ], AgAngleSelect.prototype, "eLabel", void 0);
43407 __decorate([
43408 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eParentCircle')
43409 ], AgAngleSelect.prototype, "eParentCircle", void 0);
43410 __decorate([
43411 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eChildCircle')
43412 ], AgAngleSelect.prototype, "eChildCircle", void 0);
43413 __decorate([
43414 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eAngleValue')
43415 ], AgAngleSelect.prototype, "eAngleValue", void 0);
43416 __decorate([
43417 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('dragService')
43418 ], AgAngleSelect.prototype, "dragService", void 0);
43419 return AgAngleSelect;
43420}(_agAbstractLabel__WEBPACK_IMPORTED_MODULE_0__["AgAbstractLabel"]));
43421
43422
43423
43424
43425
43426/***/ }),
43427/* 195 */
43428/***/ (function(module, __webpack_exports__, __webpack_require__) {
43429
43430"use strict";
43431__webpack_require__.r(__webpack_exports__);
43432/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgColorPicker", function() { return AgColorPicker; });
43433/* harmony import */ var _agColorPanel__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(196);
43434/* harmony import */ var _agDialog__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(197);
43435/* harmony import */ var _agPickerField__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(69);
43436/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44);
43437/**
43438 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
43439 * @version v27.3.0
43440 * @link https://www.ag-grid.com/
43441 * @license MIT
43442 */
43443var __extends = (undefined && undefined.__extends) || (function () {
43444 var extendStatics = function (d, b) {
43445 extendStatics = Object.setPrototypeOf ||
43446 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
43447 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
43448 return extendStatics(d, b);
43449 };
43450 return function (d, b) {
43451 extendStatics(d, b);
43452 function __() { this.constructor = d; }
43453 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
43454 };
43455})();
43456
43457
43458
43459
43460var AgColorPicker = /** @class */ (function (_super) {
43461 __extends(AgColorPicker, _super);
43462 function AgColorPicker(config) {
43463 var _this = _super.call(this, config, 'ag-color-picker', 'colorPicker') || this;
43464 if (config && config.color) {
43465 _this.value = config.color;
43466 }
43467 return _this;
43468 }
43469 AgColorPicker.prototype.postConstruct = function () {
43470 _super.prototype.postConstruct.call(this);
43471 if (this.value) {
43472 this.setValue(this.value);
43473 }
43474 };
43475 AgColorPicker.prototype.showPicker = function () {
43476 var _this = this;
43477 var eGuiRect = this.getGui().getBoundingClientRect();
43478 var colorDialog = this.createBean(new _agDialog__WEBPACK_IMPORTED_MODULE_1__["AgDialog"]({
43479 closable: false,
43480 modal: true,
43481 hideTitleBar: true,
43482 minWidth: 190,
43483 width: 190,
43484 height: 250,
43485 x: eGuiRect.right - 190,
43486 y: eGuiRect.top - 250
43487 }));
43488 this.isPickerDisplayed = true;
43489 colorDialog.addCssClass('ag-color-dialog');
43490 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_3__["setAriaExpanded"])(this.eWrapper, true);
43491 var colorPanel = this.createBean(new _agColorPanel__WEBPACK_IMPORTED_MODULE_0__["AgColorPanel"]({ picker: this }));
43492 colorPanel.addDestroyFunc(function () {
43493 if (colorDialog.isAlive()) {
43494 _this.destroyBean(colorDialog);
43495 }
43496 });
43497 colorDialog.setParentComponent(this);
43498 colorDialog.setBodyComponent(colorPanel);
43499 colorPanel.setValue(this.getValue());
43500 colorDialog.addDestroyFunc(function () {
43501 // here we check if the picker was already being
43502 // destroyed to avoid a stack overflow
43503 if (!_this.isDestroyingPicker) {
43504 _this.isDestroyingPicker = true;
43505 if (colorPanel.isAlive()) {
43506 _this.destroyBean(colorPanel);
43507 }
43508 }
43509 else {
43510 _this.isDestroyingPicker = false;
43511 }
43512 if (_this.isAlive()) {
43513 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_3__["setAriaExpanded"])(_this.eWrapper, false);
43514 _this.getFocusableElement().focus();
43515 }
43516 _this.isPickerDisplayed = false;
43517 });
43518 return colorDialog;
43519 };
43520 AgColorPicker.prototype.setValue = function (color) {
43521 if (this.value === color) {
43522 return this;
43523 }
43524 this.eDisplayField.style.backgroundColor = color;
43525 return _super.prototype.setValue.call(this, color);
43526 };
43527 AgColorPicker.prototype.getValue = function () {
43528 return this.value;
43529 };
43530 return AgColorPicker;
43531}(_agPickerField__WEBPACK_IMPORTED_MODULE_2__["AgPickerField"]));
43532
43533
43534
43535
43536
43537/***/ }),
43538/* 196 */
43539/***/ (function(module, __webpack_exports__, __webpack_require__) {
43540
43541"use strict";
43542__webpack_require__.r(__webpack_exports__);
43543/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgColorPanel", function() { return AgColorPanel; });
43544/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
43545/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(37);
43546/* harmony import */ var _componentAnnotations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(57);
43547/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12);
43548/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
43549/**
43550 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
43551 * @version v27.3.0
43552 * @link https://www.ag-grid.com/
43553 * @license MIT
43554 */
43555var __extends = (undefined && undefined.__extends) || (function () {
43556 var extendStatics = function (d, b) {
43557 extendStatics = Object.setPrototypeOf ||
43558 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
43559 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
43560 return extendStatics(d, b);
43561 };
43562 return function (d, b) {
43563 extendStatics(d, b);
43564 function __() { this.constructor = d; }
43565 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
43566 };
43567})();
43568var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
43569 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
43570 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
43571 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
43572 return c > 3 && r && Object.defineProperty(target, key, r), r;
43573};
43574var __read = (undefined && undefined.__read) || function (o, n) {
43575 var m = typeof Symbol === "function" && o[Symbol.iterator];
43576 if (!m) return o;
43577 var i = m.call(o), r, ar = [], e;
43578 try {
43579 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
43580 }
43581 catch (error) { e = { error: error }; }
43582 finally {
43583 try {
43584 if (r && !r.done && (m = i["return"])) m.call(i);
43585 }
43586 finally { if (e) throw e.error; }
43587 }
43588 return ar;
43589};
43590
43591
43592
43593
43594
43595var AgColorPanel = /** @class */ (function (_super) {
43596 __extends(AgColorPanel, _super);
43597 function AgColorPanel(config) {
43598 var _this = _super.call(this, AgColorPanel.TEMPLATE) || this;
43599 _this.H = 1; // in the [0, 1] range
43600 _this.S = 1; // in the [0, 1] range
43601 _this.B = 1; // in the [0, 1] range
43602 _this.A = 1; // in the [0, 1] range
43603 _this.isSpectrumDragging = false;
43604 _this.isSpectrumHueDragging = false;
43605 _this.isSpectrumAlphaDragging = false;
43606 _this.colorChanged = false;
43607 _this.picker = config.picker;
43608 return _this;
43609 }
43610 AgColorPanel.prototype.postConstruct = function () {
43611 var eGui = this.getGui();
43612 this.initRecentColors();
43613 this.addManagedListener(this.spectrumVal, 'mousedown', this.onSpectrumDraggerDown.bind(this));
43614 this.addManagedListener(eGui, 'mousemove', this.onSpectrumDraggerMove.bind(this));
43615 this.addManagedListener(this.spectrumHue, 'mousedown', this.onSpectrumHueDown.bind(this));
43616 this.addManagedListener(eGui, 'mousemove', this.onSpectrumHueMove.bind(this));
43617 this.addManagedListener(this.spectrumAlpha, 'mousedown', this.onSpectrumAlphaDown.bind(this));
43618 this.addManagedListener(eGui, 'mousemove', this.onSpectrumAlphaMove.bind(this));
43619 // Listening to `mouseup` on the document on purpose. The user might release the mouse button
43620 // outside the UI control. When the mouse returns back to the control's area, the dragging
43621 // of the thumb is not expected and seen as a bug.
43622 this.addManagedListener(document, 'mouseup', this.onMouseUp.bind(this));
43623 this.addManagedListener(this.recentColors, 'click', this.onRecentColorClick.bind(this));
43624 };
43625 AgColorPanel.prototype.refreshSpectrumRect = function () {
43626 return this.spectrumValRect = this.spectrumVal.getBoundingClientRect();
43627 };
43628 AgColorPanel.prototype.refreshHueRect = function () {
43629 return this.spectrumHueRect = this.spectrumHue.getBoundingClientRect();
43630 };
43631 AgColorPanel.prototype.refreshAlphaRect = function () {
43632 return this.spectrumAlphaRect = this.spectrumAlpha.getBoundingClientRect();
43633 };
43634 AgColorPanel.prototype.onSpectrumDraggerDown = function (e) {
43635 this.refreshSpectrumRect();
43636 this.isSpectrumDragging = true;
43637 this.moveDragger(e);
43638 };
43639 AgColorPanel.prototype.onSpectrumDraggerMove = function (e) {
43640 if (this.isSpectrumDragging) {
43641 this.moveDragger(e);
43642 }
43643 };
43644 AgColorPanel.prototype.onSpectrumHueDown = function (e) {
43645 this.refreshHueRect();
43646 this.isSpectrumHueDragging = true;
43647 this.moveHueSlider(e);
43648 };
43649 AgColorPanel.prototype.onSpectrumHueMove = function (e) {
43650 if (this.isSpectrumHueDragging) {
43651 this.moveHueSlider(e);
43652 }
43653 };
43654 AgColorPanel.prototype.onSpectrumAlphaDown = function (e) {
43655 this.refreshAlphaRect();
43656 this.isSpectrumAlphaDragging = true;
43657 this.moveAlphaSlider(e);
43658 };
43659 AgColorPanel.prototype.onSpectrumAlphaMove = function (e) {
43660 if (this.isSpectrumAlphaDragging) {
43661 this.moveAlphaSlider(e);
43662 }
43663 };
43664 AgColorPanel.prototype.onMouseUp = function () {
43665 this.isSpectrumDragging = false;
43666 this.isSpectrumHueDragging = false;
43667 this.isSpectrumAlphaDragging = false;
43668 };
43669 AgColorPanel.prototype.moveDragger = function (e) {
43670 var valRect = this.spectrumValRect;
43671 if (valRect) {
43672 var x = e.clientX - valRect.left;
43673 var y = e.clientY - valRect.top;
43674 x = Math.max(x, 0);
43675 x = Math.min(x, valRect.width);
43676 y = Math.max(y, 0);
43677 y = Math.min(y, valRect.height);
43678 this.setSpectrumValue(x / valRect.width, 1 - y / valRect.height);
43679 }
43680 };
43681 AgColorPanel.prototype.moveHueSlider = function (e) {
43682 var hueRect = this.spectrumHueRect;
43683 if (hueRect) {
43684 var slider = this.spectrumHueSlider;
43685 var sliderRect = slider.getBoundingClientRect();
43686 var x = e.clientX - hueRect.left;
43687 x = Math.max(x, 0);
43688 x = Math.min(x, hueRect.width);
43689 this.H = 1 - x / hueRect.width;
43690 slider.style.left = (x + sliderRect.width / 2) + 'px';
43691 this.update();
43692 }
43693 };
43694 AgColorPanel.prototype.moveAlphaSlider = function (e) {
43695 var alphaRect = this.spectrumAlphaRect;
43696 if (alphaRect) {
43697 var slider = this.spectrumAlphaSlider;
43698 var sliderRect = slider.getBoundingClientRect();
43699 var x = e.clientX - alphaRect.left;
43700 x = Math.max(x, 0);
43701 x = Math.min(x, alphaRect.width);
43702 this.A = x / alphaRect.width;
43703 slider.style.left = (x + sliderRect.width / 2) + 'px';
43704 this.update();
43705 }
43706 };
43707 AgColorPanel.prototype.update = function () {
43708 var color = _utils__WEBPACK_IMPORTED_MODULE_1__["Color"].fromHSB(this.H * 360, this.S, this.B, this.A);
43709 var spectrumColor = _utils__WEBPACK_IMPORTED_MODULE_1__["Color"].fromHSB(this.H * 360, 1, 1);
43710 var rgbaColor = color.toRgbaString();
43711 // the recent color list needs to know color has actually changed
43712 var colorPicker = this.picker;
43713 var existingColor = _utils__WEBPACK_IMPORTED_MODULE_1__["Color"].fromString(colorPicker.getValue());
43714 if (existingColor.toRgbaString() !== rgbaColor) {
43715 this.colorChanged = true;
43716 }
43717 colorPicker.setValue(rgbaColor);
43718 this.spectrumColor.style.backgroundColor = spectrumColor.toRgbaString();
43719 this.spectrumDragger.style.backgroundColor = rgbaColor;
43720 };
43721 /**
43722 * @param saturation In the [0, 1] interval.
43723 * @param brightness In the [0, 1] interval.
43724 */
43725 AgColorPanel.prototype.setSpectrumValue = function (saturation, brightness) {
43726 var valRect = this.spectrumValRect || this.refreshSpectrumRect();
43727 if (valRect) {
43728 var dragger = this.spectrumDragger;
43729 var draggerRect = dragger.getBoundingClientRect();
43730 saturation = Math.max(0, saturation);
43731 saturation = Math.min(1, saturation);
43732 brightness = Math.max(0, brightness);
43733 brightness = Math.min(1, brightness);
43734 this.S = saturation;
43735 this.B = brightness;
43736 dragger.style.left = (saturation * valRect.width - draggerRect.width / 2) + 'px';
43737 dragger.style.top = ((1 - brightness) * valRect.height - draggerRect.height / 2) + 'px';
43738 this.update();
43739 }
43740 };
43741 AgColorPanel.prototype.initRecentColors = function () {
43742 var recentColors = AgColorPanel.recentColors;
43743 var innerHtml = recentColors.map(function (color, index) {
43744 return "<div class=\"ag-recent-color\" id=" + index + " style=\"background-color: " + color + "; width: 15px; height: 15px;\" recent-color=\"" + color + "\"></div>";
43745 });
43746 this.recentColors.innerHTML = innerHtml.join('');
43747 };
43748 AgColorPanel.prototype.setValue = function (val) {
43749 var color = _utils__WEBPACK_IMPORTED_MODULE_1__["Color"].fromString(val);
43750 var _a = __read(color.toHSB(), 3), h = _a[0], s = _a[1], b = _a[2];
43751 this.H = (isNaN(h) ? 0 : h) / 360;
43752 this.A = color.a;
43753 var spectrumHueRect = this.spectrumHueRect || this.refreshHueRect();
43754 var spectrumAlphaRect = this.spectrumAlphaRect || this.refreshAlphaRect();
43755 this.spectrumHueSlider.style.left = ((this.H - 1) * -spectrumHueRect.width) + "px";
43756 this.spectrumAlphaSlider.style.left = (this.A * spectrumAlphaRect.width) + "px";
43757 this.setSpectrumValue(s, b);
43758 };
43759 AgColorPanel.prototype.onRecentColorClick = function (e) {
43760 var target = e.target;
43761 if (!Object(_utils_generic__WEBPACK_IMPORTED_MODULE_4__["exists"])(target.id)) {
43762 return;
43763 }
43764 var id = parseInt(target.id, 10);
43765 this.setValue(AgColorPanel.recentColors[id]);
43766 this.destroy();
43767 };
43768 AgColorPanel.prototype.addRecentColor = function () {
43769 var color = _utils__WEBPACK_IMPORTED_MODULE_1__["Color"].fromHSB(this.H * 360, this.S, this.B, this.A);
43770 var rgbaColor = color.toRgbaString();
43771 var recentColors = AgColorPanel.recentColors;
43772 if (!this.colorChanged || recentColors[0] === rgbaColor) {
43773 return;
43774 }
43775 // remove duplicate color
43776 recentColors = recentColors.filter(function (currentColor) { return currentColor != rgbaColor; });
43777 // add color to head
43778 recentColors = [rgbaColor].concat(recentColors);
43779 // ensure we don't exceed max number of recent colors
43780 if (recentColors.length > AgColorPanel.maxRecentColors) {
43781 recentColors = recentColors.slice(0, AgColorPanel.maxRecentColors);
43782 }
43783 AgColorPanel.recentColors = recentColors;
43784 };
43785 AgColorPanel.prototype.destroy = function () {
43786 this.addRecentColor();
43787 _super.prototype.destroy.call(this);
43788 };
43789 AgColorPanel.maxRecentColors = 8;
43790 AgColorPanel.recentColors = [];
43791 AgColorPanel.TEMPLATE = "<div class=\"ag-color-panel\">\n <div ref=\"spectrumColor\" class=\"ag-spectrum-color\">\n <div class=\"ag-spectrum-sat ag-spectrum-fill\">\n <div ref=\"spectrumVal\" class=\"ag-spectrum-val ag-spectrum-fill\">\n <div ref=\"spectrumDragger\" class=\"ag-spectrum-dragger\"></div>\n </div>\n </div>\n </div>\n <div class=\"ag-spectrum-tools\">\n <div ref=\"spectrumHue\" class=\"ag-spectrum-hue ag-spectrum-tool\">\n <div class=\"ag-spectrum-hue-background\"></div>\n <div ref=\"spectrumHueSlider\" class=\"ag-spectrum-slider\"></div>\n </div>\n <div ref=\"spectrumAlpha\" class=\"ag-spectrum-alpha ag-spectrum-tool\">\n <div class=\"ag-spectrum-alpha-background\"></div>\n <div ref=\"spectrumAlphaSlider\" class=\"ag-spectrum-slider\"></div>\n </div>\n <div ref=\"recentColors\" class=\"ag-recent-colors\"></div>\n </div>\n </div>";
43792 __decorate([
43793 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('spectrumColor')
43794 ], AgColorPanel.prototype, "spectrumColor", void 0);
43795 __decorate([
43796 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('spectrumVal')
43797 ], AgColorPanel.prototype, "spectrumVal", void 0);
43798 __decorate([
43799 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('spectrumDragger')
43800 ], AgColorPanel.prototype, "spectrumDragger", void 0);
43801 __decorate([
43802 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('spectrumHue')
43803 ], AgColorPanel.prototype, "spectrumHue", void 0);
43804 __decorate([
43805 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('spectrumHueSlider')
43806 ], AgColorPanel.prototype, "spectrumHueSlider", void 0);
43807 __decorate([
43808 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('spectrumAlpha')
43809 ], AgColorPanel.prototype, "spectrumAlpha", void 0);
43810 __decorate([
43811 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('spectrumAlphaSlider')
43812 ], AgColorPanel.prototype, "spectrumAlphaSlider", void 0);
43813 __decorate([
43814 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('recentColors')
43815 ], AgColorPanel.prototype, "recentColors", void 0);
43816 __decorate([
43817 _context_context__WEBPACK_IMPORTED_MODULE_3__["PostConstruct"]
43818 ], AgColorPanel.prototype, "postConstruct", null);
43819 return AgColorPanel;
43820}(_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
43821
43822
43823
43824
43825
43826/***/ }),
43827/* 197 */
43828/***/ (function(module, __webpack_exports__, __webpack_require__) {
43829
43830"use strict";
43831__webpack_require__.r(__webpack_exports__);
43832/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgDialog", function() { return AgDialog; });
43833/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
43834/* harmony import */ var _agPanel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(198);
43835/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(36);
43836/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42);
43837/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(48);
43838/**
43839 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
43840 * @version v27.3.0
43841 * @link https://www.ag-grid.com/
43842 * @license MIT
43843 */
43844var __extends = (undefined && undefined.__extends) || (function () {
43845 var extendStatics = function (d, b) {
43846 extendStatics = Object.setPrototypeOf ||
43847 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
43848 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
43849 return extendStatics(d, b);
43850 };
43851 return function (d, b) {
43852 extendStatics(d, b);
43853 function __() { this.constructor = d; }
43854 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
43855 };
43856})();
43857var __assign = (undefined && undefined.__assign) || function () {
43858 __assign = Object.assign || function(t) {
43859 for (var s, i = 1, n = arguments.length; i < n; i++) {
43860 s = arguments[i];
43861 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
43862 t[p] = s[p];
43863 }
43864 return t;
43865 };
43866 return __assign.apply(this, arguments);
43867};
43868var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
43869 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
43870 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
43871 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
43872 return c > 3 && r && Object.defineProperty(target, key, r), r;
43873};
43874
43875
43876
43877
43878
43879var AgDialog = /** @class */ (function (_super) {
43880 __extends(AgDialog, _super);
43881 function AgDialog(config) {
43882 var _this = _super.call(this, __assign(__assign({}, config), { popup: true })) || this;
43883 _this.isMaximizable = false;
43884 _this.isMaximized = false;
43885 _this.maximizeListeners = [];
43886 _this.resizeListenerDestroy = null;
43887 _this.lastPosition = {
43888 x: 0,
43889 y: 0,
43890 width: 0,
43891 height: 0
43892 };
43893 return _this;
43894 }
43895 AgDialog.prototype.postConstruct = function () {
43896 var _this = this;
43897 var eGui = this.getGui();
43898 var _a = this.config, movable = _a.movable, resizable = _a.resizable, maximizable = _a.maximizable;
43899 this.addCssClass('ag-dialog');
43900 _super.prototype.postConstruct.call(this);
43901 this.addManagedListener(eGui, 'focusin', function (e) {
43902 if (eGui.contains(e.relatedTarget)) {
43903 return;
43904 }
43905 _this.popupService.bringPopupToFront(eGui);
43906 });
43907 if (movable) {
43908 this.setMovable(movable);
43909 }
43910 if (maximizable) {
43911 this.setMaximizable(maximizable);
43912 }
43913 if (resizable) {
43914 this.setResizable(resizable);
43915 }
43916 };
43917 AgDialog.prototype.renderComponent = function () {
43918 var eGui = this.getGui();
43919 var _a = this.config, alwaysOnTop = _a.alwaysOnTop, modal = _a.modal, title = _a.title;
43920 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
43921 var addPopupRes = this.popupService.addPopup({
43922 modal: modal,
43923 eChild: eGui,
43924 closeOnEsc: true,
43925 closedCallback: this.destroy.bind(this),
43926 alwaysOnTop: alwaysOnTop,
43927 ariaLabel: title || translate('ariaLabelDialog', 'Dialog')
43928 });
43929 if (addPopupRes) {
43930 this.close = addPopupRes.hideFunc;
43931 }
43932 };
43933 AgDialog.prototype.toggleMaximize = function () {
43934 var position = this.positionableFeature.getPosition();
43935 if (this.isMaximized) {
43936 var _a = this.lastPosition, x = _a.x, y = _a.y, width = _a.width, height = _a.height;
43937 this.setWidth(width);
43938 this.setHeight(height);
43939 this.positionableFeature.offsetElement(x, y);
43940 }
43941 else {
43942 this.lastPosition.width = this.getWidth();
43943 this.lastPosition.height = this.getHeight();
43944 this.lastPosition.x = position.x;
43945 this.lastPosition.y = position.y;
43946 this.positionableFeature.offsetElement(0, 0);
43947 this.setHeight('100%');
43948 this.setWidth('100%');
43949 }
43950 this.isMaximized = !this.isMaximized;
43951 this.refreshMaximizeIcon();
43952 };
43953 AgDialog.prototype.refreshMaximizeIcon = function () {
43954 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["setDisplayed"])(this.maximizeIcon, !this.isMaximized);
43955 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["setDisplayed"])(this.minimizeIcon, this.isMaximized);
43956 };
43957 AgDialog.prototype.clearMaximizebleListeners = function () {
43958 if (this.maximizeListeners.length) {
43959 this.maximizeListeners.forEach(function (destroyListener) { return destroyListener(); });
43960 this.maximizeListeners.length = 0;
43961 }
43962 if (this.resizeListenerDestroy) {
43963 this.resizeListenerDestroy();
43964 this.resizeListenerDestroy = null;
43965 }
43966 };
43967 AgDialog.prototype.destroy = function () {
43968 this.maximizeButtonComp = this.destroyBean(this.maximizeButtonComp);
43969 this.clearMaximizebleListeners();
43970 _super.prototype.destroy.call(this);
43971 };
43972 AgDialog.prototype.setResizable = function (resizable) {
43973 this.positionableFeature.setResizable(resizable);
43974 };
43975 AgDialog.prototype.setMovable = function (movable) {
43976 this.positionableFeature.setMovable(movable, this.eTitleBar);
43977 };
43978 AgDialog.prototype.setMaximizable = function (maximizable) {
43979 var _this = this;
43980 if (!maximizable) {
43981 this.clearMaximizebleListeners();
43982 if (this.maximizeButtonComp) {
43983 this.destroyBean(this.maximizeButtonComp);
43984 this.maximizeButtonComp = this.maximizeIcon = this.minimizeIcon = undefined;
43985 }
43986 return;
43987 }
43988 var eTitleBar = this.eTitleBar;
43989 if (!eTitleBar || maximizable === this.isMaximizable) {
43990 return;
43991 }
43992 var maximizeButtonComp = this.maximizeButtonComp =
43993 this.createBean(new _component__WEBPACK_IMPORTED_MODULE_2__["Component"](/* html */ "<div class=\"ag-dialog-button\"></span>"));
43994 var eGui = maximizeButtonComp.getGui();
43995 eGui.appendChild(this.maximizeIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_4__["createIconNoSpan"])('maximize', this.gridOptionsWrapper));
43996 this.maximizeIcon.classList.add('ag-panel-title-bar-button-icon');
43997 eGui.appendChild(this.minimizeIcon = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_4__["createIconNoSpan"])('minimize', this.gridOptionsWrapper));
43998 this.minimizeIcon.classList.add('ag-panel-title-bar-button-icon', 'ag-hidden');
43999 maximizeButtonComp.addManagedListener(eGui, 'click', this.toggleMaximize.bind(this));
44000 this.addTitleBarButton(maximizeButtonComp, 0);
44001 this.maximizeListeners.push(this.addManagedListener(eTitleBar, 'dblclick', this.toggleMaximize.bind(this)));
44002 this.resizeListenerDestroy = this.addManagedListener(this, 'resize', function () {
44003 _this.isMaximized = false;
44004 _this.refreshMaximizeIcon();
44005 });
44006 };
44007 __decorate([
44008 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('popupService')
44009 ], AgDialog.prototype, "popupService", void 0);
44010 return AgDialog;
44011}(_agPanel__WEBPACK_IMPORTED_MODULE_1__["AgPanel"]));
44012
44013
44014
44015
44016
44017/***/ }),
44018/* 198 */
44019/***/ (function(module, __webpack_exports__, __webpack_require__) {
44020
44021"use strict";
44022__webpack_require__.r(__webpack_exports__);
44023/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgPanel", function() { return AgPanel; });
44024/* harmony import */ var _componentAnnotations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(57);
44025/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
44026/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(36);
44027/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42);
44028/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(48);
44029/* harmony import */ var _rendering_features_positionableFeature__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(176);
44030/**
44031 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
44032 * @version v27.3.0
44033 * @link https://www.ag-grid.com/
44034 * @license MIT
44035 */
44036var __extends = (undefined && undefined.__extends) || (function () {
44037 var extendStatics = function (d, b) {
44038 extendStatics = Object.setPrototypeOf ||
44039 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
44040 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
44041 return extendStatics(d, b);
44042 };
44043 return function (d, b) {
44044 extendStatics(d, b);
44045 function __() { this.constructor = d; }
44046 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
44047 };
44048})();
44049var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
44050 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
44051 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
44052 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
44053 return c > 3 && r && Object.defineProperty(target, key, r), r;
44054};
44055
44056
44057
44058
44059
44060
44061var AgPanel = /** @class */ (function (_super) {
44062 __extends(AgPanel, _super);
44063 function AgPanel(config) {
44064 var _this = _super.call(this, AgPanel.getTemplate(config)) || this;
44065 _this.closable = true;
44066 _this.config = config;
44067 return _this;
44068 }
44069 AgPanel.getTemplate = function (config) {
44070 var cssIdentifier = (config && config.cssIdentifier) || 'default';
44071 return /* html */ "<div class=\"ag-panel ag-" + cssIdentifier + "-panel\" tabindex=\"-1\">\n <div ref=\"eTitleBar\" class=\"ag-panel-title-bar ag-" + cssIdentifier + "-panel-title-bar ag-unselectable\">\n <span ref=\"eTitle\" class=\"ag-panel-title-bar-title ag-" + cssIdentifier + "-panel-title-bar-title\"></span>\n <div ref=\"eTitleBarButtons\" class=\"ag-panel-title-bar-buttons ag-" + cssIdentifier + "-panel-title-bar-buttons\"></div>\n </div>\n <div ref=\"eContentWrapper\" class=\"ag-panel-content-wrapper ag-" + cssIdentifier + "-panel-content-wrapper\"></div>\n </div>";
44072 };
44073 AgPanel.prototype.postConstruct = function () {
44074 var _this = this;
44075 var _a = this.config, component = _a.component, closable = _a.closable, hideTitleBar = _a.hideTitleBar, title = _a.title, _b = _a.minWidth, minWidth = _b === void 0 ? 250 : _b, width = _a.width, _c = _a.minHeight, minHeight = _c === void 0 ? 250 : _c, height = _a.height, centered = _a.centered, popup = _a.popup, x = _a.x, y = _a.y;
44076 this.positionableFeature = new _rendering_features_positionableFeature__WEBPACK_IMPORTED_MODULE_5__["PositionableFeature"](this.getGui(), {
44077 minWidth: minWidth, width: width, minHeight: minHeight, height: height, centered: centered, x: x, y: y, popup: popup,
44078 calculateTopBuffer: function () { return _this.positionableFeature.getHeight() - _this.getBodyHeight(); }
44079 });
44080 this.createManagedBean(this.positionableFeature);
44081 var eGui = this.getGui();
44082 if (component) {
44083 this.setBodyComponent(component);
44084 }
44085 if (!hideTitleBar) {
44086 if (title) {
44087 this.setTitle(title);
44088 }
44089 this.setClosable(closable != null ? closable : this.closable);
44090 }
44091 else {
44092 this.eTitleBar.classList.add('ag-hidden');
44093 }
44094 this.addManagedListener(this.eTitleBar, 'mousedown', function (e) {
44095 var eDocument = _this.gridOptionsWrapper.getDocument();
44096 if (eGui.contains(e.relatedTarget) ||
44097 eGui.contains(eDocument.activeElement) ||
44098 _this.eTitleBarButtons.contains(e.target)) {
44099 e.preventDefault();
44100 return;
44101 }
44102 var focusEl = _this.eContentWrapper.querySelector('button, [href], input, select, textarea, [tabindex]');
44103 if (focusEl) {
44104 focusEl.focus();
44105 }
44106 });
44107 if (popup && this.positionableFeature.isPositioned()) {
44108 return;
44109 }
44110 if (this.renderComponent) {
44111 this.renderComponent();
44112 }
44113 this.positionableFeature.initialisePosition();
44114 this.eContentWrapper.style.height = '0';
44115 };
44116 AgPanel.prototype.renderComponent = function () {
44117 var _this = this;
44118 var eGui = this.getGui();
44119 eGui.focus();
44120 this.close = function () {
44121 eGui.parentElement.removeChild(eGui);
44122 _this.destroy();
44123 };
44124 };
44125 AgPanel.prototype.getHeight = function () {
44126 return this.positionableFeature.getHeight();
44127 };
44128 AgPanel.prototype.setHeight = function (height) {
44129 this.positionableFeature.setHeight(height);
44130 };
44131 AgPanel.prototype.getWidth = function () {
44132 return this.positionableFeature.getWidth();
44133 };
44134 AgPanel.prototype.setWidth = function (width) {
44135 this.positionableFeature.setWidth(width);
44136 };
44137 AgPanel.prototype.setClosable = function (closable) {
44138 if (closable !== this.closable) {
44139 this.closable = closable;
44140 }
44141 if (closable) {
44142 var closeButtonComp = this.closeButtonComp = new _component__WEBPACK_IMPORTED_MODULE_2__["Component"](AgPanel.CLOSE_BTN_TEMPLATE);
44143 this.getContext().createBean(closeButtonComp);
44144 var eGui = closeButtonComp.getGui();
44145 var child = Object(_utils_icon__WEBPACK_IMPORTED_MODULE_4__["createIconNoSpan"])('close', this.gridOptionsWrapper);
44146 child.classList.add('ag-panel-title-bar-button-icon');
44147 eGui.appendChild(child);
44148 this.addTitleBarButton(closeButtonComp);
44149 closeButtonComp.addManagedListener(eGui, 'click', this.onBtClose.bind(this));
44150 }
44151 else if (this.closeButtonComp) {
44152 var eGui = this.closeButtonComp.getGui();
44153 eGui.parentElement.removeChild(eGui);
44154 this.closeButtonComp = this.destroyBean(this.closeButtonComp);
44155 }
44156 };
44157 AgPanel.prototype.setBodyComponent = function (bodyComponent) {
44158 bodyComponent.setParentComponent(this);
44159 this.eContentWrapper.appendChild(bodyComponent.getGui());
44160 };
44161 AgPanel.prototype.addTitleBarButton = function (button, position) {
44162 var eTitleBarButtons = this.eTitleBarButtons;
44163 var buttons = eTitleBarButtons.children;
44164 var len = buttons.length;
44165 if (position == null) {
44166 position = len;
44167 }
44168 position = Math.max(0, Math.min(position, len));
44169 button.addCssClass('ag-panel-title-bar-button');
44170 var eGui = button.getGui();
44171 if (position === 0) {
44172 eTitleBarButtons.insertAdjacentElement('afterbegin', eGui);
44173 }
44174 else if (position === len) {
44175 eTitleBarButtons.insertAdjacentElement('beforeend', eGui);
44176 }
44177 else {
44178 buttons[position - 1].insertAdjacentElement('afterend', eGui);
44179 }
44180 button.setParentComponent(this);
44181 };
44182 AgPanel.prototype.getBodyHeight = function () {
44183 return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["getInnerHeight"])(this.eContentWrapper);
44184 };
44185 AgPanel.prototype.getBodyWidth = function () {
44186 return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["getInnerWidth"])(this.eContentWrapper);
44187 };
44188 AgPanel.prototype.setTitle = function (title) {
44189 this.eTitle.innerText = title;
44190 };
44191 // called when user hits the 'x' in the top right
44192 AgPanel.prototype.onBtClose = function () {
44193 this.close();
44194 };
44195 AgPanel.prototype.destroy = function () {
44196 if (this.closeButtonComp) {
44197 this.closeButtonComp = this.destroyBean(this.closeButtonComp);
44198 }
44199 var eGui = this.getGui();
44200 if (eGui && eGui.offsetParent) {
44201 this.close();
44202 }
44203 _super.prototype.destroy.call(this);
44204 };
44205 AgPanel.CLOSE_BTN_TEMPLATE = "<div class=\"ag-button\"></div>";
44206 __decorate([
44207 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eContentWrapper')
44208 ], AgPanel.prototype, "eContentWrapper", void 0);
44209 __decorate([
44210 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eTitleBar')
44211 ], AgPanel.prototype, "eTitleBar", void 0);
44212 __decorate([
44213 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eTitleBarButtons')
44214 ], AgPanel.prototype, "eTitleBarButtons", void 0);
44215 __decorate([
44216 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_0__["RefSelector"])('eTitle')
44217 ], AgPanel.prototype, "eTitle", void 0);
44218 __decorate([
44219 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
44220 ], AgPanel.prototype, "postConstruct", null);
44221 return AgPanel;
44222}(_component__WEBPACK_IMPORTED_MODULE_2__["Component"]));
44223
44224
44225
44226
44227
44228/***/ }),
44229/* 199 */
44230/***/ (function(module, __webpack_exports__, __webpack_require__) {
44231
44232"use strict";
44233__webpack_require__.r(__webpack_exports__);
44234/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgGroupComponent", function() { return AgGroupComponent; });
44235/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
44236/* harmony import */ var _componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
44237/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
44238/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(48);
44239/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(42);
44240/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(65);
44241/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(44);
44242/**
44243 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
44244 * @version v27.3.0
44245 * @link https://www.ag-grid.com/
44246 * @license MIT
44247 */
44248var __extends = (undefined && undefined.__extends) || (function () {
44249 var extendStatics = function (d, b) {
44250 extendStatics = Object.setPrototypeOf ||
44251 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
44252 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
44253 return extendStatics(d, b);
44254 };
44255 return function (d, b) {
44256 extendStatics(d, b);
44257 function __() { this.constructor = d; }
44258 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
44259 };
44260})();
44261var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
44262 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
44263 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
44264 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
44265 return c > 3 && r && Object.defineProperty(target, key, r), r;
44266};
44267
44268
44269
44270
44271
44272
44273
44274var AgGroupComponent = /** @class */ (function (_super) {
44275 __extends(AgGroupComponent, _super);
44276 function AgGroupComponent(params) {
44277 if (params === void 0) { params = {}; }
44278 var _this = _super.call(this, AgGroupComponent.getTemplate(params)) || this;
44279 _this.suppressEnabledCheckbox = true;
44280 _this.suppressOpenCloseIcons = false;
44281 var title = params.title, enabled = params.enabled, items = params.items, suppressEnabledCheckbox = params.suppressEnabledCheckbox, suppressOpenCloseIcons = params.suppressOpenCloseIcons;
44282 _this.title = title;
44283 _this.cssIdentifier = params.cssIdentifier || 'default';
44284 _this.enabled = enabled != null ? enabled : true;
44285 _this.items = items || [];
44286 _this.alignItems = params.alignItems || 'center';
44287 if (suppressEnabledCheckbox != null) {
44288 _this.suppressEnabledCheckbox = suppressEnabledCheckbox;
44289 }
44290 if (suppressOpenCloseIcons != null) {
44291 _this.suppressOpenCloseIcons = suppressOpenCloseIcons;
44292 }
44293 return _this;
44294 }
44295 AgGroupComponent.getTemplate = function (params) {
44296 var cssIdentifier = params.cssIdentifier || 'default';
44297 var direction = params.direction || 'vertical';
44298 return /* html */ "<div class=\"ag-group ag-" + cssIdentifier + "-group\" role=\"presentation\">\n <div class=\"ag-group-title-bar ag-" + cssIdentifier + "-group-title-bar ag-unselectable\" ref=\"eTitleBar\" role=\"button\">\n <span class=\"ag-group-title-bar-icon ag-" + cssIdentifier + "-group-title-bar-icon\" ref=\"eGroupOpenedIcon\" role=\"presentation\"></span>\n <span class=\"ag-group-title-bar-icon ag-" + cssIdentifier + "-group-title-bar-icon\" ref=\"eGroupClosedIcon\" role=\"presentation\"></span>\n <span ref=\"eTitle\" class=\"ag-group-title ag-" + cssIdentifier + "-group-title\"></span>\n </div>\n <div ref=\"eToolbar\" class=\"ag-group-toolbar ag-" + cssIdentifier + "-group-toolbar\">\n <ag-checkbox ref=\"cbGroupEnabled\"></ag-checkbox>\n </div>\n <div ref=\"eContainer\" class=\"ag-group-container ag-group-container-" + direction + " ag-" + cssIdentifier + "-group-container\"></div>\n </div>";
44299 };
44300 AgGroupComponent.prototype.postConstruct = function () {
44301 if (this.items.length) {
44302 var initialItems = this.items;
44303 this.items = [];
44304 this.addItems(initialItems);
44305 }
44306 var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();
44307 this.cbGroupEnabled.setLabel(localeTextFunc('enabled', 'Enabled'));
44308 if (this.title) {
44309 this.setTitle(this.title);
44310 }
44311 if (this.enabled) {
44312 this.setEnabled(this.enabled);
44313 }
44314 this.setAlignItems(this.alignItems);
44315 this.hideEnabledCheckbox(this.suppressEnabledCheckbox);
44316 this.hideOpenCloseIcons(this.suppressOpenCloseIcons);
44317 this.setupExpandContract();
44318 this.refreshAriaStatus();
44319 this.refreshChildDisplay();
44320 };
44321 AgGroupComponent.prototype.setupExpandContract = function () {
44322 var _this = this;
44323 this.eGroupClosedIcon.appendChild(Object(_utils_icon__WEBPACK_IMPORTED_MODULE_3__["createIcon"])('columnSelectClosed', this.gridOptionsWrapper, null));
44324 this.eGroupOpenedIcon.appendChild(Object(_utils_icon__WEBPACK_IMPORTED_MODULE_3__["createIcon"])('columnSelectOpen', this.gridOptionsWrapper, null));
44325 this.addManagedListener(this.eTitleBar, 'click', function () { return _this.toggleGroupExpand(); });
44326 this.addManagedListener(this.eTitleBar, 'keydown', function (e) {
44327 switch (e.key) {
44328 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].ENTER:
44329 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].SPACE:
44330 e.preventDefault();
44331 _this.toggleGroupExpand();
44332 break;
44333 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].RIGHT:
44334 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].LEFT:
44335 e.preventDefault();
44336 _this.toggleGroupExpand(e.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].RIGHT);
44337 break;
44338 }
44339 });
44340 };
44341 AgGroupComponent.prototype.refreshAriaStatus = function () {
44342 if (!this.suppressOpenCloseIcons) {
44343 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_6__["setAriaExpanded"])(this.eTitleBar, this.expanded);
44344 }
44345 };
44346 AgGroupComponent.prototype.refreshChildDisplay = function () {
44347 var showIcon = !this.suppressOpenCloseIcons;
44348 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["setDisplayed"])(this.eToolbar, this.expanded && !this.suppressEnabledCheckbox);
44349 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["setDisplayed"])(this.eGroupOpenedIcon, showIcon && this.expanded);
44350 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["setDisplayed"])(this.eGroupClosedIcon, showIcon && !this.expanded);
44351 };
44352 AgGroupComponent.prototype.isExpanded = function () {
44353 return this.expanded;
44354 };
44355 AgGroupComponent.prototype.setAlignItems = function (alignment) {
44356 if (this.alignItems !== alignment) {
44357 this.removeCssClass("ag-group-item-alignment-" + this.alignItems);
44358 }
44359 this.alignItems = alignment;
44360 var newCls = "ag-group-item-alignment-" + this.alignItems;
44361 this.addCssClass(newCls);
44362 return this;
44363 };
44364 AgGroupComponent.prototype.toggleGroupExpand = function (expanded) {
44365 if (this.suppressOpenCloseIcons) {
44366 this.expanded = true;
44367 this.refreshChildDisplay();
44368 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["setDisplayed"])(this.eContainer, true);
44369 return this;
44370 }
44371 expanded = expanded != null ? expanded : !this.expanded;
44372 if (this.expanded === expanded) {
44373 return this;
44374 }
44375 this.expanded = expanded;
44376 this.refreshAriaStatus();
44377 this.refreshChildDisplay();
44378 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["setDisplayed"])(this.eContainer, expanded);
44379 this.dispatchEvent({ type: this.expanded ? AgGroupComponent.EVENT_EXPANDED : AgGroupComponent.EVENT_COLLAPSED });
44380 return this;
44381 };
44382 AgGroupComponent.prototype.addItems = function (items) {
44383 var _this = this;
44384 items.forEach(function (item) { return _this.addItem(item); });
44385 };
44386 AgGroupComponent.prototype.addItem = function (item) {
44387 var container = this.eContainer;
44388 var el = item instanceof _component__WEBPACK_IMPORTED_MODULE_0__["Component"] ? item.getGui() : item;
44389 el.classList.add('ag-group-item', "ag-" + this.cssIdentifier + "-group-item");
44390 container.appendChild(el);
44391 this.items.push(el);
44392 };
44393 AgGroupComponent.prototype.hideItem = function (hide, index) {
44394 var itemToHide = this.items[index];
44395 itemToHide.classList.toggle('ag-hidden', hide);
44396 };
44397 AgGroupComponent.prototype.setTitle = function (title) {
44398 this.eTitle.innerText = title;
44399 return this;
44400 };
44401 AgGroupComponent.prototype.addCssClassToTitleBar = function (cssClass) {
44402 this.eTitleBar.classList.add(cssClass);
44403 };
44404 AgGroupComponent.prototype.setEnabled = function (enabled, skipToggle) {
44405 this.enabled = enabled;
44406 this.refreshDisabledStyles();
44407 this.toggleGroupExpand(enabled);
44408 if (!skipToggle) {
44409 this.cbGroupEnabled.setValue(enabled);
44410 }
44411 return this;
44412 };
44413 AgGroupComponent.prototype.isEnabled = function () {
44414 return this.enabled;
44415 };
44416 AgGroupComponent.prototype.onEnableChange = function (callbackFn) {
44417 var _this = this;
44418 this.cbGroupEnabled.onValueChange(function (newSelection) {
44419 _this.setEnabled(newSelection, true);
44420 callbackFn(newSelection);
44421 });
44422 return this;
44423 };
44424 AgGroupComponent.prototype.hideEnabledCheckbox = function (hide) {
44425 this.suppressEnabledCheckbox = hide;
44426 this.refreshChildDisplay();
44427 this.refreshDisabledStyles();
44428 return this;
44429 };
44430 AgGroupComponent.prototype.hideOpenCloseIcons = function (hide) {
44431 this.suppressOpenCloseIcons = hide;
44432 if (hide) {
44433 this.toggleGroupExpand(true);
44434 }
44435 return this;
44436 };
44437 AgGroupComponent.prototype.refreshDisabledStyles = function () {
44438 this.addOrRemoveCssClass('ag-disabled', !this.enabled);
44439 if (this.suppressEnabledCheckbox && !this.enabled) {
44440 this.eTitleBar.classList.add('ag-disabled-group-title-bar');
44441 this.eTitleBar.removeAttribute('tabindex');
44442 }
44443 else {
44444 this.eTitleBar.classList.remove('ag-disabled-group-title-bar');
44445 this.eTitleBar.setAttribute('tabindex', '0');
44446 }
44447 this.eContainer.classList.toggle('ag-disabled-group-container', !this.enabled);
44448 };
44449 AgGroupComponent.EVENT_EXPANDED = 'expanded';
44450 AgGroupComponent.EVENT_COLLAPSED = 'collapsed';
44451 __decorate([
44452 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eTitleBar')
44453 ], AgGroupComponent.prototype, "eTitleBar", void 0);
44454 __decorate([
44455 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eGroupOpenedIcon')
44456 ], AgGroupComponent.prototype, "eGroupOpenedIcon", void 0);
44457 __decorate([
44458 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eGroupClosedIcon')
44459 ], AgGroupComponent.prototype, "eGroupClosedIcon", void 0);
44460 __decorate([
44461 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eToolbar')
44462 ], AgGroupComponent.prototype, "eToolbar", void 0);
44463 __decorate([
44464 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('cbGroupEnabled')
44465 ], AgGroupComponent.prototype, "cbGroupEnabled", void 0);
44466 __decorate([
44467 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eTitle')
44468 ], AgGroupComponent.prototype, "eTitle", void 0);
44469 __decorate([
44470 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eContainer')
44471 ], AgGroupComponent.prototype, "eContainer", void 0);
44472 __decorate([
44473 _context_context__WEBPACK_IMPORTED_MODULE_2__["PostConstruct"]
44474 ], AgGroupComponent.prototype, "postConstruct", null);
44475 return AgGroupComponent;
44476}(_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
44477
44478
44479
44480
44481
44482/***/ }),
44483/* 200 */
44484/***/ (function(module, __webpack_exports__, __webpack_require__) {
44485
44486"use strict";
44487__webpack_require__.r(__webpack_exports__);
44488/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgMenuItemComponent", function() { return AgMenuItemComponent; });
44489/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
44490/* harmony import */ var _agMenuList__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(201);
44491/* harmony import */ var _agMenuPanel__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(204);
44492/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(36);
44493/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(65);
44494/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(48);
44495/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(42);
44496/* harmony import */ var _customTooltipFeature__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(56);
44497/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(44);
44498/**
44499 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
44500 * @version v27.3.0
44501 * @link https://www.ag-grid.com/
44502 * @license MIT
44503 */
44504var __extends = (undefined && undefined.__extends) || (function () {
44505 var extendStatics = function (d, b) {
44506 extendStatics = Object.setPrototypeOf ||
44507 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
44508 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
44509 return extendStatics(d, b);
44510 };
44511 return function (d, b) {
44512 extendStatics(d, b);
44513 function __() { this.constructor = d; }
44514 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
44515 };
44516})();
44517var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
44518 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
44519 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
44520 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
44521 return c > 3 && r && Object.defineProperty(target, key, r), r;
44522};
44523
44524
44525
44526
44527
44528
44529
44530
44531
44532
44533var AgMenuItemComponent = /** @class */ (function (_super) {
44534 __extends(AgMenuItemComponent, _super);
44535 function AgMenuItemComponent(params) {
44536 var _this = _super.call(this) || this;
44537 _this.params = params;
44538 _this.isActive = false;
44539 _this.subMenuIsOpen = false;
44540 _this.setTemplate(/* html */ "<div class=\"" + _this.getClassName() + "\" tabindex=\"-1\" role=\"treeitem\"></div>");
44541 return _this;
44542 }
44543 AgMenuItemComponent.prototype.init = function () {
44544 var _this = this;
44545 this.addIcon();
44546 this.addName();
44547 this.addShortcut();
44548 this.addSubMenu();
44549 this.addTooltip();
44550 var eGui = this.getGui();
44551 if (this.params.disabled) {
44552 this.addCssClass(this.getClassName('disabled'));
44553 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_8__["setAriaDisabled"])(eGui, true);
44554 }
44555 else {
44556 this.addGuiEventListener('click', function (e) { return _this.onItemSelected(e); });
44557 this.addGuiEventListener('keydown', function (e) {
44558 if (e.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].ENTER || e.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_4__["KeyCode"].SPACE) {
44559 e.preventDefault();
44560 _this.onItemSelected(e);
44561 }
44562 });
44563 this.addGuiEventListener('mousedown', function (e) {
44564 // Prevent event bubbling to other event handlers such as PopupService triggering
44565 // premature closing of any open sub-menu popup.
44566 e.stopPropagation();
44567 e.preventDefault();
44568 });
44569 this.addGuiEventListener('mouseenter', function () { return _this.onMouseEnter(); });
44570 this.addGuiEventListener('mouseleave', function () { return _this.onMouseLeave(); });
44571 }
44572 if (this.params.cssClasses) {
44573 this.params.cssClasses.forEach(function (it) { return _this.addCssClass(it); });
44574 }
44575 };
44576 AgMenuItemComponent.prototype.isDisabled = function () {
44577 return !!this.params.disabled;
44578 };
44579 AgMenuItemComponent.prototype.openSubMenu = function (activateFirstItem) {
44580 var _this = this;
44581 if (activateFirstItem === void 0) { activateFirstItem = false; }
44582 this.closeSubMenu();
44583 if (!this.params.subMenu) {
44584 return;
44585 }
44586 var ePopup = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["loadTemplate"])(/* html */ "<div class=\"ag-menu\" role=\"presentation\"></div>");
44587 var destroySubMenu;
44588 if (this.params.subMenu instanceof Array) {
44589 var currentLevel = Object(_utils_aria__WEBPACK_IMPORTED_MODULE_8__["getAriaLevel"])(this.getGui());
44590 var nextLevel = isNaN(currentLevel) ? 1 : (currentLevel + 1);
44591 var childMenu_1 = this.createBean(new _agMenuList__WEBPACK_IMPORTED_MODULE_1__["AgMenuList"](nextLevel));
44592 childMenu_1.setParentComponent(this);
44593 childMenu_1.addMenuItems(this.params.subMenu);
44594 ePopup.appendChild(childMenu_1.getGui());
44595 // bubble menu item selected events
44596 this.addManagedListener(childMenu_1, AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED, function (e) { return _this.dispatchEvent(e); });
44597 childMenu_1.addGuiEventListener('mouseenter', function () { return _this.cancelDeactivate(); });
44598 destroySubMenu = function () { return _this.destroyBean(childMenu_1); };
44599 if (activateFirstItem) {
44600 setTimeout(function () { return childMenu_1.activateFirstItem(); }, 0);
44601 }
44602 }
44603 else {
44604 var subMenu_1 = this.params.subMenu;
44605 var menuPanel = this.createBean(new _agMenuPanel__WEBPACK_IMPORTED_MODULE_2__["AgMenuPanel"](subMenu_1));
44606 menuPanel.setParentComponent(this);
44607 var subMenuGui_1 = menuPanel.getGui();
44608 var mouseEvent_1 = 'mouseenter';
44609 var mouseEnterListener_1 = function () { return _this.cancelDeactivate(); };
44610 subMenuGui_1.addEventListener(mouseEvent_1, mouseEnterListener_1);
44611 destroySubMenu = function () { return subMenuGui_1.removeEventListener(mouseEvent_1, mouseEnterListener_1); };
44612 ePopup.appendChild(subMenuGui_1);
44613 if (subMenu_1.afterGuiAttached) {
44614 setTimeout(function () { return subMenu_1.afterGuiAttached(); }, 0);
44615 }
44616 }
44617 var eGui = this.getGui();
44618 var positionCallback = this.popupService.positionPopupForMenu.bind(this.popupService, { eventSource: eGui, ePopup: ePopup });
44619 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
44620 var addPopupRes = this.popupService.addPopup({
44621 modal: true,
44622 eChild: ePopup,
44623 positionCallback: positionCallback,
44624 anchorToElement: eGui,
44625 ariaLabel: translate('ariaLabelSubMenu', 'SubMenu')
44626 });
44627 this.subMenuIsOpen = true;
44628 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_8__["setAriaExpanded"])(eGui, true);
44629 this.hideSubMenu = function () {
44630 if (addPopupRes) {
44631 addPopupRes.hideFunc();
44632 }
44633 _this.subMenuIsOpen = false;
44634 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_8__["setAriaExpanded"])(eGui, false);
44635 destroySubMenu();
44636 };
44637 };
44638 AgMenuItemComponent.prototype.closeSubMenu = function () {
44639 if (!this.hideSubMenu) {
44640 return;
44641 }
44642 this.hideSubMenu();
44643 this.hideSubMenu = null;
44644 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_8__["setAriaExpanded"])(this.getGui(), false);
44645 };
44646 AgMenuItemComponent.prototype.isSubMenuOpen = function () {
44647 return this.subMenuIsOpen;
44648 };
44649 AgMenuItemComponent.prototype.activate = function (openSubMenu) {
44650 var _this = this;
44651 this.cancelActivate();
44652 if (this.params.disabled) {
44653 return;
44654 }
44655 this.isActive = true;
44656 this.addCssClass(this.getClassName('active'));
44657 this.getGui().focus();
44658 if (openSubMenu && this.params.subMenu) {
44659 window.setTimeout(function () {
44660 if (_this.isAlive() && _this.isActive) {
44661 _this.openSubMenu();
44662 }
44663 }, 300);
44664 }
44665 this.onItemActivated();
44666 };
44667 AgMenuItemComponent.prototype.deactivate = function () {
44668 this.cancelDeactivate();
44669 this.removeCssClass(this.getClassName('active'));
44670 this.isActive = false;
44671 if (this.subMenuIsOpen) {
44672 this.hideSubMenu();
44673 }
44674 };
44675 AgMenuItemComponent.prototype.addIcon = function () {
44676 if (!this.params.checked && !this.params.icon && this.params.isCompact) {
44677 return;
44678 }
44679 var icon = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["loadTemplate"])(/* html */ "<span ref=\"eIcon\" class=\"" + this.getClassName('part') + " " + this.getClassName('icon') + "\" role=\"presentation\"></span>");
44680 if (this.params.checked) {
44681 icon.appendChild(Object(_utils_icon__WEBPACK_IMPORTED_MODULE_5__["createIconNoSpan"])('check', this.gridOptionsWrapper));
44682 }
44683 else if (this.params.icon) {
44684 if (Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["isNodeOrElement"])(this.params.icon)) {
44685 icon.appendChild(this.params.icon);
44686 }
44687 else if (typeof this.params.icon === 'string') {
44688 icon.innerHTML = this.params.icon;
44689 }
44690 else {
44691 console.warn('AG Grid: menu item icon must be DOM node or string');
44692 }
44693 }
44694 this.getGui().appendChild(icon);
44695 };
44696 AgMenuItemComponent.prototype.addName = function () {
44697 if (!this.params.name && this.params.isCompact) {
44698 return;
44699 }
44700 var name = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["loadTemplate"])(/* html */ "<span ref=\"eName\" class=\"" + this.getClassName('part') + " " + this.getClassName('text') + "\">" + (this.params.name || '') + "</span>");
44701 this.getGui().appendChild(name);
44702 };
44703 AgMenuItemComponent.prototype.addTooltip = function () {
44704 if (!this.params.tooltip) {
44705 return;
44706 }
44707 this.tooltip = this.params.tooltip;
44708 if (this.gridOptionsWrapper.isEnableBrowserTooltips()) {
44709 this.getGui().setAttribute('title', this.tooltip);
44710 }
44711 else {
44712 this.createManagedBean(new _customTooltipFeature__WEBPACK_IMPORTED_MODULE_7__["CustomTooltipFeature"](this));
44713 }
44714 };
44715 AgMenuItemComponent.prototype.getTooltipParams = function () {
44716 return {
44717 location: 'menu',
44718 value: this.tooltip
44719 };
44720 };
44721 AgMenuItemComponent.prototype.addShortcut = function () {
44722 if (!this.params.shortcut && this.params.isCompact) {
44723 return;
44724 }
44725 var shortcut = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["loadTemplate"])(/* html */ "<span ref=\"eShortcut\" class=\"" + this.getClassName('part') + " " + this.getClassName('shortcut') + "\">" + (this.params.shortcut || '') + "</span>");
44726 this.getGui().appendChild(shortcut);
44727 };
44728 AgMenuItemComponent.prototype.addSubMenu = function () {
44729 if (!this.params.subMenu && this.params.isCompact) {
44730 return;
44731 }
44732 var pointer = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_6__["loadTemplate"])(/* html */ "<span ref=\"ePopupPointer\" class=\"" + this.getClassName('part') + " " + this.getClassName('popup-pointer') + "\"></span>");
44733 var eGui = this.getGui();
44734 if (this.params.subMenu) {
44735 var iconName = this.gridOptionsWrapper.isEnableRtl() ? 'smallLeft' : 'smallRight';
44736 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_8__["setAriaExpanded"])(eGui, false);
44737 pointer.appendChild(Object(_utils_icon__WEBPACK_IMPORTED_MODULE_5__["createIconNoSpan"])(iconName, this.gridOptionsWrapper));
44738 }
44739 eGui.appendChild(pointer);
44740 };
44741 AgMenuItemComponent.prototype.onItemSelected = function (event) {
44742 if (this.params.action) {
44743 this.params.action();
44744 }
44745 else {
44746 this.openSubMenu(event && event.type === 'keydown');
44747 }
44748 if (this.params.subMenu && !this.params.action) {
44749 return;
44750 }
44751 var e = {
44752 type: AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED,
44753 action: this.params.action,
44754 checked: this.params.checked,
44755 cssClasses: this.params.cssClasses,
44756 disabled: this.params.disabled,
44757 icon: this.params.icon,
44758 name: this.params.name,
44759 shortcut: this.params.shortcut,
44760 subMenu: this.params.subMenu,
44761 tooltip: this.params.tooltip,
44762 event: event
44763 };
44764 this.dispatchEvent(e);
44765 };
44766 AgMenuItemComponent.prototype.onItemActivated = function () {
44767 var event = {
44768 type: AgMenuItemComponent.EVENT_MENU_ITEM_ACTIVATED,
44769 menuItem: this,
44770 };
44771 this.dispatchEvent(event);
44772 };
44773 AgMenuItemComponent.prototype.cancelActivate = function () {
44774 if (this.activateTimeoutId) {
44775 window.clearTimeout(this.activateTimeoutId);
44776 this.activateTimeoutId = 0;
44777 }
44778 };
44779 AgMenuItemComponent.prototype.cancelDeactivate = function () {
44780 if (this.deactivateTimeoutId) {
44781 window.clearTimeout(this.deactivateTimeoutId);
44782 this.deactivateTimeoutId = 0;
44783 }
44784 };
44785 AgMenuItemComponent.prototype.onMouseEnter = function () {
44786 var _this = this;
44787 this.cancelDeactivate();
44788 if (this.params.isAnotherSubMenuOpen()) {
44789 // wait to see if the user enters the open sub-menu
44790 this.activateTimeoutId = window.setTimeout(function () { return _this.activate(true); }, AgMenuItemComponent.ACTIVATION_DELAY);
44791 }
44792 else {
44793 // activate immediately
44794 this.activate(true);
44795 }
44796 };
44797 AgMenuItemComponent.prototype.onMouseLeave = function () {
44798 var _this = this;
44799 this.cancelActivate();
44800 if (this.isSubMenuOpen()) {
44801 // wait to see if the user enters the sub-menu
44802 this.deactivateTimeoutId = window.setTimeout(function () { return _this.deactivate(); }, AgMenuItemComponent.ACTIVATION_DELAY);
44803 }
44804 else {
44805 // de-activate immediately
44806 this.deactivate();
44807 }
44808 };
44809 AgMenuItemComponent.prototype.getClassName = function (suffix) {
44810 var prefix = this.params.isCompact ? 'ag-compact-menu-option' : 'ag-menu-option';
44811 return suffix ? prefix + "-" + suffix : prefix;
44812 };
44813 AgMenuItemComponent.EVENT_MENU_ITEM_SELECTED = 'menuItemSelected';
44814 AgMenuItemComponent.EVENT_MENU_ITEM_ACTIVATED = 'menuItemActivated';
44815 AgMenuItemComponent.ACTIVATION_DELAY = 80;
44816 __decorate([
44817 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('popupService')
44818 ], AgMenuItemComponent.prototype, "popupService", void 0);
44819 __decorate([
44820 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
44821 ], AgMenuItemComponent.prototype, "init", null);
44822 return AgMenuItemComponent;
44823}(_component__WEBPACK_IMPORTED_MODULE_3__["Component"]));
44824
44825
44826
44827
44828
44829/***/ }),
44830/* 201 */
44831/***/ (function(module, __webpack_exports__, __webpack_require__) {
44832
44833"use strict";
44834__webpack_require__.r(__webpack_exports__);
44835/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgMenuList", function() { return AgMenuList; });
44836/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
44837/* harmony import */ var _agMenuItemComponent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(200);
44838/* harmony import */ var _tabGuardComp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(202);
44839/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(65);
44840/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(42);
44841/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(18);
44842/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(44);
44843/**
44844 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
44845 * @version v27.3.0
44846 * @link https://www.ag-grid.com/
44847 * @license MIT
44848 */
44849var __extends = (undefined && undefined.__extends) || (function () {
44850 var extendStatics = function (d, b) {
44851 extendStatics = Object.setPrototypeOf ||
44852 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
44853 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
44854 return extendStatics(d, b);
44855 };
44856 return function (d, b) {
44857 extendStatics(d, b);
44858 function __() { this.constructor = d; }
44859 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
44860 };
44861})();
44862var __assign = (undefined && undefined.__assign) || function () {
44863 __assign = Object.assign || function(t) {
44864 for (var s, i = 1, n = arguments.length; i < n; i++) {
44865 s = arguments[i];
44866 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
44867 t[p] = s[p];
44868 }
44869 return t;
44870 };
44871 return __assign.apply(this, arguments);
44872};
44873var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
44874 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
44875 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
44876 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
44877 return c > 3 && r && Object.defineProperty(target, key, r), r;
44878};
44879
44880
44881
44882
44883
44884
44885
44886var AgMenuList = /** @class */ (function (_super) {
44887 __extends(AgMenuList, _super);
44888 function AgMenuList(level) {
44889 if (level === void 0) { level = 1; }
44890 var _this = _super.call(this, /* html */ "<div class=\"ag-menu-list\" role=\"tree\"></div>") || this;
44891 _this.level = level;
44892 _this.menuItems = [];
44893 return _this;
44894 }
44895 AgMenuList.prototype.postConstruct = function () {
44896 var _this = this;
44897 this.initialiseTabGuard({
44898 onTabKeyDown: function (e) { return _this.onTabKeyDown(e); },
44899 handleKeyDown: function (e) { return _this.handleKeyDown(e); }
44900 });
44901 };
44902 AgMenuList.prototype.onTabKeyDown = function (e) {
44903 var parent = this.getParentComponent();
44904 var parentGui = parent && parent.getGui();
44905 var isManaged = parentGui && parentGui.classList.contains('ag-focus-managed');
44906 if (!isManaged) {
44907 e.preventDefault();
44908 }
44909 if (e.shiftKey) {
44910 this.closeIfIsChild(e);
44911 }
44912 };
44913 AgMenuList.prototype.handleKeyDown = function (e) {
44914 switch (e.key) {
44915 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].UP:
44916 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].RIGHT:
44917 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].DOWN:
44918 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].LEFT:
44919 e.preventDefault();
44920 this.handleNavKey(e.key);
44921 break;
44922 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].ESCAPE:
44923 var topMenu = this.findTopMenu();
44924 if (topMenu) {
44925 this.focusService.focusInto(topMenu.getGui());
44926 }
44927 break;
44928 }
44929 };
44930 AgMenuList.prototype.clearActiveItem = function () {
44931 if (this.activeMenuItem) {
44932 this.activeMenuItem.deactivate();
44933 this.activeMenuItem = null;
44934 }
44935 };
44936 AgMenuList.prototype.addMenuItems = function (menuItems) {
44937 var _this = this;
44938 if (menuItems == null) {
44939 return;
44940 }
44941 menuItems.forEach(function (menuItemOrString) {
44942 if (menuItemOrString === 'separator') {
44943 _this.addSeparator();
44944 }
44945 else if (typeof menuItemOrString === 'string') {
44946 console.warn("AG Grid: unrecognised menu item " + menuItemOrString);
44947 }
44948 else {
44949 _this.addItem(menuItemOrString);
44950 }
44951 });
44952 };
44953 AgMenuList.prototype.addItem = function (menuItemDef) {
44954 var _this = this;
44955 var menuItem = this.createManagedBean(new _agMenuItemComponent__WEBPACK_IMPORTED_MODULE_1__["AgMenuItemComponent"](__assign(__assign({}, menuItemDef), { isAnotherSubMenuOpen: function () { return _this.menuItems.some(function (m) { return m.isSubMenuOpen(); }); } })));
44956 menuItem.setParentComponent(this);
44957 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_6__["setAriaLevel"])(menuItem.getGui(), this.level);
44958 this.menuItems.push(menuItem);
44959 this.appendChild(menuItem.getGui());
44960 this.addManagedListener(menuItem, _agMenuItemComponent__WEBPACK_IMPORTED_MODULE_1__["AgMenuItemComponent"].EVENT_MENU_ITEM_SELECTED, function (event) {
44961 _this.dispatchEvent(event);
44962 });
44963 this.addManagedListener(menuItem, _agMenuItemComponent__WEBPACK_IMPORTED_MODULE_1__["AgMenuItemComponent"].EVENT_MENU_ITEM_ACTIVATED, function (event) {
44964 if (_this.activeMenuItem && _this.activeMenuItem !== event.menuItem) {
44965 _this.activeMenuItem.deactivate();
44966 }
44967 _this.activeMenuItem = event.menuItem;
44968 });
44969 };
44970 AgMenuList.prototype.activateFirstItem = function () {
44971 var item = this.menuItems.filter(function (currentItem) { return !currentItem.isDisabled(); })[0];
44972 if (!item) {
44973 return;
44974 }
44975 item.activate();
44976 };
44977 AgMenuList.prototype.addSeparator = function () {
44978 var separatorHtml = /* html */ "\n <div class=\"ag-menu-separator\" aria-hidden=\"true\">\n <div class=\"ag-menu-separator-part\"></div>\n <div class=\"ag-menu-separator-part\"></div>\n <div class=\"ag-menu-separator-part\"></div>\n <div class=\"ag-menu-separator-part\"></div>\n </div>";
44979 this.appendChild(Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["loadTemplate"])(separatorHtml));
44980 };
44981 AgMenuList.prototype.findTopMenu = function () {
44982 var parent = this.getParentComponent();
44983 if (!parent && this instanceof AgMenuList) {
44984 return this;
44985 }
44986 while (true) {
44987 var nextParent = parent && parent.getParentComponent && parent.getParentComponent();
44988 if (!nextParent || (!(nextParent instanceof AgMenuList || nextParent instanceof _agMenuItemComponent__WEBPACK_IMPORTED_MODULE_1__["AgMenuItemComponent"]))) {
44989 break;
44990 }
44991 parent = nextParent;
44992 }
44993 return parent instanceof AgMenuList ? parent : undefined;
44994 };
44995 AgMenuList.prototype.handleNavKey = function (key) {
44996 switch (key) {
44997 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].UP:
44998 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].DOWN:
44999 var nextItem = this.findNextItem(key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].UP);
45000 if (nextItem && nextItem !== this.activeMenuItem) {
45001 nextItem.activate();
45002 }
45003 return;
45004 }
45005 var left = this.gridOptionsWrapper.isEnableRtl() ? _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].RIGHT : _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].LEFT;
45006 if (key === left) {
45007 this.closeIfIsChild();
45008 }
45009 else {
45010 this.openChild();
45011 }
45012 };
45013 AgMenuList.prototype.closeIfIsChild = function (e) {
45014 var parentItem = this.getParentComponent();
45015 if (parentItem && parentItem instanceof _agMenuItemComponent__WEBPACK_IMPORTED_MODULE_1__["AgMenuItemComponent"]) {
45016 if (e) {
45017 e.preventDefault();
45018 }
45019 parentItem.closeSubMenu();
45020 parentItem.getGui().focus();
45021 }
45022 };
45023 AgMenuList.prototype.openChild = function () {
45024 if (this.activeMenuItem) {
45025 this.activeMenuItem.openSubMenu(true);
45026 }
45027 };
45028 AgMenuList.prototype.findNextItem = function (up) {
45029 var items = this.menuItems.filter(function (item) { return !item.isDisabled(); });
45030 if (!items.length) {
45031 return;
45032 }
45033 if (!this.activeMenuItem) {
45034 return up ? Object(_utils_array__WEBPACK_IMPORTED_MODULE_5__["last"])(items) : items[0];
45035 }
45036 if (up) {
45037 items.reverse();
45038 }
45039 var nextItem;
45040 var foundCurrent = false;
45041 for (var i = 0; i < items.length; i++) {
45042 var item = items[i];
45043 if (!foundCurrent) {
45044 if (item === this.activeMenuItem) {
45045 foundCurrent = true;
45046 }
45047 continue;
45048 }
45049 nextItem = item;
45050 break;
45051 }
45052 return nextItem || this.activeMenuItem;
45053 };
45054 AgMenuList.prototype.destroy = function () {
45055 this.clearActiveItem();
45056 _super.prototype.destroy.call(this);
45057 };
45058 __decorate([
45059 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('focusService')
45060 ], AgMenuList.prototype, "focusService", void 0);
45061 __decorate([
45062 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
45063 ], AgMenuList.prototype, "postConstruct", null);
45064 return AgMenuList;
45065}(_tabGuardComp__WEBPACK_IMPORTED_MODULE_2__["TabGuardComp"]));
45066
45067
45068
45069
45070
45071/***/ }),
45072/* 202 */
45073/***/ (function(module, __webpack_exports__, __webpack_require__) {
45074
45075"use strict";
45076__webpack_require__.r(__webpack_exports__);
45077/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TabGuardComp", function() { return TabGuardComp; });
45078/* harmony import */ var _component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
45079/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(42);
45080/* harmony import */ var _tabGuardCtrl__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(203);
45081/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(44);
45082/**
45083 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
45084 * @version v27.3.0
45085 * @link https://www.ag-grid.com/
45086 * @license MIT
45087 */
45088var __extends = (undefined && undefined.__extends) || (function () {
45089 var extendStatics = function (d, b) {
45090 extendStatics = Object.setPrototypeOf ||
45091 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
45092 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
45093 return extendStatics(d, b);
45094 };
45095 return function (d, b) {
45096 extendStatics(d, b);
45097 function __() { this.constructor = d; }
45098 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
45099 };
45100})();
45101var __read = (undefined && undefined.__read) || function (o, n) {
45102 var m = typeof Symbol === "function" && o[Symbol.iterator];
45103 if (!m) return o;
45104 var i = m.call(o), r, ar = [], e;
45105 try {
45106 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
45107 }
45108 catch (error) { e = { error: error }; }
45109 finally {
45110 try {
45111 if (r && !r.done && (m = i["return"])) m.call(i);
45112 }
45113 finally { if (e) throw e.error; }
45114 }
45115 return ar;
45116};
45117var __spread = (undefined && undefined.__spread) || function () {
45118 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
45119 return ar;
45120};
45121
45122
45123
45124
45125var TabGuardComp = /** @class */ (function (_super) {
45126 __extends(TabGuardComp, _super);
45127 function TabGuardComp() {
45128 return _super !== null && _super.apply(this, arguments) || this;
45129 }
45130 TabGuardComp.prototype.initialiseTabGuard = function (params) {
45131 this.eTopGuard = this.createTabGuard('top');
45132 this.eBottomGuard = this.createTabGuard('bottom');
45133 this.eFocusableElement = this.getFocusableElement();
45134 var tabGuards = [this.eTopGuard, this.eBottomGuard];
45135 var compProxy = {
45136 setTabIndex: function (tabIndex) {
45137 tabGuards.forEach(function (tabGuard) { return tabIndex != null ? tabGuard.setAttribute('tabIndex', tabIndex) : tabGuard.removeAttribute('tabIndex'); });
45138 }
45139 };
45140 this.addTabGuards(this.eTopGuard, this.eBottomGuard);
45141 this.tabGuardCtrl = this.createManagedBean(new _tabGuardCtrl__WEBPACK_IMPORTED_MODULE_2__["TabGuardCtrl"]({
45142 comp: compProxy,
45143 eTopGuard: this.eTopGuard,
45144 eBottomGuard: this.eBottomGuard,
45145 eFocusableElement: this.eFocusableElement,
45146 onFocusIn: params.onFocusIn,
45147 onFocusOut: params.onFocusOut,
45148 focusInnerElement: params.focusInnerElement,
45149 handleKeyDown: params.handleKeyDown,
45150 onTabKeyDown: params.onTabKeyDown,
45151 shouldStopEventPropagation: params.shouldStopEventPropagation
45152 }));
45153 };
45154 TabGuardComp.prototype.createTabGuard = function (side) {
45155 var tabGuard = document.createElement('div');
45156 tabGuard.classList.add('ag-tab-guard', "ag-tab-guard-" + side);
45157 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_3__["setAriaRole"])(tabGuard, 'presentation');
45158 return tabGuard;
45159 };
45160 TabGuardComp.prototype.addTabGuards = function (topTabGuard, bottomTabGuard) {
45161 this.eFocusableElement.insertAdjacentElement('afterbegin', topTabGuard);
45162 this.eFocusableElement.insertAdjacentElement('beforeend', bottomTabGuard);
45163 };
45164 TabGuardComp.prototype.removeAllChildrenExceptTabGuards = function () {
45165 var tabGuards = [this.eTopGuard, this.eBottomGuard];
45166 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__["clearElement"])(this.getFocusableElement());
45167 this.addTabGuards.apply(this, __spread(tabGuards));
45168 };
45169 TabGuardComp.prototype.forceFocusOutOfContainer = function (up) {
45170 if (up === void 0) { up = false; }
45171 this.tabGuardCtrl.forceFocusOutOfContainer(up);
45172 };
45173 TabGuardComp.prototype.appendChild = function (newChild, container) {
45174 if (!Object(_utils_dom__WEBPACK_IMPORTED_MODULE_1__["isNodeOrElement"])(newChild)) {
45175 newChild = newChild.getGui();
45176 }
45177 var bottomTabGuard = this.eBottomGuard;
45178 if (bottomTabGuard) {
45179 bottomTabGuard.insertAdjacentElement('beforebegin', newChild);
45180 }
45181 else {
45182 _super.prototype.appendChild.call(this, newChild, container);
45183 }
45184 };
45185 return TabGuardComp;
45186}(_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
45187
45188
45189
45190
45191
45192/***/ }),
45193/* 203 */
45194/***/ (function(module, __webpack_exports__, __webpack_require__) {
45195
45196"use strict";
45197__webpack_require__.r(__webpack_exports__);
45198/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TabGuardCtrl", function() { return TabGuardCtrl; });
45199/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
45200/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
45201/* harmony import */ var _managedFocusFeature__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(64);
45202/**
45203 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
45204 * @version v27.3.0
45205 * @link https://www.ag-grid.com/
45206 * @license MIT
45207 */
45208var __extends = (undefined && undefined.__extends) || (function () {
45209 var extendStatics = function (d, b) {
45210 extendStatics = Object.setPrototypeOf ||
45211 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
45212 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
45213 return extendStatics(d, b);
45214 };
45215 return function (d, b) {
45216 extendStatics(d, b);
45217 function __() { this.constructor = d; }
45218 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
45219 };
45220})();
45221var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
45222 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
45223 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
45224 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
45225 return c > 3 && r && Object.defineProperty(target, key, r), r;
45226};
45227
45228
45229
45230var TabGuardCtrl = /** @class */ (function (_super) {
45231 __extends(TabGuardCtrl, _super);
45232 function TabGuardCtrl(params) {
45233 var _this = _super.call(this) || this;
45234 _this.skipTabGuardFocus = false;
45235 var comp = params.comp, eTopGuard = params.eTopGuard, eBottomGuard = params.eBottomGuard, focusInnerElement = params.focusInnerElement, onFocusIn = params.onFocusIn, onFocusOut = params.onFocusOut, shouldStopEventPropagation = params.shouldStopEventPropagation, onTabKeyDown = params.onTabKeyDown, handleKeyDown = params.handleKeyDown, eFocusableElement = params.eFocusableElement;
45236 _this.comp = comp;
45237 _this.eTopGuard = eTopGuard;
45238 _this.eBottomGuard = eBottomGuard;
45239 _this.providedFocusInnerElement = focusInnerElement;
45240 _this.eFocusableElement = eFocusableElement;
45241 _this.providedFocusIn = onFocusIn;
45242 _this.providedFocusOut = onFocusOut;
45243 _this.providedShouldStopEventPropagation = shouldStopEventPropagation;
45244 _this.providedOnTabKeyDown = onTabKeyDown;
45245 _this.providedHandleKeyDown = handleKeyDown;
45246 return _this;
45247 }
45248 TabGuardCtrl.prototype.postConstruct = function () {
45249 var _this = this;
45250 this.createManagedBean(new _managedFocusFeature__WEBPACK_IMPORTED_MODULE_2__["ManagedFocusFeature"](this.eFocusableElement, {
45251 shouldStopEventPropagation: function () { return _this.shouldStopEventPropagation(); },
45252 onTabKeyDown: function (e) { return _this.onTabKeyDown(e); },
45253 handleKeyDown: function (e) { return _this.handleKeyDown(e); },
45254 onFocusIn: function (e) { return _this.onFocusIn(e); },
45255 onFocusOut: function (e) { return _this.onFocusOut(e); }
45256 }));
45257 this.activateTabGuards();
45258 [this.eTopGuard, this.eBottomGuard].forEach(function (guard) { return _this.addManagedListener(guard, 'focus', _this.onFocus.bind(_this)); });
45259 };
45260 TabGuardCtrl.prototype.handleKeyDown = function (e) {
45261 if (this.providedHandleKeyDown) {
45262 this.providedHandleKeyDown(e);
45263 }
45264 };
45265 TabGuardCtrl.prototype.tabGuardsAreActive = function () {
45266 return !!this.eTopGuard && this.eTopGuard.hasAttribute('tabIndex');
45267 };
45268 TabGuardCtrl.prototype.shouldStopEventPropagation = function () {
45269 if (this.providedShouldStopEventPropagation) {
45270 return this.providedShouldStopEventPropagation();
45271 }
45272 return false;
45273 };
45274 TabGuardCtrl.prototype.activateTabGuards = function () {
45275 this.comp.setTabIndex(this.getGridTabIndex());
45276 };
45277 TabGuardCtrl.prototype.deactivateTabGuards = function () {
45278 this.comp.setTabIndex();
45279 };
45280 TabGuardCtrl.prototype.onFocus = function (e) {
45281 if (this.skipTabGuardFocus) {
45282 this.skipTabGuardFocus = false;
45283 return;
45284 }
45285 var fromBottom = e.target === this.eBottomGuard;
45286 if (this.providedFocusInnerElement) {
45287 this.providedFocusInnerElement(fromBottom);
45288 }
45289 else {
45290 this.focusInnerElement(fromBottom);
45291 }
45292 };
45293 TabGuardCtrl.prototype.onFocusIn = function (e) {
45294 if (this.providedFocusIn && this.providedFocusIn(e)) {
45295 return;
45296 }
45297 this.deactivateTabGuards();
45298 };
45299 TabGuardCtrl.prototype.onFocusOut = function (e) {
45300 if (this.providedFocusOut && this.providedFocusOut(e)) {
45301 return;
45302 }
45303 if (!this.eFocusableElement.contains(e.relatedTarget)) {
45304 this.activateTabGuards();
45305 }
45306 };
45307 TabGuardCtrl.prototype.onTabKeyDown = function (e) {
45308 var _this = this;
45309 if (this.providedOnTabKeyDown) {
45310 this.providedOnTabKeyDown(e);
45311 return;
45312 }
45313 if (e.defaultPrevented) {
45314 return;
45315 }
45316 var tabGuardsAreActive = this.tabGuardsAreActive();
45317 if (tabGuardsAreActive) {
45318 this.deactivateTabGuards();
45319 }
45320 var nextRoot = this.getNextFocusableElement(e.shiftKey);
45321 if (tabGuardsAreActive) {
45322 // ensure the tab guards are only re-instated once the event has finished processing, to avoid the browser
45323 // tabbing to the tab guard from inside the component
45324 setTimeout(function () { return _this.activateTabGuards(); }, 0);
45325 }
45326 if (!nextRoot) {
45327 return;
45328 }
45329 nextRoot.focus();
45330 e.preventDefault();
45331 };
45332 TabGuardCtrl.prototype.getGridTabIndex = function () {
45333 return this.gridOptionsWrapper.getGridTabIndex();
45334 };
45335 TabGuardCtrl.prototype.focusInnerElement = function (fromBottom) {
45336 if (fromBottom === void 0) { fromBottom = false; }
45337 var focusable = this.focusService.findFocusableElements(this.eFocusableElement);
45338 if (this.tabGuardsAreActive()) {
45339 // remove tab guards from this component from list of focusable elements
45340 focusable.splice(0, 1);
45341 focusable.splice(focusable.length - 1, 1);
45342 }
45343 if (!focusable.length) {
45344 return;
45345 }
45346 focusable[fromBottom ? focusable.length - 1 : 0].focus();
45347 };
45348 TabGuardCtrl.prototype.getNextFocusableElement = function (backwards) {
45349 return this.focusService.findNextFocusableElement(this.eFocusableElement, false, backwards);
45350 };
45351 TabGuardCtrl.prototype.forceFocusOutOfContainer = function (up) {
45352 if (up === void 0) { up = false; }
45353 var tabGuardToFocus = up ? this.eTopGuard : this.eBottomGuard;
45354 this.activateTabGuards();
45355 this.skipTabGuardFocus = true;
45356 tabGuardToFocus.focus();
45357 };
45358 __decorate([
45359 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('focusService')
45360 ], TabGuardCtrl.prototype, "focusService", void 0);
45361 __decorate([
45362 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
45363 ], TabGuardCtrl.prototype, "postConstruct", null);
45364 return TabGuardCtrl;
45365}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
45366
45367
45368
45369
45370
45371/***/ }),
45372/* 204 */
45373/***/ (function(module, __webpack_exports__, __webpack_require__) {
45374
45375"use strict";
45376__webpack_require__.r(__webpack_exports__);
45377/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgMenuPanel", function() { return AgMenuPanel; });
45378/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
45379/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(65);
45380/* harmony import */ var _tabGuardComp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(202);
45381/**
45382 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
45383 * @version v27.3.0
45384 * @link https://www.ag-grid.com/
45385 * @license MIT
45386 */
45387var __extends = (undefined && undefined.__extends) || (function () {
45388 var extendStatics = function (d, b) {
45389 extendStatics = Object.setPrototypeOf ||
45390 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
45391 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
45392 return extendStatics(d, b);
45393 };
45394 return function (d, b) {
45395 extendStatics(d, b);
45396 function __() { this.constructor = d; }
45397 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
45398 };
45399})();
45400var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
45401 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
45402 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
45403 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
45404 return c > 3 && r && Object.defineProperty(target, key, r), r;
45405};
45406
45407
45408
45409var AgMenuPanel = /** @class */ (function (_super) {
45410 __extends(AgMenuPanel, _super);
45411 function AgMenuPanel(wrappedComponent) {
45412 var _this = _super.call(this) || this;
45413 _this.wrappedComponent = wrappedComponent;
45414 _this.setTemplateFromElement(wrappedComponent.getGui());
45415 return _this;
45416 }
45417 AgMenuPanel.prototype.postConstruct = function () {
45418 var _this = this;
45419 this.initialiseTabGuard({
45420 onTabKeyDown: function (e) { return _this.onTabKeyDown(e); },
45421 handleKeyDown: function (e) { return _this.handleKeyDown(e); }
45422 });
45423 };
45424 AgMenuPanel.prototype.handleKeyDown = function (e) {
45425 if (e.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_1__["KeyCode"].ESCAPE) {
45426 this.closePanel();
45427 }
45428 };
45429 AgMenuPanel.prototype.onTabKeyDown = function (e) {
45430 if (e.defaultPrevented) {
45431 return;
45432 }
45433 this.closePanel();
45434 e.preventDefault();
45435 };
45436 AgMenuPanel.prototype.closePanel = function () {
45437 var menuItem = this.parentComponent;
45438 menuItem.closeSubMenu();
45439 setTimeout(function () { return menuItem.getGui().focus(); }, 0);
45440 };
45441 __decorate([
45442 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
45443 ], AgMenuPanel.prototype, "postConstruct", null);
45444 return AgMenuPanel;
45445}(_tabGuardComp__WEBPACK_IMPORTED_MODULE_2__["TabGuardComp"]));
45446
45447
45448
45449
45450
45451/***/ }),
45452/* 205 */
45453/***/ (function(module, __webpack_exports__, __webpack_require__) {
45454
45455"use strict";
45456__webpack_require__.r(__webpack_exports__);
45457/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PopupService", function() { return PopupService; });
45458/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
45459/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(23);
45460/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(20);
45461/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42);
45462/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(18);
45463/* harmony import */ var _utils_event__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(21);
45464/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(65);
45465/* harmony import */ var _focusService__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(206);
45466/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(37);
45467/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(44);
45468/**
45469 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
45470 * @version v27.3.0
45471 * @link https://www.ag-grid.com/
45472 * @license MIT
45473 */
45474var __extends = (undefined && undefined.__extends) || (function () {
45475 var extendStatics = function (d, b) {
45476 extendStatics = Object.setPrototypeOf ||
45477 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
45478 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
45479 return extendStatics(d, b);
45480 };
45481 return function (d, b) {
45482 extendStatics(d, b);
45483 function __() { this.constructor = d; }
45484 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
45485 };
45486})();
45487var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
45488 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
45489 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
45490 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
45491 return c > 3 && r && Object.defineProperty(target, key, r), r;
45492};
45493
45494
45495
45496
45497
45498
45499
45500
45501
45502
45503var DIRECTION;
45504(function (DIRECTION) {
45505 DIRECTION[DIRECTION["vertical"] = 0] = "vertical";
45506 DIRECTION[DIRECTION["horizontal"] = 1] = "horizontal";
45507})(DIRECTION || (DIRECTION = {}));
45508var instanceIdSeq = 0;
45509var PopupService = /** @class */ (function (_super) {
45510 __extends(PopupService, _super);
45511 function PopupService() {
45512 var _this = _super !== null && _super.apply(this, arguments) || this;
45513 _this.popupList = [];
45514 return _this;
45515 }
45516 PopupService.prototype.postConstruct = function () {
45517 var _this = this;
45518 this.ctrlsService.whenReady(function (p) {
45519 _this.gridCtrl = p.gridCtrl;
45520 _this.addManagedListener(_this.gridCtrl, _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_KEYBOARD_FOCUS, function () {
45521 _this.popupList.forEach(function (popup) { return popup.element.classList.add(_focusService__WEBPACK_IMPORTED_MODULE_7__["FocusService"].AG_KEYBOARD_FOCUS); });
45522 });
45523 _this.addManagedListener(_this.gridCtrl, _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_MOUSE_FOCUS, function () {
45524 _this.popupList.forEach(function (popup) { return popup.element.classList.remove(_focusService__WEBPACK_IMPORTED_MODULE_7__["FocusService"].AG_KEYBOARD_FOCUS); });
45525 });
45526 });
45527 };
45528 PopupService.prototype.getPopupParent = function () {
45529 var ePopupParent = this.gridOptionsWrapper.getPopupParent();
45530 if (ePopupParent) {
45531 return ePopupParent;
45532 }
45533 return this.gridCtrl.getGui();
45534 };
45535 PopupService.prototype.positionPopupForMenu = function (params) {
45536 var sourceRect = params.eventSource.getBoundingClientRect();
45537 var parentRect = this.getParentRect();
45538 var y = this.keepXYWithinBounds(params.ePopup, sourceRect.top - parentRect.top, DIRECTION.vertical);
45539 var minWidth = (params.ePopup.clientWidth > 0) ? params.ePopup.clientWidth : 200;
45540 params.ePopup.style.minWidth = minWidth + "px";
45541 var widthOfParent = parentRect.right - parentRect.left;
45542 var maxX = widthOfParent - minWidth;
45543 // the x position of the popup depends on RTL or LTR. for normal cases, LTR, we put the child popup
45544 // to the right, unless it doesn't fit and we then put it to the left. for RTL it's the other way around,
45545 // we try place it first to the left, and then if not to the right.
45546 var x;
45547 if (this.gridOptionsWrapper.isEnableRtl()) {
45548 // for RTL, try left first
45549 x = xLeftPosition();
45550 if (x < 0) {
45551 x = xRightPosition();
45552 }
45553 if (x > maxX) {
45554 x = 0;
45555 }
45556 }
45557 else {
45558 // for LTR, try right first
45559 x = xRightPosition();
45560 if (x > maxX) {
45561 x = xLeftPosition();
45562 }
45563 if (x < 0) {
45564 x = 0;
45565 }
45566 }
45567 params.ePopup.style.left = x + "px";
45568 params.ePopup.style.top = y + "px";
45569 function xRightPosition() {
45570 return sourceRect.right - parentRect.left - 2;
45571 }
45572 function xLeftPosition() {
45573 return sourceRect.left - parentRect.left - minWidth;
45574 }
45575 };
45576 PopupService.prototype.positionPopupUnderMouseEvent = function (params) {
45577 var ePopup = params.ePopup, nudgeX = params.nudgeX, nudgeY = params.nudgeY;
45578 var _a = this.calculatePointerAlign(params.mouseEvent), x = _a.x, y = _a.y;
45579 this.positionPopup({
45580 ePopup: ePopup,
45581 x: x,
45582 y: y,
45583 nudgeX: nudgeX,
45584 nudgeY: nudgeY,
45585 keepWithinBounds: true
45586 });
45587 this.callPostProcessPopup(params.type, params.ePopup, null, params.mouseEvent, params.column, params.rowNode);
45588 };
45589 PopupService.prototype.calculatePointerAlign = function (e) {
45590 var parentRect = this.getParentRect();
45591 return {
45592 x: e.clientX - parentRect.left,
45593 y: e.clientY - parentRect.top
45594 };
45595 };
45596 PopupService.prototype.positionPopupUnderComponent = function (params) {
45597 var sourceRect = params.eventSource.getBoundingClientRect();
45598 var alignSide = params.alignSide || 'left';
45599 var parentRect = this.getParentRect();
45600 var x = sourceRect.left - parentRect.left;
45601 if (alignSide === 'right') {
45602 x -= (params.ePopup.offsetWidth - sourceRect.width);
45603 }
45604 this.positionPopup({
45605 ePopup: params.ePopup,
45606 nudgeX: params.nudgeX,
45607 nudgeY: params.nudgeY,
45608 x: x,
45609 y: sourceRect.top - parentRect.top + sourceRect.height,
45610 keepWithinBounds: params.keepWithinBounds
45611 });
45612 this.callPostProcessPopup(params.type, params.ePopup, params.eventSource, null, params.column, params.rowNode);
45613 };
45614 PopupService.prototype.positionPopupOverComponent = function (params) {
45615 var sourceRect = params.eventSource.getBoundingClientRect();
45616 var parentRect = this.getParentRect();
45617 this.positionPopup({
45618 ePopup: params.ePopup,
45619 nudgeX: params.nudgeX,
45620 nudgeY: params.nudgeY,
45621 x: sourceRect.left - parentRect.left,
45622 y: sourceRect.top - parentRect.top,
45623 keepWithinBounds: params.keepWithinBounds
45624 });
45625 this.callPostProcessPopup(params.type, params.ePopup, params.eventSource, null, params.column, params.rowNode);
45626 };
45627 PopupService.prototype.callPostProcessPopup = function (type, ePopup, eventSource, mouseEvent, column, rowNode) {
45628 var callback = this.gridOptionsWrapper.getPostProcessPopupFunc();
45629 if (callback) {
45630 var params = {
45631 column: column,
45632 rowNode: rowNode,
45633 ePopup: ePopup,
45634 type: type,
45635 eventSource: eventSource,
45636 mouseEvent: mouseEvent
45637 };
45638 callback(params);
45639 }
45640 };
45641 PopupService.prototype.positionPopup = function (params) {
45642 var ePopup = params.ePopup, keepWithinBounds = params.keepWithinBounds, nudgeX = params.nudgeX, nudgeY = params.nudgeY;
45643 var x = params.x, y = params.y;
45644 if (nudgeX) {
45645 x += nudgeX;
45646 }
45647 if (nudgeY) {
45648 y += nudgeY;
45649 }
45650 // if popup is overflowing to the bottom, move it up
45651 if (keepWithinBounds) {
45652 x = this.keepXYWithinBounds(ePopup, x, DIRECTION.horizontal);
45653 y = this.keepXYWithinBounds(ePopup, y, DIRECTION.vertical);
45654 }
45655 ePopup.style.left = x + "px";
45656 ePopup.style.top = y + "px";
45657 };
45658 PopupService.prototype.getActivePopups = function () {
45659 return this.popupList.map(function (popup) { return popup.element; });
45660 };
45661 PopupService.prototype.getPopupList = function () {
45662 return this.popupList;
45663 };
45664 PopupService.prototype.getParentRect = function () {
45665 // subtract the popup parent borders, because popupParent.getBoundingClientRect
45666 // returns the rect outside the borders, but the 0,0 coordinate for absolute
45667 // positioning is inside the border, leading the popup to be off by the width
45668 // of the border
45669 var eDocument = this.gridOptionsWrapper.getDocument();
45670 var popupParent = this.getPopupParent();
45671 if (popupParent === eDocument.body) {
45672 popupParent = eDocument.documentElement;
45673 }
45674 var style = getComputedStyle(popupParent);
45675 var bounds = popupParent.getBoundingClientRect();
45676 return {
45677 top: bounds.top + parseFloat(style.borderTopWidth) || 0,
45678 left: bounds.left + parseFloat(style.borderLeftWidth) || 0,
45679 right: bounds.right + parseFloat(style.borderRightWidth) || 0,
45680 bottom: bounds.bottom + parseFloat(style.borderBottomWidth) || 0,
45681 };
45682 };
45683 PopupService.prototype.keepXYWithinBounds = function (ePopup, position, direction) {
45684 var isVertical = direction === DIRECTION.vertical;
45685 var sizeProperty = isVertical ? 'clientHeight' : 'clientWidth';
45686 var anchorProperty = isVertical ? 'top' : 'left';
45687 var offsetProperty = isVertical ? 'offsetHeight' : 'offsetWidth';
45688 var scrollPositionProperty = isVertical ? 'scrollTop' : 'scrollLeft';
45689 var eDocument = this.gridOptionsWrapper.getDocument();
45690 var docElement = eDocument.documentElement;
45691 var popupParent = this.getPopupParent();
45692 var parentRect = popupParent.getBoundingClientRect();
45693 var documentRect = eDocument.documentElement.getBoundingClientRect();
45694 var isBody = popupParent === eDocument.body;
45695 var offsetSize = ePopup[offsetProperty];
45696 var getSize = isVertical ? _utils_dom__WEBPACK_IMPORTED_MODULE_3__["getAbsoluteHeight"] : _utils_dom__WEBPACK_IMPORTED_MODULE_3__["getAbsoluteWidth"];
45697 var sizeOfParent = isBody ? (getSize(docElement) + docElement[scrollPositionProperty]) : popupParent[sizeProperty];
45698 if (isBody) {
45699 sizeOfParent -= Math.abs(documentRect[anchorProperty] - parentRect[anchorProperty]);
45700 }
45701 var max = sizeOfParent - offsetSize;
45702 return Math.min(Math.max(position, 0), Math.abs(max));
45703 };
45704 PopupService.prototype.keepPopupPositionedRelativeTo = function (params) {
45705 var _this = this;
45706 var eParent = this.getPopupParent();
45707 var parentRect = eParent.getBoundingClientRect();
45708 var sourceRect = params.element.getBoundingClientRect();
45709 var initialDiffTop = parentRect.top - sourceRect.top;
45710 var initialDiffLeft = parentRect.left - sourceRect.left;
45711 var lastDiffTop = initialDiffTop;
45712 var lastDiffLeft = initialDiffLeft;
45713 var topPx = params.ePopup.style.top;
45714 var top = parseInt(topPx.substring(0, topPx.length - 1), 10);
45715 var leftPx = params.ePopup.style.left;
45716 var left = parseInt(leftPx.substring(0, leftPx.length - 1), 10);
45717 return new _utils__WEBPACK_IMPORTED_MODULE_8__["AgPromise"](function (resolve) {
45718 _this.getFrameworkOverrides().setInterval(function () {
45719 var pRect = eParent.getBoundingClientRect();
45720 var sRect = params.element.getBoundingClientRect();
45721 var elementNotInDom = sRect.top == 0 && sRect.left == 0 && sRect.height == 0 && sRect.width == 0;
45722 if (elementNotInDom) {
45723 params.hidePopup();
45724 return;
45725 }
45726 var currentDiffTop = pRect.top - sRect.top;
45727 if (currentDiffTop != lastDiffTop) {
45728 var newTop = _this.keepXYWithinBounds(params.ePopup, top + initialDiffTop - currentDiffTop, DIRECTION.vertical);
45729 params.ePopup.style.top = newTop + "px";
45730 }
45731 lastDiffTop = currentDiffTop;
45732 var currentDiffLeft = pRect.left - sRect.left;
45733 if (currentDiffLeft != lastDiffLeft) {
45734 var newLeft = _this.keepXYWithinBounds(params.ePopup, left + initialDiffLeft - currentDiffLeft, DIRECTION.horizontal);
45735 params.ePopup.style.left = newLeft + "px";
45736 }
45737 lastDiffLeft = currentDiffLeft;
45738 }, 200).then(function (intervalId) {
45739 var result = function () {
45740 if (intervalId != null) {
45741 window.clearInterval(intervalId);
45742 }
45743 };
45744 resolve(result);
45745 });
45746 });
45747 };
45748 PopupService.prototype.addPopup = function (params) {
45749 var _this = this;
45750 var modal = params.modal, eChild = params.eChild, closeOnEsc = params.closeOnEsc, closedCallback = params.closedCallback, click = params.click, alwaysOnTop = params.alwaysOnTop, afterGuiAttached = params.afterGuiAttached, positionCallback = params.positionCallback, anchorToElement = params.anchorToElement, ariaLabel = params.ariaLabel;
45751 var eDocument = this.gridOptionsWrapper.getDocument();
45752 var destroyPositionTracker = new _utils__WEBPACK_IMPORTED_MODULE_8__["AgPromise"](function (resolve) { return resolve(function () { }); });
45753 if (!eDocument) {
45754 console.warn('ag-grid: could not find the document, document is empty');
45755 return { hideFunc: function () { }, stopAnchoringPromise: destroyPositionTracker };
45756 }
45757 var pos = this.popupList.findIndex(function (popup) { return popup.element === eChild; });
45758 if (pos !== -1) {
45759 var popup = this.popupList[pos];
45760 return { hideFunc: popup.hideFunc, stopAnchoringPromise: popup.stopAnchoringPromise };
45761 }
45762 var ePopupParent = this.getPopupParent();
45763 if (eChild.style.top == null) {
45764 eChild.style.top = '0px';
45765 }
45766 if (eChild.style.left == null) {
45767 eChild.style.left = '0px';
45768 }
45769 // add env CSS class to child, in case user provided a popup parent, which means
45770 // theme class may be missing
45771 var eWrapper = document.createElement('div');
45772 var theme = this.environment.getTheme().theme;
45773 if (theme) {
45774 eWrapper.classList.add(theme);
45775 }
45776 eWrapper.classList.add('ag-popup');
45777 eChild.classList.add(this.gridOptionsWrapper.isEnableRtl() ? 'ag-rtl' : 'ag-ltr', 'ag-popup-child');
45778 if (!eChild.hasAttribute('role')) {
45779 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_9__["setAriaRole"])(eChild, 'dialog');
45780 }
45781 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_9__["setAriaLabel"])(eChild, ariaLabel);
45782 if (this.focusService.isKeyboardMode()) {
45783 eChild.classList.add(_focusService__WEBPACK_IMPORTED_MODULE_7__["FocusService"].AG_KEYBOARD_FOCUS);
45784 }
45785 eWrapper.appendChild(eChild);
45786 ePopupParent.appendChild(eWrapper);
45787 if (alwaysOnTop) {
45788 this.setAlwaysOnTop(eWrapper, true);
45789 }
45790 else {
45791 this.bringPopupToFront(eWrapper);
45792 }
45793 var popupHidden = false;
45794 var hidePopupOnKeyboardEvent = function (event) {
45795 if (!eWrapper.contains(eDocument.activeElement)) {
45796 return;
45797 }
45798 var key = event.key;
45799 if (key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_6__["KeyCode"].ESCAPE) {
45800 hidePopup({ keyboardEvent: event });
45801 }
45802 };
45803 var hidePopupOnMouseEvent = function (event) { return hidePopup({ mouseEvent: event }); };
45804 var hidePopupOnTouchEvent = function (event) { return hidePopup({ touchEvent: event }); };
45805 var hidePopup = function (popupParams) {
45806 if (popupParams === void 0) { popupParams = {}; }
45807 var mouseEvent = popupParams.mouseEvent, touchEvent = popupParams.touchEvent, keyboardEvent = popupParams.keyboardEvent;
45808 if (
45809 // we don't hide popup if the event was on the child, or any
45810 // children of this child
45811 _this.isEventFromCurrentPopup({ mouseEvent: mouseEvent, touchEvent: touchEvent }, eChild) ||
45812 // if the event to close is actually the open event, then ignore it
45813 _this.isEventSameChainAsOriginalEvent({ originalMouseEvent: click, mouseEvent: mouseEvent, touchEvent: touchEvent }) ||
45814 // this method should only be called once. the client can have different
45815 // paths, each one wanting to close, so this method may be called multiple times.
45816 popupHidden) {
45817 return;
45818 }
45819 popupHidden = true;
45820 ePopupParent.removeChild(eWrapper);
45821 eDocument.removeEventListener('keydown', hidePopupOnKeyboardEvent);
45822 eDocument.removeEventListener('mousedown', hidePopupOnMouseEvent);
45823 eDocument.removeEventListener('touchstart', hidePopupOnTouchEvent);
45824 eDocument.removeEventListener('contextmenu', hidePopupOnMouseEvent);
45825 _this.eventService.removeEventListener(_events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_DRAG_STARTED, hidePopupOnMouseEvent);
45826 if (closedCallback) {
45827 closedCallback(mouseEvent || touchEvent || keyboardEvent);
45828 }
45829 _this.popupList = _this.popupList.filter(function (popup) { return popup.element !== eChild; });
45830 if (destroyPositionTracker) {
45831 destroyPositionTracker.then(function (destroyFunc) { return destroyFunc && destroyFunc(); });
45832 }
45833 };
45834 if (afterGuiAttached) {
45835 afterGuiAttached({ hidePopup: hidePopup });
45836 }
45837 // if we add these listeners now, then the current mouse
45838 // click will be included, which we don't want
45839 window.setTimeout(function () {
45840 if (closeOnEsc) {
45841 eDocument.addEventListener('keydown', hidePopupOnKeyboardEvent);
45842 }
45843 if (modal) {
45844 eDocument.addEventListener('mousedown', hidePopupOnMouseEvent);
45845 _this.eventService.addEventListener(_events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_DRAG_STARTED, hidePopupOnMouseEvent);
45846 eDocument.addEventListener('touchstart', hidePopupOnTouchEvent);
45847 eDocument.addEventListener('contextmenu', hidePopupOnMouseEvent);
45848 }
45849 }, 0);
45850 if (positionCallback) {
45851 positionCallback();
45852 }
45853 if (anchorToElement) {
45854 // keeps popup positioned under created, eg if context menu, if user scrolls
45855 // using touchpad and the cell moves, it moves the popup to keep it with the cell.
45856 destroyPositionTracker = this.keepPopupPositionedRelativeTo({
45857 element: anchorToElement,
45858 ePopup: eChild,
45859 hidePopup: hidePopup
45860 });
45861 }
45862 this.popupList.push({
45863 element: eChild,
45864 wrapper: eWrapper,
45865 hideFunc: hidePopup,
45866 stopAnchoringPromise: destroyPositionTracker,
45867 instanceId: instanceIdSeq++,
45868 isAnchored: !!anchorToElement
45869 });
45870 return {
45871 hideFunc: hidePopup,
45872 stopAnchoringPromise: destroyPositionTracker
45873 };
45874 };
45875 PopupService.prototype.hasAnchoredPopup = function () {
45876 return this.popupList.some(function (popup) { return popup.isAnchored; });
45877 };
45878 PopupService.prototype.isEventFromCurrentPopup = function (params, target) {
45879 var mouseEvent = params.mouseEvent, touchEvent = params.touchEvent;
45880 var event = mouseEvent ? mouseEvent : touchEvent;
45881 if (!event) {
45882 return false;
45883 }
45884 var indexOfThisChild = this.popupList.findIndex(function (popup) { return popup.element === target; });
45885 if (indexOfThisChild === -1) {
45886 return false;
45887 }
45888 for (var i = indexOfThisChild; i < this.popupList.length; i++) {
45889 var popup = this.popupList[i];
45890 if (Object(_utils_event__WEBPACK_IMPORTED_MODULE_5__["isElementInEventPath"])(popup.element, event)) {
45891 return true;
45892 }
45893 }
45894 // if the user did not write their own Custom Element to be rendered as popup
45895 // and this component has an additional popup element, they should have the
45896 // `ag-custom-component-popup` class to be detected as part of the Custom Component
45897 return this.isElementWithinCustomPopup(event.target);
45898 };
45899 PopupService.prototype.isElementWithinCustomPopup = function (el) {
45900 var eDocument = this.gridOptionsWrapper.getDocument();
45901 while (el && el !== eDocument.body) {
45902 if (el.classList.contains('ag-custom-component-popup') || el.parentElement === null) {
45903 return true;
45904 }
45905 el = el.parentElement;
45906 }
45907 return false;
45908 };
45909 // in some browsers, the context menu event can be fired before the click event, which means
45910 // the context menu event could open the popup, but then the click event closes it straight away.
45911 PopupService.prototype.isEventSameChainAsOriginalEvent = function (params) {
45912 var originalMouseEvent = params.originalMouseEvent, mouseEvent = params.mouseEvent, touchEvent = params.touchEvent;
45913 // we check the coordinates of the event, to see if it's the same event. there is a 1 / 1000 chance that
45914 // the event is a different event, however that is an edge case that is not very relevant (the user clicking
45915 // twice on the same location isn't a normal path).
45916 // event could be mouse event or touch event.
45917 var mouseEventOrTouch = null;
45918 if (mouseEvent) {
45919 // mouse event can be used direction, it has coordinates
45920 mouseEventOrTouch = mouseEvent;
45921 }
45922 else if (touchEvent) {
45923 // touch event doesn't have coordinates, need it's touch object
45924 mouseEventOrTouch = touchEvent.touches[0];
45925 }
45926 if (mouseEventOrTouch && originalMouseEvent) {
45927 // for x, allow 4px margin, to cover iPads, where touch (which opens menu) is followed
45928 // by browser click (when you finger up, touch is interrupted as click in browser)
45929 var screenX_1 = mouseEvent ? mouseEvent.screenX : 0;
45930 var screenY_1 = mouseEvent ? mouseEvent.screenY : 0;
45931 var xMatch = Math.abs(originalMouseEvent.screenX - screenX_1) < 5;
45932 var yMatch = Math.abs(originalMouseEvent.screenY - screenY_1) < 5;
45933 if (xMatch && yMatch) {
45934 return true;
45935 }
45936 }
45937 return false;
45938 };
45939 PopupService.prototype.getWrapper = function (ePopup) {
45940 while (!ePopup.classList.contains('ag-popup') && ePopup.parentElement) {
45941 ePopup = ePopup.parentElement;
45942 }
45943 return ePopup.classList.contains('ag-popup') ? ePopup : null;
45944 };
45945 PopupService.prototype.setAlwaysOnTop = function (ePopup, alwaysOnTop) {
45946 var eWrapper = this.getWrapper(ePopup);
45947 if (!eWrapper) {
45948 return;
45949 }
45950 eWrapper.classList.toggle('ag-always-on-top', !!alwaysOnTop);
45951 if (alwaysOnTop) {
45952 this.bringPopupToFront(eWrapper);
45953 }
45954 };
45955 PopupService.prototype.bringPopupToFront = function (ePopup) {
45956 var parent = this.getPopupParent();
45957 var popupList = Array.prototype.slice.call(parent.querySelectorAll('.ag-popup'));
45958 var popupLen = popupList.length;
45959 var alwaysOnTopList = Array.prototype.slice.call(parent.querySelectorAll('.ag-popup.ag-always-on-top'));
45960 var onTopLength = alwaysOnTopList.length;
45961 var eWrapper = this.getWrapper(ePopup);
45962 if (!eWrapper || popupLen <= 1 || !parent.contains(ePopup)) {
45963 return;
45964 }
45965 var pos = popupList.indexOf(eWrapper);
45966 var innerEls = eWrapper.querySelectorAll('div');
45967 var innerElsScrollMap = [];
45968 innerEls.forEach(function (el) {
45969 if (el.scrollTop !== 0) {
45970 innerElsScrollMap.push([el, el.scrollTop]);
45971 }
45972 });
45973 if (onTopLength) {
45974 var isPopupAlwaysOnTop = eWrapper.classList.contains('ag-always-on-top');
45975 if (isPopupAlwaysOnTop) {
45976 if (pos !== popupLen - 1) {
45977 Object(_utils_array__WEBPACK_IMPORTED_MODULE_4__["last"])(alwaysOnTopList).insertAdjacentElement('afterend', eWrapper);
45978 }
45979 }
45980 else if (pos !== popupLen - onTopLength - 1) {
45981 alwaysOnTopList[0].insertAdjacentElement('beforebegin', eWrapper);
45982 }
45983 }
45984 else if (pos !== popupLen - 1) {
45985 Object(_utils_array__WEBPACK_IMPORTED_MODULE_4__["last"])(popupList).insertAdjacentElement('afterend', eWrapper);
45986 }
45987 while (innerElsScrollMap.length) {
45988 var currentEl = innerElsScrollMap.pop();
45989 currentEl[0].scrollTop = currentEl[1];
45990 }
45991 var params = {
45992 type: 'popupToFront',
45993 api: this.gridOptionsWrapper.getApi(),
45994 columnApi: this.gridOptionsWrapper.getColumnApi(),
45995 eWrapper: eWrapper
45996 };
45997 this.eventService.dispatchEvent(params);
45998 };
45999 __decorate([
46000 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('environment')
46001 ], PopupService.prototype, "environment", void 0);
46002 __decorate([
46003 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('focusService')
46004 ], PopupService.prototype, "focusService", void 0);
46005 __decorate([
46006 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
46007 ], PopupService.prototype, "ctrlsService", void 0);
46008 __decorate([
46009 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
46010 ], PopupService.prototype, "postConstruct", null);
46011 PopupService = __decorate([
46012 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('popupService')
46013 ], PopupService);
46014 return PopupService;
46015}(_context_beanStub__WEBPACK_IMPORTED_MODULE_2__["BeanStub"]));
46016
46017
46018
46019
46020
46021/***/ }),
46022/* 206 */
46023/***/ (function(module, __webpack_exports__, __webpack_require__) {
46024
46025"use strict";
46026__webpack_require__.r(__webpack_exports__);
46027/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FocusService", function() { return FocusService; });
46028/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
46029/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
46030/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23);
46031/* harmony import */ var _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(64);
46032/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(43);
46033/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7);
46034/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(15);
46035/* harmony import */ var _rendering_row_rowCtrl__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(120);
46036/* harmony import */ var _headerRendering_cells_abstractCell_abstractHeaderCellCtrl__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(155);
46037/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(18);
46038/**
46039 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
46040 * @version v27.3.0
46041 * @link https://www.ag-grid.com/
46042 * @license MIT
46043 */
46044var __extends = (undefined && undefined.__extends) || (function () {
46045 var extendStatics = function (d, b) {
46046 extendStatics = Object.setPrototypeOf ||
46047 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
46048 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
46049 return extendStatics(d, b);
46050 };
46051 return function (d, b) {
46052 extendStatics(d, b);
46053 function __() { this.constructor = d; }
46054 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
46055 };
46056})();
46057var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
46058 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
46059 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
46060 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
46061 return c > 3 && r && Object.defineProperty(target, key, r), r;
46062};
46063var __read = (undefined && undefined.__read) || function (o, n) {
46064 var m = typeof Symbol === "function" && o[Symbol.iterator];
46065 if (!m) return o;
46066 var i = m.call(o), r, ar = [], e;
46067 try {
46068 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
46069 }
46070 catch (error) { e = { error: error }; }
46071 finally {
46072 try {
46073 if (r && !r.done && (m = i["return"])) m.call(i);
46074 }
46075 finally { if (e) throw e.error; }
46076 }
46077 return ar;
46078};
46079var __spread = (undefined && undefined.__spread) || function () {
46080 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
46081 return ar;
46082};
46083
46084
46085
46086
46087
46088
46089
46090
46091
46092
46093var FocusService = /** @class */ (function (_super) {
46094 __extends(FocusService, _super);
46095 function FocusService() {
46096 return _super !== null && _super.apply(this, arguments) || this;
46097 }
46098 FocusService_1 = FocusService;
46099 /**
46100 * Adds a gridCore to the list of the gridCores monitoring Keyboard Mode
46101 * in a specific HTMLDocument.
46102 *
46103 * @param doc {Document} - The Document containing the gridCore.
46104 * @param gridCore {GridComp} - The GridCore to be monitored.
46105 */
46106 FocusService.addKeyboardModeEvents = function (doc, controller) {
46107 var docControllers = FocusService_1.instancesMonitored.get(doc);
46108 if (docControllers && docControllers.length > 0) {
46109 if (docControllers.indexOf(controller) === -1) {
46110 docControllers.push(controller);
46111 }
46112 }
46113 else {
46114 FocusService_1.instancesMonitored.set(doc, [controller]);
46115 doc.addEventListener('keydown', FocusService_1.toggleKeyboardMode);
46116 doc.addEventListener('mousedown', FocusService_1.toggleKeyboardMode);
46117 }
46118 };
46119 /**
46120 * Removes a gridCore from the list of the gridCores monitoring Keyboard Mode
46121 * in a specific HTMLDocument.
46122 *
46123 * @param doc {Document} - The Document containing the gridCore.
46124 * @param gridCore {GridComp} - The GridCore to be removed.
46125 */
46126 FocusService.removeKeyboardModeEvents = function (doc, controller) {
46127 var docControllers = FocusService_1.instancesMonitored.get(doc);
46128 var newControllers = [];
46129 if (docControllers && docControllers.length) {
46130 newControllers = __spread(docControllers).filter(function (currentGridCore) { return currentGridCore !== controller; });
46131 FocusService_1.instancesMonitored.set(doc, newControllers);
46132 }
46133 if (newControllers.length === 0) {
46134 doc.removeEventListener('keydown', FocusService_1.toggleKeyboardMode);
46135 doc.removeEventListener('mousedown', FocusService_1.toggleKeyboardMode);
46136 }
46137 };
46138 /**
46139 * This method will be called by `keydown` and `mousedown` events on all Documents monitoring
46140 * KeyboardMode. It will then fire a KEYBOARD_FOCUS, MOUSE_FOCUS on each gridCore present in
46141 * the Document allowing each gridCore to maintain a state for KeyboardMode.
46142 *
46143 * @param event {KeyboardEvent | MouseEvent | TouchEvent} - The event triggered.
46144 */
46145 FocusService.toggleKeyboardMode = function (event) {
46146 var isKeyboardActive = FocusService_1.keyboardModeActive;
46147 var isKeyboardEvent = event.type === 'keydown';
46148 if (isKeyboardEvent) {
46149 // the following keys should not toggle keyboard mode.
46150 if (event.ctrlKey || event.metaKey || event.altKey) {
46151 return;
46152 }
46153 }
46154 if (isKeyboardActive && isKeyboardEvent || !isKeyboardActive && !isKeyboardEvent) {
46155 return;
46156 }
46157 FocusService_1.keyboardModeActive = isKeyboardEvent;
46158 var doc = event.target.ownerDocument;
46159 if (!doc) {
46160 return;
46161 }
46162 var controllersForDoc = FocusService_1.instancesMonitored.get(doc);
46163 if (controllersForDoc) {
46164 controllersForDoc.forEach(function (controller) {
46165 controller.dispatchEvent({ type: isKeyboardEvent ? _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_KEYBOARD_FOCUS : _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_MOUSE_FOCUS });
46166 });
46167 }
46168 };
46169 FocusService.prototype.init = function () {
46170 var _this = this;
46171 var clearFocusedCellListener = this.clearFocusedCell.bind(this);
46172 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_PIVOT_MODE_CHANGED, clearFocusedCellListener);
46173 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_NEW_COLUMNS_LOADED, this.onColumnEverythingChanged.bind(this));
46174 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_GROUP_OPENED, clearFocusedCellListener);
46175 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_COLUMN_ROW_GROUP_CHANGED, clearFocusedCellListener);
46176 this.ctrlsService.whenReady(function (p) {
46177 _this.gridCtrl = p.gridCtrl;
46178 var doc = _this.gridOptionsWrapper.getDocument();
46179 FocusService_1.addKeyboardModeEvents(doc, _this.gridCtrl);
46180 _this.addDestroyFunc(function () { return _this.unregisterGridCompController(_this.gridCtrl); });
46181 });
46182 };
46183 FocusService.prototype.unregisterGridCompController = function (gridCompController) {
46184 var doc = this.gridOptionsWrapper.getDocument();
46185 FocusService_1.removeKeyboardModeEvents(doc, gridCompController);
46186 };
46187 FocusService.prototype.onColumnEverythingChanged = function () {
46188 // if the columns change, check and see if this column still exists. if it does, then
46189 // we can keep the focused cell. if it doesn't, then we need to drop the focused cell.
46190 if (!this.focusedCellPosition) {
46191 return;
46192 }
46193 var col = this.focusedCellPosition.column;
46194 var colFromColumnModel = this.columnModel.getGridColumn(col.getId());
46195 if (col !== colFromColumnModel) {
46196 this.clearFocusedCell();
46197 }
46198 };
46199 FocusService.prototype.isKeyboardMode = function () {
46200 return FocusService_1.keyboardModeActive;
46201 };
46202 // we check if the browser is focusing something, and if it is, and
46203 // it's the cell we think is focused, then return the cell. so this
46204 // methods returns the cell if a) we think it has focus and b) the
46205 // browser thinks it has focus. this then returns nothing if we
46206 // first focus a cell, then second click outside the grid, as then the
46207 // grid cell will still be focused as far as the grid is concerned,
46208 // however the browser focus will have moved somewhere else.
46209 FocusService.prototype.getFocusCellToUseAfterRefresh = function () {
46210 var eDocument = this.gridOptionsWrapper.getDocument();
46211 if (this.gridOptionsWrapper.isSuppressFocusAfterRefresh() || !this.focusedCellPosition) {
46212 return null;
46213 }
46214 // we check that the browser is actually focusing on the grid, if it is not, then
46215 // we have nothing to worry about. we check for ROW data, as this covers both focused Rows (for Full Width Rows)
46216 // and Cells (covers cells as cells live in rows)
46217 if (this.isDomDataMissingInHierarchy(eDocument.activeElement, _rendering_row_rowCtrl__WEBPACK_IMPORTED_MODULE_7__["RowCtrl"].DOM_DATA_KEY_ROW_CTRL)) {
46218 return null;
46219 }
46220 return this.focusedCellPosition;
46221 };
46222 FocusService.prototype.getFocusHeaderToUseAfterRefresh = function () {
46223 var eDocument = this.gridOptionsWrapper.getDocument();
46224 if (this.gridOptionsWrapper.isSuppressFocusAfterRefresh() || !this.focusedHeaderPosition) {
46225 return null;
46226 }
46227 // we check that the browser is actually focusing on the grid, if it is not, then
46228 // we have nothing to worry about
46229 if (this.isDomDataMissingInHierarchy(eDocument.activeElement, _headerRendering_cells_abstractCell_abstractHeaderCellCtrl__WEBPACK_IMPORTED_MODULE_8__["AbstractHeaderCellCtrl"].DOM_DATA_KEY_HEADER_CTRL)) {
46230 return null;
46231 }
46232 return this.focusedHeaderPosition;
46233 };
46234 FocusService.prototype.isDomDataMissingInHierarchy = function (eBrowserCell, key) {
46235 var ePointer = eBrowserCell;
46236 while (ePointer) {
46237 var data = this.gridOptionsWrapper.getDomData(ePointer, key);
46238 if (data) {
46239 return false;
46240 }
46241 ePointer = ePointer.parentNode;
46242 }
46243 return true;
46244 };
46245 FocusService.prototype.clearFocusedCell = function () {
46246 this.focusedCellPosition = null;
46247 this.onCellFocused(false);
46248 };
46249 FocusService.prototype.getFocusedCell = function () {
46250 return this.focusedCellPosition;
46251 };
46252 FocusService.prototype.setFocusedCell = function (rowIndex, colKey, floating, forceBrowserFocus) {
46253 if (forceBrowserFocus === void 0) { forceBrowserFocus = false; }
46254 var gridColumn = this.columnModel.getGridColumn(colKey);
46255 // if column doesn't exist, then blank the focused cell and return. this can happen when user sets new columns,
46256 // and the focused cell is in a column that no longer exists. after columns change, the grid refreshes and tries
46257 // to re-focus the focused cell.
46258 if (!gridColumn) {
46259 this.focusedCellPosition = null;
46260 return;
46261 }
46262 this.focusedCellPosition = gridColumn ? { rowIndex: rowIndex, rowPinned: Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["makeNull"])(floating), column: gridColumn } : null;
46263 this.onCellFocused(forceBrowserFocus);
46264 };
46265 FocusService.prototype.isCellFocused = function (cellPosition) {
46266 if (this.focusedCellPosition == null) {
46267 return false;
46268 }
46269 return this.focusedCellPosition.column === cellPosition.column &&
46270 this.isRowFocused(cellPosition.rowIndex, cellPosition.rowPinned);
46271 };
46272 FocusService.prototype.isRowNodeFocused = function (rowNode) {
46273 return this.isRowFocused(rowNode.rowIndex, rowNode.rowPinned);
46274 };
46275 FocusService.prototype.isHeaderWrapperFocused = function (headerCtrl) {
46276 if (this.focusedHeaderPosition == null) {
46277 return false;
46278 }
46279 var column = headerCtrl.getColumnGroupChild();
46280 var headerRowIndex = headerCtrl.getRowIndex();
46281 var pinned = headerCtrl.getPinned();
46282 var _a = this.focusedHeaderPosition, focusedColumn = _a.column, focusedHeaderRowIndex = _a.headerRowIndex;
46283 return column === focusedColumn &&
46284 headerRowIndex === focusedHeaderRowIndex &&
46285 pinned == focusedColumn.getPinned();
46286 };
46287 FocusService.prototype.clearFocusedHeader = function () {
46288 this.focusedHeaderPosition = null;
46289 };
46290 FocusService.prototype.getFocusedHeader = function () {
46291 return this.focusedHeaderPosition;
46292 };
46293 FocusService.prototype.setFocusedHeader = function (headerRowIndex, column) {
46294 this.focusedHeaderPosition = { headerRowIndex: headerRowIndex, column: column };
46295 };
46296 FocusService.prototype.focusHeaderPosition = function (params) {
46297 var direction = params.direction, fromTab = params.fromTab, allowUserOverride = params.allowUserOverride, event = params.event;
46298 var headerPosition = params.headerPosition;
46299 if (allowUserOverride) {
46300 var gridOptionsWrapper = this.gridOptionsWrapper;
46301 var currentPosition = this.getFocusedHeader();
46302 var headerRowCount = this.headerNavigationService.getHeaderRowCount();
46303 if (fromTab) {
46304 var userFunc = gridOptionsWrapper.getTabToNextHeaderFunc();
46305 if (userFunc) {
46306 var params_1 = {
46307 backwards: direction === 'Before',
46308 previousHeaderPosition: currentPosition,
46309 nextHeaderPosition: headerPosition,
46310 headerRowCount: headerRowCount,
46311 };
46312 headerPosition = userFunc(params_1);
46313 }
46314 }
46315 else {
46316 var userFunc = gridOptionsWrapper.getNavigateToNextHeaderFunc();
46317 if (userFunc && event) {
46318 var params_2 = {
46319 key: event.key,
46320 previousHeaderPosition: currentPosition,
46321 nextHeaderPosition: headerPosition,
46322 headerRowCount: headerRowCount,
46323 event: event,
46324 };
46325 headerPosition = userFunc(params_2);
46326 }
46327 }
46328 }
46329 if (!headerPosition) {
46330 return false;
46331 }
46332 if (headerPosition.headerRowIndex === -1) {
46333 return this.focusGridView(headerPosition.column);
46334 }
46335 this.headerNavigationService.scrollToColumn(headerPosition.column, direction);
46336 var headerRowContainerCtrl = this.ctrlsService.getHeaderRowContainerCtrl(headerPosition.column.getPinned());
46337 // this will automatically call the setFocusedHeader method above
46338 var focusSuccess = headerRowContainerCtrl.focusHeader(headerPosition.headerRowIndex, headerPosition.column, event);
46339 return focusSuccess;
46340 };
46341 FocusService.prototype.focusFirstHeader = function () {
46342 var firstColumn = this.columnModel.getAllDisplayedColumns()[0];
46343 if (!firstColumn) {
46344 return false;
46345 }
46346 if (firstColumn.getParent()) {
46347 firstColumn = this.columnModel.getColumnGroupAtLevel(firstColumn, 0);
46348 }
46349 return this.focusHeaderPosition({
46350 headerPosition: { headerRowIndex: 0, column: firstColumn }
46351 });
46352 };
46353 FocusService.prototype.focusLastHeader = function (event) {
46354 var headerRowIndex = this.headerNavigationService.getHeaderRowCount() - 1;
46355 var column = Object(_utils_array__WEBPACK_IMPORTED_MODULE_9__["last"])(this.columnModel.getAllDisplayedColumns());
46356 return this.focusHeaderPosition({
46357 headerPosition: { headerRowIndex: headerRowIndex, column: column },
46358 event: event
46359 });
46360 };
46361 FocusService.prototype.isAnyCellFocused = function () {
46362 return !!this.focusedCellPosition;
46363 };
46364 FocusService.prototype.isRowFocused = function (rowIndex, floating) {
46365 if (this.focusedCellPosition == null) {
46366 return false;
46367 }
46368 return this.focusedCellPosition.rowIndex === rowIndex && this.focusedCellPosition.rowPinned === Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["makeNull"])(floating);
46369 };
46370 FocusService.prototype.findFocusableElements = function (rootNode, exclude, onlyUnmanaged) {
46371 if (onlyUnmanaged === void 0) { onlyUnmanaged = false; }
46372 var focusableString = _constants_constants__WEBPACK_IMPORTED_MODULE_6__["Constants"].FOCUSABLE_SELECTOR;
46373 var excludeString = _constants_constants__WEBPACK_IMPORTED_MODULE_6__["Constants"].FOCUSABLE_EXCLUDE;
46374 if (exclude) {
46375 excludeString += ', ' + exclude;
46376 }
46377 if (onlyUnmanaged) {
46378 excludeString += ', [tabindex="-1"]';
46379 }
46380 var nodes = Array.prototype.slice.apply(rootNode.querySelectorAll(focusableString));
46381 var excludeNodes = Array.prototype.slice.apply(rootNode.querySelectorAll(excludeString));
46382 if (!excludeNodes.length) {
46383 return nodes;
46384 }
46385 var diff = function (a, b) { return a.filter(function (element) { return b.indexOf(element) === -1; }); };
46386 return diff(nodes, excludeNodes);
46387 };
46388 FocusService.prototype.focusInto = function (rootNode, up, onlyUnmanaged) {
46389 if (up === void 0) { up = false; }
46390 if (onlyUnmanaged === void 0) { onlyUnmanaged = false; }
46391 var focusableElements = this.findFocusableElements(rootNode, null, onlyUnmanaged);
46392 var toFocus = up ? Object(_utils_array__WEBPACK_IMPORTED_MODULE_9__["last"])(focusableElements) : focusableElements[0];
46393 if (toFocus) {
46394 toFocus.focus();
46395 return true;
46396 }
46397 return false;
46398 };
46399 FocusService.prototype.findNextFocusableElement = function (rootNode, onlyManaged, backwards) {
46400 if (rootNode === void 0) { rootNode = this.eGridDiv; }
46401 var focusable = this.findFocusableElements(rootNode, onlyManaged ? ':not([tabindex="-1"])' : null);
46402 var eDocument = this.gridOptionsWrapper.getDocument();
46403 var activeEl = eDocument.activeElement;
46404 var currentIndex;
46405 if (onlyManaged) {
46406 currentIndex = focusable.findIndex(function (el) { return el.contains(activeEl); });
46407 }
46408 else {
46409 currentIndex = focusable.indexOf(activeEl);
46410 }
46411 var nextIndex = currentIndex + (backwards ? -1 : 1);
46412 if (nextIndex < 0 || nextIndex >= focusable.length) {
46413 return null;
46414 }
46415 return focusable[nextIndex];
46416 };
46417 FocusService.prototype.isFocusUnderManagedComponent = function (rootNode) {
46418 var eDocument = this.gridOptionsWrapper.getDocument();
46419 var managedContainers = rootNode.querySelectorAll("." + _widgets_managedFocusFeature__WEBPACK_IMPORTED_MODULE_3__["ManagedFocusFeature"].FOCUS_MANAGED_CLASS);
46420 if (!managedContainers.length) {
46421 return false;
46422 }
46423 for (var i = 0; i < managedContainers.length; i++) {
46424 if (managedContainers[i].contains(eDocument.activeElement)) {
46425 return true;
46426 }
46427 }
46428 return false;
46429 };
46430 FocusService.prototype.findTabbableParent = function (node, limit) {
46431 if (limit === void 0) { limit = 5; }
46432 var counter = 0;
46433 while (node && Object(_utils_browser__WEBPACK_IMPORTED_MODULE_4__["getTabIndex"])(node) === null && ++counter <= limit) {
46434 node = node.parentElement;
46435 }
46436 if (Object(_utils_browser__WEBPACK_IMPORTED_MODULE_4__["getTabIndex"])(node) === null) {
46437 return null;
46438 }
46439 return node;
46440 };
46441 FocusService.prototype.onCellFocused = function (forceBrowserFocus) {
46442 var event = {
46443 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_CELL_FOCUSED,
46444 forceBrowserFocus: forceBrowserFocus,
46445 rowIndex: null,
46446 column: null,
46447 floating: null,
46448 api: this.gridApi,
46449 columnApi: this.columnApi,
46450 rowPinned: null,
46451 isFullWidthCell: false
46452 };
46453 if (this.focusedCellPosition) {
46454 var rowIndex = event.rowIndex = this.focusedCellPosition.rowIndex;
46455 var rowPinned = event.rowPinned = this.focusedCellPosition.rowPinned;
46456 event.column = this.focusedCellPosition.column;
46457 var rowCtrl = this.rowRenderer.getRowByPosition({ rowIndex: rowIndex, rowPinned: rowPinned });
46458 if (rowCtrl) {
46459 event.isFullWidthCell = rowCtrl.isFullWidth();
46460 }
46461 }
46462 this.eventService.dispatchEvent(event);
46463 };
46464 FocusService.prototype.focusGridView = function (column, backwards) {
46465 // if suppressCellFocus is `true`, it means the user does not want to
46466 // navigate between the cells using tab. Instead, we put focus on either
46467 // the header or after the grid, depending on whether tab or shift-tab was pressed.
46468 if (this.gridOptionsWrapper.isSuppressCellFocus()) {
46469 if (backwards) {
46470 return this.focusLastHeader();
46471 }
46472 return this.focusNextGridCoreContainer(false);
46473 }
46474 var nextRow = backwards
46475 ? this.rowPositionUtils.getLastRow()
46476 : this.rowPositionUtils.getFirstRow();
46477 if (!nextRow) {
46478 return false;
46479 }
46480 var rowIndex = nextRow.rowIndex, rowPinned = nextRow.rowPinned;
46481 var focusedHeader = this.getFocusedHeader();
46482 if (!column && focusedHeader) {
46483 column = focusedHeader.column;
46484 }
46485 if (rowIndex == null || !column) {
46486 return false;
46487 }
46488 this.navigationService.ensureCellVisible({ rowIndex: rowIndex, column: column, rowPinned: rowPinned });
46489 this.setFocusedCell(rowIndex, column, Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["makeNull"])(rowPinned), true);
46490 if (this.rangeService) {
46491 var cellPosition = { rowIndex: rowIndex, rowPinned: rowPinned, column: column };
46492 this.rangeService.setRangeToCell(cellPosition);
46493 }
46494 return true;
46495 };
46496 FocusService.prototype.focusNextGridCoreContainer = function (backwards) {
46497 if (this.gridCtrl.focusNextInnerContainer(backwards)) {
46498 return true;
46499 }
46500 if (!backwards && !this.gridCtrl.isDetailGrid()) {
46501 this.gridCtrl.forceFocusOutOfContainer();
46502 }
46503 return false;
46504 };
46505 var FocusService_1;
46506 FocusService.AG_KEYBOARD_FOCUS = 'ag-keyboard-focus';
46507 FocusService.keyboardModeActive = false;
46508 FocusService.instancesMonitored = new Map();
46509 __decorate([
46510 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('eGridDiv')
46511 ], FocusService.prototype, "eGridDiv", void 0);
46512 __decorate([
46513 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
46514 ], FocusService.prototype, "columnModel", void 0);
46515 __decorate([
46516 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('headerNavigationService')
46517 ], FocusService.prototype, "headerNavigationService", void 0);
46518 __decorate([
46519 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
46520 ], FocusService.prototype, "columnApi", void 0);
46521 __decorate([
46522 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
46523 ], FocusService.prototype, "gridApi", void 0);
46524 __decorate([
46525 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowRenderer')
46526 ], FocusService.prototype, "rowRenderer", void 0);
46527 __decorate([
46528 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowPositionUtils')
46529 ], FocusService.prototype, "rowPositionUtils", void 0);
46530 __decorate([
46531 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Optional"])('rangeService')
46532 ], FocusService.prototype, "rangeService", void 0);
46533 __decorate([
46534 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('navigationService')
46535 ], FocusService.prototype, "navigationService", void 0);
46536 __decorate([
46537 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
46538 ], FocusService.prototype, "ctrlsService", void 0);
46539 __decorate([
46540 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
46541 ], FocusService.prototype, "init", null);
46542 FocusService = FocusService_1 = __decorate([
46543 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('focusService')
46544 ], FocusService);
46545 return FocusService;
46546}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
46547
46548
46549
46550
46551
46552/***/ }),
46553/* 207 */
46554/***/ (function(module, __webpack_exports__, __webpack_require__) {
46555
46556"use strict";
46557__webpack_require__.r(__webpack_exports__);
46558/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VirtualList", function() { return VirtualList; });
46559/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
46560/* harmony import */ var _componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
46561/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(44);
46562/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(65);
46563/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(14);
46564/* harmony import */ var _tabGuardComp__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(202);
46565/**
46566 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
46567 * @version v27.3.0
46568 * @link https://www.ag-grid.com/
46569 * @license MIT
46570 */
46571var __extends = (undefined && undefined.__extends) || (function () {
46572 var extendStatics = function (d, b) {
46573 extendStatics = Object.setPrototypeOf ||
46574 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
46575 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
46576 return extendStatics(d, b);
46577 };
46578 return function (d, b) {
46579 extendStatics(d, b);
46580 function __() { this.constructor = d; }
46581 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
46582 };
46583})();
46584var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
46585 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
46586 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
46587 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
46588 return c > 3 && r && Object.defineProperty(target, key, r), r;
46589};
46590
46591
46592
46593
46594
46595
46596var VirtualList = /** @class */ (function (_super) {
46597 __extends(VirtualList, _super);
46598 function VirtualList(cssIdentifier, ariaRole, listName) {
46599 if (cssIdentifier === void 0) { cssIdentifier = 'default'; }
46600 if (ariaRole === void 0) { ariaRole = 'listbox'; }
46601 var _this = _super.call(this, VirtualList.getTemplate(cssIdentifier)) || this;
46602 _this.cssIdentifier = cssIdentifier;
46603 _this.ariaRole = ariaRole;
46604 _this.listName = listName;
46605 _this.renderedRows = new Map();
46606 _this.rowHeight = 20;
46607 _this.isDestroyed = false;
46608 return _this;
46609 }
46610 VirtualList.prototype.postConstruct = function () {
46611 var _this = this;
46612 this.addScrollListener();
46613 this.rowHeight = this.getItemHeight();
46614 this.addResizeObserver();
46615 this.initialiseTabGuard({
46616 onFocusIn: function (e) { return _this.onFocusIn(e); },
46617 onFocusOut: function (e) { return _this.onFocusOut(e); },
46618 focusInnerElement: function (fromBottom) { return _this.focusInnerElement(fromBottom); },
46619 onTabKeyDown: function (e) { return _this.onTabKeyDown(e); },
46620 handleKeyDown: function (e) { return _this.handleKeyDown(e); }
46621 });
46622 this.setAriaProperties();
46623 };
46624 VirtualList.prototype.setAriaProperties = function () {
46625 var translate = this.gridOptionsWrapper.getLocaleTextFunc();
46626 var listName = translate('ariaDefaultListName', this.listName || 'List');
46627 var ariaEl = this.eContainer;
46628 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaRole"])(ariaEl, this.ariaRole);
46629 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaLabel"])(ariaEl, listName);
46630 };
46631 VirtualList.prototype.addResizeObserver = function () {
46632 var listener = this.drawVirtualRows.bind(this);
46633 var destroyObserver = this.resizeObserverService.observeResize(this.getGui(), listener);
46634 this.addDestroyFunc(destroyObserver);
46635 };
46636 VirtualList.prototype.focusInnerElement = function (fromBottom) {
46637 this.focusRow(fromBottom ? this.model.getRowCount() - 1 : 0);
46638 };
46639 VirtualList.prototype.onFocusIn = function (e) {
46640 var target = e.target;
46641 if (target.classList.contains('ag-virtual-list-item')) {
46642 this.lastFocusedRowIndex = Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["getAriaPosInSet"])(target) - 1;
46643 }
46644 return false;
46645 };
46646 VirtualList.prototype.onFocusOut = function (e) {
46647 if (!this.getFocusableElement().contains(e.relatedTarget)) {
46648 this.lastFocusedRowIndex = null;
46649 }
46650 return false;
46651 };
46652 VirtualList.prototype.handleKeyDown = function (e) {
46653 switch (e.key) {
46654 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].UP:
46655 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].DOWN:
46656 if (this.navigate(e.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_3__["KeyCode"].UP)) {
46657 e.preventDefault();
46658 }
46659 break;
46660 }
46661 };
46662 VirtualList.prototype.onTabKeyDown = function (e) {
46663 if (this.navigate(e.shiftKey)) {
46664 e.preventDefault();
46665 }
46666 else {
46667 // focus on the first or last focusable element to ensure that any other handlers start from there
46668 this.focusService.focusInto(this.getGui(), !e.shiftKey);
46669 }
46670 };
46671 VirtualList.prototype.navigate = function (up) {
46672 if (this.lastFocusedRowIndex == null) {
46673 return false;
46674 }
46675 var nextRow = this.lastFocusedRowIndex + (up ? -1 : 1);
46676 if (nextRow < 0 || nextRow >= this.model.getRowCount()) {
46677 return false;
46678 }
46679 this.focusRow(nextRow);
46680 return true;
46681 };
46682 VirtualList.prototype.getLastFocusedRow = function () {
46683 return this.lastFocusedRowIndex;
46684 };
46685 VirtualList.prototype.focusRow = function (rowNumber) {
46686 var _this = this;
46687 this.ensureIndexVisible(rowNumber);
46688 window.setTimeout(function () {
46689 var renderedRow = _this.renderedRows.get(rowNumber);
46690 if (renderedRow) {
46691 renderedRow.eDiv.focus();
46692 }
46693 }, 10);
46694 };
46695 VirtualList.prototype.getComponentAt = function (rowIndex) {
46696 var comp = this.renderedRows.get(rowIndex);
46697 return comp && comp.rowComponent;
46698 };
46699 VirtualList.getTemplate = function (cssIdentifier) {
46700 return /* html */ "\n <div class=\"ag-virtual-list-viewport ag-" + cssIdentifier + "-virtual-list-viewport\" role=\"presentation\">\n <div class=\"ag-virtual-list-container ag-" + cssIdentifier + "-virtual-list-container\" ref=\"eContainer\"></div>\n </div>";
46701 };
46702 VirtualList.prototype.getItemHeight = function () {
46703 return this.gridOptionsWrapper.getListItemHeight();
46704 };
46705 VirtualList.prototype.ensureIndexVisible = function (index) {
46706 var lastRow = this.model.getRowCount();
46707 if (typeof index !== 'number' || index < 0 || index >= lastRow) {
46708 console.warn('AG Grid: invalid row index for ensureIndexVisible: ' + index);
46709 return;
46710 }
46711 var rowTopPixel = index * this.rowHeight;
46712 var rowBottomPixel = rowTopPixel + this.rowHeight;
46713 var eGui = this.getGui();
46714 var viewportTopPixel = eGui.scrollTop;
46715 var viewportHeight = eGui.offsetHeight;
46716 var viewportBottomPixel = viewportTopPixel + viewportHeight;
46717 var viewportScrolledPastRow = viewportTopPixel > rowTopPixel;
46718 var viewportScrolledBeforeRow = viewportBottomPixel < rowBottomPixel;
46719 if (viewportScrolledPastRow) {
46720 // if row is before, scroll up with row at top
46721 eGui.scrollTop = rowTopPixel;
46722 }
46723 else if (viewportScrolledBeforeRow) {
46724 // if row is below, scroll down with row at bottom
46725 var newScrollPosition = rowBottomPixel - viewportHeight;
46726 eGui.scrollTop = newScrollPosition;
46727 }
46728 };
46729 VirtualList.prototype.setComponentCreator = function (componentCreator) {
46730 this.componentCreator = componentCreator;
46731 };
46732 VirtualList.prototype.getRowHeight = function () {
46733 return this.rowHeight;
46734 };
46735 VirtualList.prototype.getScrollTop = function () {
46736 return this.getGui().scrollTop;
46737 };
46738 VirtualList.prototype.setRowHeight = function (rowHeight) {
46739 this.rowHeight = rowHeight;
46740 this.refresh();
46741 };
46742 VirtualList.prototype.refresh = function () {
46743 var _this = this;
46744 if (this.model == null || this.isDestroyed) {
46745 return;
46746 }
46747 var rowCount = this.model.getRowCount();
46748 this.eContainer.style.height = rowCount * this.rowHeight + "px";
46749 // ensure height is applied before attempting to redraw rows
46750 Object(_utils_function__WEBPACK_IMPORTED_MODULE_4__["waitUntil"])(function () { return _this.eContainer.clientHeight >= rowCount * _this.rowHeight; }, function () {
46751 if (_this.isDestroyed) {
46752 return;
46753 }
46754 _this.clearVirtualRows();
46755 _this.drawVirtualRows();
46756 });
46757 };
46758 VirtualList.prototype.clearVirtualRows = function () {
46759 var _this = this;
46760 this.renderedRows.forEach(function (_, rowIndex) { return _this.removeRow(rowIndex); });
46761 };
46762 VirtualList.prototype.drawVirtualRows = function () {
46763 var gui = this.getGui();
46764 var topPixel = gui.scrollTop;
46765 var bottomPixel = topPixel + gui.offsetHeight;
46766 var firstRow = Math.floor(topPixel / this.rowHeight);
46767 var lastRow = Math.floor(bottomPixel / this.rowHeight);
46768 this.ensureRowsRendered(firstRow, lastRow);
46769 };
46770 VirtualList.prototype.ensureRowsRendered = function (start, finish) {
46771 var _this = this;
46772 // remove any rows that are no longer required
46773 this.renderedRows.forEach(function (_, rowIndex) {
46774 if ((rowIndex < start || rowIndex > finish) && rowIndex !== _this.lastFocusedRowIndex) {
46775 _this.removeRow(rowIndex);
46776 }
46777 });
46778 // insert any required new rows
46779 for (var rowIndex = start; rowIndex <= finish; rowIndex++) {
46780 if (this.renderedRows.has(rowIndex)) {
46781 continue;
46782 }
46783 // check this row actually exists (in case overflow buffer window exceeds real data)
46784 if (rowIndex < this.model.getRowCount()) {
46785 this.insertRow(rowIndex);
46786 }
46787 }
46788 };
46789 VirtualList.prototype.insertRow = function (rowIndex) {
46790 var _this = this;
46791 var value = this.model.getRow(rowIndex);
46792 var eDiv = document.createElement('div');
46793 eDiv.classList.add('ag-virtual-list-item', "ag-" + this.cssIdentifier + "-virtual-list-item");
46794 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaRole"])(eDiv, this.ariaRole === 'tree' ? 'treeitem' : 'option');
46795 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaSetSize"])(eDiv, this.model.getRowCount());
46796 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaPosInSet"])(eDiv, rowIndex + 1);
46797 eDiv.setAttribute('tabindex', '-1');
46798 if (typeof this.model.isRowSelected === 'function') {
46799 var isSelected = this.model.isRowSelected(rowIndex);
46800 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaSelected"])(eDiv, !!isSelected);
46801 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_2__["setAriaChecked"])(eDiv, isSelected);
46802 }
46803 eDiv.style.height = this.rowHeight + "px";
46804 eDiv.style.top = this.rowHeight * rowIndex + "px";
46805 var rowComponent = this.componentCreator(value, eDiv);
46806 rowComponent.addGuiEventListener('focusin', function () { return _this.lastFocusedRowIndex = rowIndex; });
46807 eDiv.appendChild(rowComponent.getGui());
46808 // keep the DOM order consistent with the order of the rows
46809 if (this.renderedRows.has(rowIndex - 1)) {
46810 this.renderedRows.get(rowIndex - 1).eDiv.insertAdjacentElement('afterend', eDiv);
46811 }
46812 else if (this.renderedRows.has(rowIndex + 1)) {
46813 this.renderedRows.get(rowIndex + 1).eDiv.insertAdjacentElement('beforebegin', eDiv);
46814 }
46815 else {
46816 this.eContainer.appendChild(eDiv);
46817 }
46818 this.renderedRows.set(rowIndex, { rowComponent: rowComponent, eDiv: eDiv });
46819 };
46820 VirtualList.prototype.removeRow = function (rowIndex) {
46821 var component = this.renderedRows.get(rowIndex);
46822 this.eContainer.removeChild(component.eDiv);
46823 this.destroyBean(component.rowComponent);
46824 this.renderedRows.delete(rowIndex);
46825 };
46826 VirtualList.prototype.addScrollListener = function () {
46827 var _this = this;
46828 this.addGuiEventListener('scroll', function () { return _this.drawVirtualRows(); });
46829 };
46830 VirtualList.prototype.setModel = function (model) {
46831 this.model = model;
46832 };
46833 VirtualList.prototype.destroy = function () {
46834 if (this.isDestroyed) {
46835 return;
46836 }
46837 this.clearVirtualRows();
46838 this.isDestroyed = true;
46839 _super.prototype.destroy.call(this);
46840 };
46841 __decorate([
46842 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('resizeObserverService')
46843 ], VirtualList.prototype, "resizeObserverService", void 0);
46844 __decorate([
46845 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('focusService')
46846 ], VirtualList.prototype, "focusService", void 0);
46847 __decorate([
46848 Object(_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eContainer')
46849 ], VirtualList.prototype, "eContainer", void 0);
46850 __decorate([
46851 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
46852 ], VirtualList.prototype, "postConstruct", null);
46853 return VirtualList;
46854}(_tabGuardComp__WEBPACK_IMPORTED_MODULE_5__["TabGuardComp"]));
46855
46856
46857
46858
46859
46860/***/ }),
46861/* 208 */
46862/***/ (function(module, __webpack_exports__, __webpack_require__) {
46863
46864"use strict";
46865__webpack_require__.r(__webpack_exports__);
46866/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VanillaFrameworkOverrides", function() { return VanillaFrameworkOverrides; });
46867/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(18);
46868/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(37);
46869/**
46870 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
46871 * @version v27.3.0
46872 * @link https://www.ag-grid.com/
46873 * @license MIT
46874 */
46875
46876
46877var OUTSIDE_ANGULAR_EVENTS = ['mouseover', 'mouseout', 'mouseenter', 'mouseleave'];
46878var PASSIVE_EVENTS = ['touchstart', 'touchend', 'touchmove', 'touchcancel'];
46879/** The base frameworks, eg React & Angular, override this bean with implementations specific to their requirement. */
46880var VanillaFrameworkOverrides = /** @class */ (function () {
46881 function VanillaFrameworkOverrides() {
46882 this.isOutsideAngular = function (eventType) { return Object(_utils_array__WEBPACK_IMPORTED_MODULE_0__["includes"])(OUTSIDE_ANGULAR_EVENTS, eventType); };
46883 }
46884 // for Vanilla JS, we use simple timeout
46885 VanillaFrameworkOverrides.prototype.setTimeout = function (action, timeout) {
46886 window.setTimeout(action, timeout);
46887 };
46888 VanillaFrameworkOverrides.prototype.setInterval = function (action, timeout) {
46889 return new _utils__WEBPACK_IMPORTED_MODULE_1__["AgPromise"](function (resolve) {
46890 resolve(window.setInterval(action, timeout));
46891 });
46892 };
46893 // for Vanilla JS, we just add the event to the element
46894 VanillaFrameworkOverrides.prototype.addEventListener = function (element, type, listener, useCapture) {
46895 var isPassive = Object(_utils_array__WEBPACK_IMPORTED_MODULE_0__["includes"])(PASSIVE_EVENTS, type);
46896 element.addEventListener(type, listener, { capture: !!useCapture, passive: isPassive });
46897 };
46898 // for Vanilla JS, we just execute the listener
46899 VanillaFrameworkOverrides.prototype.dispatchEvent = function (eventType, listener, global) {
46900 if (global === void 0) { global = false; }
46901 listener();
46902 };
46903 VanillaFrameworkOverrides.prototype.frameworkComponent = function (name) {
46904 return null;
46905 };
46906 VanillaFrameworkOverrides.prototype.isFrameworkComponent = function (comp) {
46907 return false;
46908 };
46909 return VanillaFrameworkOverrides;
46910}());
46911
46912
46913
46914
46915
46916/***/ }),
46917/* 209 */
46918/***/ (function(module, __webpack_exports__, __webpack_require__) {
46919
46920"use strict";
46921__webpack_require__.r(__webpack_exports__);
46922/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CellNavigationService", function() { return CellNavigationService; });
46923/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
46924/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
46925/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
46926/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7);
46927/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(18);
46928/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(65);
46929/**
46930 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
46931 * @version v27.3.0
46932 * @link https://www.ag-grid.com/
46933 * @license MIT
46934 */
46935var __extends = (undefined && undefined.__extends) || (function () {
46936 var extendStatics = function (d, b) {
46937 extendStatics = Object.setPrototypeOf ||
46938 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
46939 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
46940 return extendStatics(d, b);
46941 };
46942 return function (d, b) {
46943 extendStatics(d, b);
46944 function __() { this.constructor = d; }
46945 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
46946 };
46947})();
46948var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
46949 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
46950 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
46951 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
46952 return c > 3 && r && Object.defineProperty(target, key, r), r;
46953};
46954
46955
46956
46957
46958
46959
46960var CellNavigationService = /** @class */ (function (_super) {
46961 __extends(CellNavigationService, _super);
46962 function CellNavigationService() {
46963 return _super !== null && _super.apply(this, arguments) || this;
46964 }
46965 // returns null if no cell to focus on, ie at the end of the grid
46966 CellNavigationService.prototype.getNextCellToFocus = function (key, focusedCell, ctrlPressed) {
46967 if (ctrlPressed === void 0) { ctrlPressed = false; }
46968 if (ctrlPressed) {
46969 return this.getNextCellToFocusWithCtrlPressed(key, focusedCell);
46970 }
46971 return this.getNextCellToFocusWithoutCtrlPressed(key, focusedCell);
46972 };
46973 CellNavigationService.prototype.getNextCellToFocusWithCtrlPressed = function (key, focusedCell) {
46974 var upKey = key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].UP;
46975 var downKey = key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].DOWN;
46976 var leftKey = key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].LEFT;
46977 var column;
46978 var rowIndex;
46979 if (upKey || downKey) {
46980 rowIndex = upKey ? this.paginationProxy.getPageFirstRow() : this.paginationProxy.getPageLastRow();
46981 column = focusedCell.column;
46982 }
46983 else {
46984 var allColumns = this.columnModel.getAllDisplayedColumns();
46985 var isRtl = this.gridOptionsWrapper.isEnableRtl();
46986 rowIndex = focusedCell.rowIndex;
46987 column = leftKey !== isRtl ? allColumns[0] : Object(_utils_array__WEBPACK_IMPORTED_MODULE_4__["last"])(allColumns);
46988 }
46989 return {
46990 rowIndex: rowIndex,
46991 rowPinned: null,
46992 column: column
46993 };
46994 };
46995 CellNavigationService.prototype.getNextCellToFocusWithoutCtrlPressed = function (key, focusedCell) {
46996 // starting with the provided cell, we keep moving until we find a cell we can
46997 // focus on.
46998 var pointer = focusedCell;
46999 var finished = false;
47000 // finished will be true when either:
47001 // a) cell found that we can focus on
47002 // b) run out of cells (ie the method returns null)
47003 while (!finished) {
47004 switch (key) {
47005 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].UP:
47006 pointer = this.getCellAbove(pointer);
47007 break;
47008 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].DOWN:
47009 pointer = this.getCellBelow(pointer);
47010 break;
47011 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].RIGHT:
47012 if (this.gridOptionsWrapper.isEnableRtl()) {
47013 pointer = this.getCellToLeft(pointer);
47014 }
47015 else {
47016 pointer = this.getCellToRight(pointer);
47017 }
47018 break;
47019 case _constants_keyCode__WEBPACK_IMPORTED_MODULE_5__["KeyCode"].LEFT:
47020 if (this.gridOptionsWrapper.isEnableRtl()) {
47021 pointer = this.getCellToRight(pointer);
47022 }
47023 else {
47024 pointer = this.getCellToLeft(pointer);
47025 }
47026 break;
47027 default:
47028 pointer = null;
47029 console.warn('AG Grid: unknown key for navigation ' + key);
47030 break;
47031 }
47032 if (pointer) {
47033 finished = this.isCellGoodToFocusOn(pointer);
47034 }
47035 else {
47036 finished = true;
47037 }
47038 }
47039 return pointer;
47040 };
47041 CellNavigationService.prototype.isCellGoodToFocusOn = function (gridCell) {
47042 var column = gridCell.column;
47043 var rowNode;
47044 switch (gridCell.rowPinned) {
47045 case _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP:
47046 rowNode = this.pinnedRowModel.getPinnedTopRow(gridCell.rowIndex);
47047 break;
47048 case _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM:
47049 rowNode = this.pinnedRowModel.getPinnedBottomRow(gridCell.rowIndex);
47050 break;
47051 default:
47052 rowNode = this.rowModel.getRow(gridCell.rowIndex);
47053 break;
47054 }
47055 if (!rowNode) {
47056 return false;
47057 }
47058 var suppressNavigable = column.isSuppressNavigable(rowNode);
47059 return !suppressNavigable;
47060 };
47061 CellNavigationService.prototype.getCellToLeft = function (lastCell) {
47062 if (!lastCell) {
47063 return null;
47064 }
47065 var colToLeft = this.columnModel.getDisplayedColBefore(lastCell.column);
47066 if (!colToLeft) {
47067 return null;
47068 }
47069 return {
47070 rowIndex: lastCell.rowIndex,
47071 column: colToLeft,
47072 rowPinned: lastCell.rowPinned
47073 };
47074 };
47075 CellNavigationService.prototype.getCellToRight = function (lastCell) {
47076 if (!lastCell) {
47077 return null;
47078 }
47079 var colToRight = this.columnModel.getDisplayedColAfter(lastCell.column);
47080 // if already on right, do nothing
47081 if (!colToRight) {
47082 return null;
47083 }
47084 return {
47085 rowIndex: lastCell.rowIndex,
47086 column: colToRight,
47087 rowPinned: lastCell.rowPinned
47088 };
47089 };
47090 CellNavigationService.prototype.getRowBelow = function (rowPosition) {
47091 // if already on top row, do nothing
47092 var index = rowPosition.rowIndex;
47093 var pinned = rowPosition.rowPinned;
47094 if (this.isLastRowInContainer(rowPosition)) {
47095 switch (pinned) {
47096 case _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM:
47097 // never any rows after pinned bottom
47098 return null;
47099 case _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP:
47100 // if on last row of pinned top, then next row is main body (if rows exist),
47101 // otherwise it's the pinned bottom
47102 if (this.rowModel.isRowsToRender()) {
47103 return { rowIndex: this.paginationProxy.getPageFirstRow(), rowPinned: null };
47104 }
47105 if (this.pinnedRowModel.isRowsToRender(_constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM)) {
47106 return { rowIndex: 0, rowPinned: _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM };
47107 }
47108 return null;
47109 default:
47110 // if in the main body, then try pinned bottom, otherwise return nothing
47111 if (this.pinnedRowModel.isRowsToRender(_constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM)) {
47112 return { rowIndex: 0, rowPinned: _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM };
47113 }
47114 return null;
47115 }
47116 }
47117 return { rowIndex: index + 1, rowPinned: pinned };
47118 };
47119 CellNavigationService.prototype.getCellBelow = function (lastCell) {
47120 if (!lastCell) {
47121 return null;
47122 }
47123 var rowBelow = this.getRowBelow(lastCell);
47124 if (rowBelow) {
47125 return {
47126 rowIndex: rowBelow.rowIndex,
47127 column: lastCell.column,
47128 rowPinned: rowBelow.rowPinned
47129 };
47130 }
47131 return null;
47132 };
47133 CellNavigationService.prototype.isLastRowInContainer = function (rowPosition) {
47134 var pinned = rowPosition.rowPinned;
47135 var index = rowPosition.rowIndex;
47136 if (pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP) {
47137 var lastTopIndex = this.pinnedRowModel.getPinnedTopRowData().length - 1;
47138 return lastTopIndex <= index;
47139 }
47140 if (pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM) {
47141 var lastBottomIndex = this.pinnedRowModel.getPinnedBottomRowData().length - 1;
47142 return lastBottomIndex <= index;
47143 }
47144 var lastBodyIndex = this.paginationProxy.getPageLastRow();
47145 return lastBodyIndex <= index;
47146 };
47147 CellNavigationService.prototype.getRowAbove = function (rowPosition) {
47148 // if already on top row, do nothing
47149 var index = rowPosition.rowIndex;
47150 var pinned = rowPosition.rowPinned;
47151 var isFirstRow = pinned ? index === 0 : index === this.paginationProxy.getPageFirstRow();
47152 // if already on top row, do nothing
47153 if (isFirstRow) {
47154 if (pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP) {
47155 return null;
47156 }
47157 if (!pinned) {
47158 if (this.pinnedRowModel.isRowsToRender(_constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP)) {
47159 return this.getLastFloatingTopRow();
47160 }
47161 return null;
47162 }
47163 // last floating bottom
47164 if (this.rowModel.isRowsToRender()) {
47165 return this.getLastBodyCell();
47166 }
47167 if (this.pinnedRowModel.isRowsToRender(_constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP)) {
47168 return this.getLastFloatingTopRow();
47169 }
47170 return null;
47171 }
47172 return { rowIndex: index - 1, rowPinned: pinned };
47173 };
47174 CellNavigationService.prototype.getCellAbove = function (lastCell) {
47175 if (!lastCell) {
47176 return null;
47177 }
47178 var rowAbove = this.getRowAbove({ rowIndex: lastCell.rowIndex, rowPinned: lastCell.rowPinned });
47179 if (rowAbove) {
47180 return {
47181 rowIndex: rowAbove.rowIndex,
47182 column: lastCell.column,
47183 rowPinned: rowAbove.rowPinned
47184 };
47185 }
47186 return null;
47187 };
47188 CellNavigationService.prototype.getLastBodyCell = function () {
47189 var lastBodyRow = this.paginationProxy.getPageLastRow();
47190 return { rowIndex: lastBodyRow, rowPinned: null };
47191 };
47192 CellNavigationService.prototype.getLastFloatingTopRow = function () {
47193 var lastFloatingRow = this.pinnedRowModel.getPinnedTopRowData().length - 1;
47194 return { rowIndex: lastFloatingRow, rowPinned: _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP };
47195 };
47196 CellNavigationService.prototype.getNextTabbedCell = function (gridCell, backwards) {
47197 if (backwards) {
47198 return this.getNextTabbedCellBackwards(gridCell);
47199 }
47200 return this.getNextTabbedCellForwards(gridCell);
47201 };
47202 CellNavigationService.prototype.getNextTabbedCellForwards = function (gridCell) {
47203 var displayedColumns = this.columnModel.getAllDisplayedColumns();
47204 var newRowIndex = gridCell.rowIndex;
47205 var newFloating = gridCell.rowPinned;
47206 // move along to the next cell
47207 var newColumn = this.columnModel.getDisplayedColAfter(gridCell.column);
47208 // check if end of the row, and if so, go forward a row
47209 if (!newColumn) {
47210 newColumn = displayedColumns[0];
47211 var rowBelow = this.getRowBelow(gridCell);
47212 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["missing"])(rowBelow)) {
47213 return null;
47214 }
47215 // If we are tabbing and there is a paging panel present, tabbing should go
47216 // to the paging panel instead of loading the next page.
47217 if (!rowBelow.rowPinned && !this.paginationProxy.isRowInPage(rowBelow)) {
47218 return null;
47219 }
47220 newRowIndex = rowBelow ? rowBelow.rowIndex : null;
47221 newFloating = rowBelow ? rowBelow.rowPinned : null;
47222 }
47223 return { rowIndex: newRowIndex, column: newColumn, rowPinned: newFloating };
47224 };
47225 CellNavigationService.prototype.getNextTabbedCellBackwards = function (gridCell) {
47226 var displayedColumns = this.columnModel.getAllDisplayedColumns();
47227 var newRowIndex = gridCell.rowIndex;
47228 var newFloating = gridCell.rowPinned;
47229 // move along to the next cell
47230 var newColumn = this.columnModel.getDisplayedColBefore(gridCell.column);
47231 // check if end of the row, and if so, go forward a row
47232 if (!newColumn) {
47233 newColumn = Object(_utils_array__WEBPACK_IMPORTED_MODULE_4__["last"])(displayedColumns);
47234 var rowAbove = this.getRowAbove({ rowIndex: gridCell.rowIndex, rowPinned: gridCell.rowPinned });
47235 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["missing"])(rowAbove)) {
47236 return null;
47237 }
47238 // If we are tabbing and there is a paging panel present, tabbing should go
47239 // to the paging panel instead of loading the next page.
47240 if (!rowAbove.rowPinned && !this.paginationProxy.isRowInPage(rowAbove)) {
47241 return null;
47242 }
47243 newRowIndex = rowAbove ? rowAbove.rowIndex : null;
47244 newFloating = rowAbove ? rowAbove.rowPinned : null;
47245 }
47246 return { rowIndex: newRowIndex, column: newColumn, rowPinned: newFloating };
47247 };
47248 __decorate([
47249 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
47250 ], CellNavigationService.prototype, "columnModel", void 0);
47251 __decorate([
47252 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowModel')
47253 ], CellNavigationService.prototype, "rowModel", void 0);
47254 __decorate([
47255 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('pinnedRowModel')
47256 ], CellNavigationService.prototype, "pinnedRowModel", void 0);
47257 __decorate([
47258 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('paginationProxy')
47259 ], CellNavigationService.prototype, "paginationProxy", void 0);
47260 CellNavigationService = __decorate([
47261 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('cellNavigationService')
47262 ], CellNavigationService);
47263 return CellNavigationService;
47264}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
47265
47266
47267
47268
47269
47270/***/ }),
47271/* 210 */
47272/***/ (function(module, __webpack_exports__, __webpack_require__) {
47273
47274"use strict";
47275__webpack_require__.r(__webpack_exports__);
47276/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AlignedGridsService", function() { return AlignedGridsService; });
47277/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(23);
47278/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
47279/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(20);
47280/**
47281 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
47282 * @version v27.3.0
47283 * @link https://www.ag-grid.com/
47284 * @license MIT
47285 */
47286var __extends = (undefined && undefined.__extends) || (function () {
47287 var extendStatics = function (d, b) {
47288 extendStatics = Object.setPrototypeOf ||
47289 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
47290 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
47291 return extendStatics(d, b);
47292 };
47293 return function (d, b) {
47294 extendStatics(d, b);
47295 function __() { this.constructor = d; }
47296 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
47297 };
47298})();
47299var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
47300 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
47301 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
47302 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
47303 return c > 3 && r && Object.defineProperty(target, key, r), r;
47304};
47305var __param = (undefined && undefined.__param) || function (paramIndex, decorator) {
47306 return function (target, key) { decorator(target, key, paramIndex); }
47307};
47308
47309
47310
47311
47312
47313
47314var AlignedGridsService = /** @class */ (function (_super) {
47315 __extends(AlignedGridsService, _super);
47316 function AlignedGridsService() {
47317 var _this = _super !== null && _super.apply(this, arguments) || this;
47318 // flag to mark if we are consuming. to avoid cyclic events (ie other grid firing back to master
47319 // while processing a master event) we mark this if consuming an event, and if we are, then
47320 // we don't fire back any events.
47321 _this.consuming = false;
47322 return _this;
47323 }
47324 AlignedGridsService.prototype.setBeans = function (loggerFactory) {
47325 this.logger = loggerFactory.create('AlignedGridsService');
47326 };
47327 AlignedGridsService.prototype.init = function () {
47328 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_MOVED, this.fireColumnEvent.bind(this));
47329 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_VISIBLE, this.fireColumnEvent.bind(this));
47330 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_PINNED, this.fireColumnEvent.bind(this));
47331 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_GROUP_OPENED, this.fireColumnEvent.bind(this));
47332 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_RESIZED, this.fireColumnEvent.bind(this));
47333 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_BODY_SCROLL, this.fireScrollEvent.bind(this));
47334 };
47335 // common logic across all the fire methods
47336 AlignedGridsService.prototype.fireEvent = function (callback) {
47337 // if we are already consuming, then we are acting on an event from a master,
47338 // so we don't cause a cyclic firing of events
47339 if (this.consuming) {
47340 return;
47341 }
47342 // iterate through the aligned grids, and pass each aligned grid service to the callback
47343 var otherGrids = this.gridOptionsWrapper.getAlignedGrids();
47344 if (otherGrids) {
47345 otherGrids.forEach(function (otherGridOptions) {
47346 if (otherGridOptions.api) {
47347 var alignedGridService = otherGridOptions.api.__getAlignedGridService();
47348 callback(alignedGridService);
47349 }
47350 });
47351 }
47352 };
47353 // common logic across all consume methods. very little common logic, however extracting
47354 // guarantees consistency across the methods.
47355 AlignedGridsService.prototype.onEvent = function (callback) {
47356 this.consuming = true;
47357 callback();
47358 this.consuming = false;
47359 };
47360 AlignedGridsService.prototype.fireColumnEvent = function (event) {
47361 this.fireEvent(function (alignedGridsService) {
47362 alignedGridsService.onColumnEvent(event);
47363 });
47364 };
47365 AlignedGridsService.prototype.fireScrollEvent = function (event) {
47366 if (event.direction !== 'horizontal') {
47367 return;
47368 }
47369 this.fireEvent(function (alignedGridsService) {
47370 alignedGridsService.onScrollEvent(event);
47371 });
47372 };
47373 AlignedGridsService.prototype.onScrollEvent = function (event) {
47374 var _this = this;
47375 this.onEvent(function () {
47376 var gridBodyCon = _this.ctrlsService.getGridBodyCtrl();
47377 gridBodyCon.getScrollFeature().setHorizontalScrollPosition(event.left);
47378 });
47379 };
47380 AlignedGridsService.prototype.getMasterColumns = function (event) {
47381 var result = [];
47382 if (event.columns) {
47383 event.columns.forEach(function (column) {
47384 result.push(column);
47385 });
47386 }
47387 else if (event.column) {
47388 result.push(event.column);
47389 }
47390 return result;
47391 };
47392 AlignedGridsService.prototype.getColumnIds = function (event) {
47393 var result = [];
47394 if (event.columns) {
47395 event.columns.forEach(function (column) {
47396 result.push(column.getColId());
47397 });
47398 }
47399 else if (event.column) {
47400 result.push(event.column.getColId());
47401 }
47402 return result;
47403 };
47404 AlignedGridsService.prototype.onColumnEvent = function (event) {
47405 var _this = this;
47406 this.onEvent(function () {
47407 switch (event.type) {
47408 case _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_MOVED:
47409 case _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_VISIBLE:
47410 case _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_PINNED:
47411 case _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_RESIZED:
47412 var colEvent = event;
47413 _this.processColumnEvent(colEvent);
47414 break;
47415 case _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_GROUP_OPENED:
47416 var groupOpenedEvent = event;
47417 _this.processGroupOpenedEvent(groupOpenedEvent);
47418 break;
47419 case _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_PIVOT_CHANGED:
47420 // we cannot support pivoting with aligned grids as the columns will be out of sync as the
47421 // grids will have columns created based on the row data of the grid.
47422 console.warn('AG Grid: pivoting is not supported with aligned grids. ' +
47423 'You can only use one of these features at a time in a grid.');
47424 break;
47425 }
47426 });
47427 };
47428 AlignedGridsService.prototype.processGroupOpenedEvent = function (groupOpenedEvent) {
47429 // likewise for column group
47430 var masterColumnGroup = groupOpenedEvent.columnGroup;
47431 var otherColumnGroup = null;
47432 if (masterColumnGroup) {
47433 var groupId = masterColumnGroup.getGroupId();
47434 otherColumnGroup = this.columnModel.getProvidedColumnGroup(groupId);
47435 }
47436 if (masterColumnGroup && !otherColumnGroup) {
47437 return;
47438 }
47439 this.logger.log('onColumnEvent-> processing ' + groupOpenedEvent + ' expanded = ' + masterColumnGroup.isExpanded());
47440 this.columnModel.setColumnGroupOpened(otherColumnGroup, masterColumnGroup.isExpanded(), "alignedGridChanged");
47441 };
47442 AlignedGridsService.prototype.processColumnEvent = function (colEvent) {
47443 var _this = this;
47444 // the column in the event is from the master grid. need to
47445 // look up the equivalent from this (other) grid
47446 var masterColumn = colEvent.column;
47447 var otherColumn = null;
47448 if (masterColumn) {
47449 otherColumn = this.columnModel.getPrimaryColumn(masterColumn.getColId());
47450 }
47451 // if event was with respect to a master column, that is not present in this
47452 // grid, then we ignore the event
47453 if (masterColumn && !otherColumn) {
47454 return;
47455 }
47456 // in time, all the methods below should use the column ids, it's a more generic way
47457 // of handling columns, and also allows for single or multi column events
47458 var masterColumns = this.getMasterColumns(colEvent);
47459 switch (colEvent.type) {
47460 case _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_MOVED:
47461 // when the user moves columns via setColumnState, we can't depend on moving specific columns
47462 // to an index, as there maybe be many indexes columns moved to (as wasn't result of a mouse drag).
47463 // so only way to be sure is match the order of all columns using Column State.
47464 {
47465 var movedEvent = colEvent;
47466 var srcColState = colEvent.columnApi.getColumnState();
47467 var destColState = srcColState.map(function (s) { return ({ colId: s.colId }); });
47468 this.columnModel.applyColumnState({ state: destColState, applyOrder: true }, "alignedGridChanged");
47469 this.logger.log("onColumnEvent-> processing " + colEvent.type + " toIndex = " + movedEvent.toIndex);
47470 }
47471 break;
47472 case _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_VISIBLE:
47473 // when the user changes visibility via setColumnState, we can't depend on visibility flag in event
47474 // as there maybe be mix of true/false (as wasn't result of a mouse click to set visiblity).
47475 // so only way to be sure is match the visibility of all columns using Column State.
47476 {
47477 var visibleEvent = colEvent;
47478 var srcColState = colEvent.columnApi.getColumnState();
47479 var destColState = srcColState.map(function (s) { return ({ colId: s.colId, hide: s.hide }); });
47480 this.columnModel.applyColumnState({ state: destColState }, "alignedGridChanged");
47481 this.logger.log("onColumnEvent-> processing " + colEvent.type + " visible = " + visibleEvent.visible);
47482 }
47483 break;
47484 case _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_PINNED:
47485 {
47486 var pinnedEvent = colEvent;
47487 var srcColState = colEvent.columnApi.getColumnState();
47488 var destColState = srcColState.map(function (s) { return ({ colId: s.colId, pinned: s.pinned }); });
47489 this.columnModel.applyColumnState({ state: destColState }, "alignedGridChanged");
47490 this.logger.log("onColumnEvent-> processing " + colEvent.type + " pinned = " + pinnedEvent.pinned);
47491 }
47492 break;
47493 case _events__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_RESIZED:
47494 var resizedEvent_1 = colEvent;
47495 masterColumns.forEach(function (column) {
47496 _this.logger.log("onColumnEvent-> processing " + colEvent.type + " actualWidth = " + column.getActualWidth());
47497 var columnWidths = [{ key: column.getColId(), newWidth: column.getActualWidth() }];
47498 _this.columnModel.setColumnWidths(columnWidths, false, resizedEvent_1.finished, "alignedGridChanged");
47499 });
47500 break;
47501 }
47502 var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
47503 var isVerticalScrollShowing = gridBodyCon.isVerticalScrollShowing();
47504 var alignedGrids = this.gridOptionsWrapper.getAlignedGrids();
47505 if (alignedGrids) {
47506 alignedGrids.forEach(function (grid) {
47507 if (grid.api) {
47508 grid.api.setAlwaysShowVerticalScroll(isVerticalScrollShowing);
47509 }
47510 });
47511 }
47512 };
47513 __decorate([
47514 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
47515 ], AlignedGridsService.prototype, "columnModel", void 0);
47516 __decorate([
47517 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('ctrlsService')
47518 ], AlignedGridsService.prototype, "ctrlsService", void 0);
47519 __decorate([
47520 __param(0, Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Qualifier"])('loggerFactory'))
47521 ], AlignedGridsService.prototype, "setBeans", null);
47522 __decorate([
47523 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
47524 ], AlignedGridsService.prototype, "init", null);
47525 AlignedGridsService = __decorate([
47526 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('alignedGridsService')
47527 ], AlignedGridsService);
47528 return AlignedGridsService;
47529}(_context_beanStub__WEBPACK_IMPORTED_MODULE_2__["BeanStub"]));
47530
47531
47532
47533
47534
47535/***/ }),
47536/* 211 */
47537/***/ (function(module, __webpack_exports__, __webpack_require__) {
47538
47539"use strict";
47540__webpack_require__.r(__webpack_exports__);
47541/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Grid", function() { return Grid; });
47542/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GridCoreCreator", function() { return GridCoreCreator; });
47543/* harmony import */ var _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(112);
47544/* harmony import */ var _selectionService__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(212);
47545/* harmony import */ var _columns_columnApi__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(213);
47546/* harmony import */ var _columns_columnModel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(22);
47547/* harmony import */ var _rendering_rowRenderer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(178);
47548/* harmony import */ var _headerRendering_gridHeaderComp__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(167);
47549/* harmony import */ var _filter_filterManager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(107);
47550/* harmony import */ var _valueService_valueService__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(214);
47551/* harmony import */ var _eventService__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(11);
47552/* harmony import */ var _gridBodyComp_gridBodyComp__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(110);
47553/* harmony import */ var _gridApi__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(156);
47554/* harmony import */ var _columns_columnFactory__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(5);
47555/* harmony import */ var _columns_displayedGroupCreator__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(29);
47556/* harmony import */ var _valueService_expressionService__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(215);
47557/* harmony import */ var _templateService__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(216);
47558/* harmony import */ var _widgets_popupService__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(205);
47559/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(217);
47560/* harmony import */ var _columns_columnUtils__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(28);
47561/* harmony import */ var _rendering_autoWidthCalculator__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(177);
47562/* harmony import */ var _headerRendering_common_horizontalResizeService__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(170);
47563/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(12);
47564/* harmony import */ var _gridComp_gridComp__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(218);
47565/* harmony import */ var _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(97);
47566/* harmony import */ var _dragAndDrop_dragService__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(106);
47567/* harmony import */ var _sortController__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(220);
47568/* harmony import */ var _focusService__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(206);
47569/* harmony import */ var _gridBodyComp_mouseEventService__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(138);
47570/* harmony import */ var _cellNavigationService__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(209);
47571/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(23);
47572/* harmony import */ var _rendering_valueFormatterService__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(179);
47573/* harmony import */ var _widgets_agCheckbox__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(163);
47574/* harmony import */ var _widgets_agRadioButton__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(187);
47575/* harmony import */ var _vanillaFrameworkOverrides__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(208);
47576/* harmony import */ var _gridBodyComp_scrollVisibleService__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(137);
47577/* harmony import */ var _styling_stylingService__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(186);
47578/* harmony import */ var _rendering_columnHoverService__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(221);
47579/* harmony import */ var _rendering_columnAnimationService__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(222);
47580/* harmony import */ var _columns_autoGroupColService__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(223);
47581/* harmony import */ var _pagination_paginationProxy__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(185);
47582/* harmony import */ var _pagination_paginationAutoPageSizeService__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(224);
47583/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(15);
47584/* harmony import */ var _valueService_valueCache__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(225);
47585/* harmony import */ var _valueService_changeDetectionService__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(226);
47586/* harmony import */ var _alignedGridsService__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(210);
47587/* harmony import */ var _components_framework_userComponentFactory__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(102);
47588/* harmony import */ var _components_framework_userComponentRegistry__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(34);
47589/* harmony import */ var _components_framework_agComponentUtils__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(227);
47590/* harmony import */ var _components_framework_componentMetadataProvider__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(228);
47591/* harmony import */ var _rendering_beans__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(128);
47592/* harmony import */ var _environment__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(229);
47593/* harmony import */ var _misc_animationFrameService__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(175);
47594/* harmony import */ var _gridBodyComp_navigationService__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(139);
47595/* harmony import */ var _rendering_rowContainerHeightService__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(230);
47596/* harmony import */ var _rowNodes_selectableService__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(231);
47597/* harmony import */ var _pagination_paginationComp__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(232);
47598/* harmony import */ var _misc_resizeObserverService__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(174);
47599/* harmony import */ var _rendering_overlays_overlayWrapperComponent__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(233);
47600/* harmony import */ var _widgets_agGroupComponent__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(199);
47601/* harmony import */ var _widgets_agDialog__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(197);
47602/* harmony import */ var _widgets_agPanel__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(198);
47603/* harmony import */ var _widgets_agInputTextField__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(189);
47604/* harmony import */ var _widgets_agInputTextArea__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(190);
47605/* harmony import */ var _widgets_agSlider__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(193);
47606/* harmony import */ var _widgets_agColorPicker__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(195);
47607/* harmony import */ var _widgets_agInputNumberField__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(191);
47608/* harmony import */ var _widgets_agInputRange__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(192);
47609/* harmony import */ var _widgets_agSelect__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(66);
47610/* harmony import */ var _widgets_agAngleSelect__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(194);
47611/* harmony import */ var _widgets_agToggleButton__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(188);
47612/* harmony import */ var _entities_rowPosition__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(234);
47613/* harmony import */ var _entities_cellPosition__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(235);
47614/* harmony import */ var _pinnedRowModel_pinnedRowModel__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(180);
47615/* harmony import */ var _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(17);
47616/* harmony import */ var _modules_moduleNames__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(16);
47617/* harmony import */ var _undoRedo_undoRedoService__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(236);
47618/* harmony import */ var _components_agStackComponentsRegistry__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(32);
47619/* harmony import */ var _headerRendering_common_headerPosition__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(238);
47620/* harmony import */ var _headerRendering_common_headerNavigationService__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(169);
47621/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(7);
47622/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(13);
47623/* harmony import */ var _columns_columnDefFactory__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(239);
47624/* harmony import */ var _rendering_row_rowCssClassCalculator__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(240);
47625/* harmony import */ var _rowNodeCache_rowNodeBlockLoader__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(184);
47626/* harmony import */ var _rowNodes_rowNodeSorter__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(241);
47627/* harmony import */ var _ctrlsService__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(242);
47628/* harmony import */ var _ctrlsFactory__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(243);
47629/* harmony import */ var _gridBodyComp_fakeHScrollComp__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(244);
47630/* harmony import */ var _gridBodyComp_pinnedWidthService__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(246);
47631/* harmony import */ var _gridBodyComp_rowContainer_rowContainerComp__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(140);
47632/* harmony import */ var _entities_rowNodeEventThrottle__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(247);
47633/* harmony import */ var _headerRendering_cells_column_standardMenu__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(171);
47634/**
47635 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
47636 * @version v27.3.0
47637 * @link https://www.ag-grid.com/
47638 * @license MIT
47639 */
47640var __read = (undefined && undefined.__read) || function (o, n) {
47641 var m = typeof Symbol === "function" && o[Symbol.iterator];
47642 if (!m) return o;
47643 var i = m.call(o), r, ar = [], e;
47644 try {
47645 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
47646 }
47647 catch (error) { e = { error: error }; }
47648 finally {
47649 try {
47650 if (r && !r.done && (m = i["return"])) m.call(i);
47651 }
47652 finally { if (e) throw e.error; }
47653 }
47654 return ar;
47655};
47656var __spread = (undefined && undefined.__spread) || function () {
47657 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
47658 return ar;
47659};
47660
47661
47662
47663
47664
47665
47666
47667
47668
47669
47670
47671
47672
47673
47674
47675
47676
47677
47678
47679
47680
47681
47682
47683
47684
47685
47686
47687
47688
47689
47690
47691
47692
47693
47694
47695
47696
47697
47698
47699
47700
47701
47702
47703
47704
47705
47706
47707
47708
47709
47710
47711
47712
47713
47714
47715
47716
47717
47718
47719
47720
47721
47722
47723
47724
47725
47726
47727
47728
47729
47730
47731
47732
47733
47734
47735
47736
47737
47738
47739
47740
47741
47742
47743
47744
47745
47746
47747
47748
47749
47750
47751// creates JavaScript vanilla Grid, including JavaScript (ag-stack) components, which can
47752// be wrapped by the framework wrappers
47753var Grid = /** @class */ (function () {
47754 function Grid(eGridDiv, gridOptions, params) {
47755 if (!gridOptions) {
47756 console.error('AG Grid: no gridOptions provided to the grid');
47757 return;
47758 }
47759 this.gridOptions = gridOptions;
47760 new GridCoreCreator().create(eGridDiv, gridOptions, function (context) {
47761 var gridComp = new _gridComp_gridComp__WEBPACK_IMPORTED_MODULE_21__["GridComp"](eGridDiv);
47762 context.createBean(gridComp);
47763 }, undefined, params);
47764 }
47765 Grid.prototype.destroy = function () {
47766 if (this.gridOptions && this.gridOptions.api) {
47767 this.gridOptions.api.destroy();
47768 }
47769 };
47770 return Grid;
47771}());
47772
47773// created services of grid only, no UI, so frameworks can use this if providing
47774// their own UI
47775var GridCoreCreator = /** @class */ (function () {
47776 function GridCoreCreator() {
47777 }
47778 GridCoreCreator.prototype.create = function (eGridDiv, gridOptions, createUi, acceptChanges, params) {
47779 var _this = this;
47780 var debug = !!gridOptions.debug;
47781 var registeredModules = this.getRegisteredModules(params);
47782 var beanClasses = this.createBeansList(gridOptions.rowModelType, registeredModules);
47783 var providedBeanInstances = this.createProvidedBeans(eGridDiv, gridOptions, params);
47784 if (!beanClasses) {
47785 return;
47786 } // happens when no row model found
47787 var contextParams = {
47788 providedBeanInstances: providedBeanInstances,
47789 beanClasses: beanClasses,
47790 debug: debug
47791 };
47792 var logger = new _logger__WEBPACK_IMPORTED_MODULE_16__["Logger"]('AG Grid', function () { return gridOptions.debug; });
47793 var contextLogger = new _logger__WEBPACK_IMPORTED_MODULE_16__["Logger"]('Context', function () { return contextParams.debug; });
47794 var context = new _context_context__WEBPACK_IMPORTED_MODULE_20__["Context"](contextParams, contextLogger);
47795 var beans = context.getBean('beans');
47796 this.registerModuleUserComponents(beans, registeredModules);
47797 this.registerStackComponents(beans, registeredModules);
47798 this.registerControllers(beans, registeredModules);
47799 createUi(context);
47800 // we wait until the UI has finished initialising before setting in columns and rows
47801 beans.ctrlsService.whenReady(function () {
47802 _this.setColumnsAndData(beans);
47803 _this.dispatchGridReadyEvent(beans, gridOptions);
47804 var isEnterprise = _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_72__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_73__["ModuleNames"].EnterpriseCoreModule);
47805 logger.log("initialised successfully, enterprise = " + isEnterprise);
47806 });
47807 if (acceptChanges) {
47808 acceptChanges(context);
47809 }
47810 };
47811 GridCoreCreator.prototype.registerControllers = function (beans, registeredModules) {
47812 registeredModules.forEach(function (module) {
47813 if (module.controllers) {
47814 module.controllers.forEach(function (meta) { return beans.ctrlsFactory.register(meta); });
47815 }
47816 });
47817 };
47818 GridCoreCreator.prototype.registerStackComponents = function (beans, registeredModules) {
47819 var agStackComponents = this.createAgStackComponentsList(registeredModules);
47820 beans.agStackComponentsRegistry.setupComponents(agStackComponents);
47821 };
47822 GridCoreCreator.prototype.getRegisteredModules = function (params) {
47823 var passedViaConstructor = params ? params.modules : null;
47824 var registered = _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_72__["ModuleRegistry"].getRegisteredModules();
47825 var allModules = [];
47826 var mapNames = {};
47827 // adds to list and removes duplicates
47828 function addModule(moduleBased, mod) {
47829 function addIndividualModule(currentModule) {
47830 if (!mapNames[currentModule.moduleName]) {
47831 mapNames[currentModule.moduleName] = true;
47832 allModules.push(currentModule);
47833 _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_72__["ModuleRegistry"].register(currentModule, moduleBased);
47834 }
47835 }
47836 addIndividualModule(mod);
47837 if (mod.dependantModules) {
47838 mod.dependantModules.forEach(addModule.bind(null, moduleBased));
47839 }
47840 }
47841 if (passedViaConstructor) {
47842 passedViaConstructor.forEach(addModule.bind(null, true));
47843 }
47844 if (registered) {
47845 registered.forEach(addModule.bind(null, !_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_72__["ModuleRegistry"].isPackageBased()));
47846 }
47847 return allModules;
47848 };
47849 GridCoreCreator.prototype.registerModuleUserComponents = function (beans, registeredModules) {
47850 var moduleUserComps = this.extractModuleEntity(registeredModules, function (module) { return module.userComponents ? module.userComponents : []; });
47851 moduleUserComps.forEach(function (compMeta) {
47852 beans.userComponentRegistry.registerDefaultComponent(compMeta.componentName, compMeta.componentClass);
47853 });
47854 };
47855 GridCoreCreator.prototype.createProvidedBeans = function (eGridDiv, gridOptions, params) {
47856 var frameworkOverrides = params ? params.frameworkOverrides : null;
47857 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_78__["missing"])(frameworkOverrides)) {
47858 frameworkOverrides = new _vanillaFrameworkOverrides__WEBPACK_IMPORTED_MODULE_32__["VanillaFrameworkOverrides"]();
47859 }
47860 var seed = {
47861 gridOptions: gridOptions,
47862 eGridDiv: eGridDiv,
47863 globalEventListener: params ? params.globalEventListener : null,
47864 frameworkOverrides: frameworkOverrides
47865 };
47866 if (params && params.providedBeanInstances) {
47867 Object.assign(seed, params.providedBeanInstances);
47868 }
47869 return seed;
47870 };
47871 GridCoreCreator.prototype.createAgStackComponentsList = function (registeredModules) {
47872 var components = [
47873 { componentName: 'AgCheckbox', componentClass: _widgets_agCheckbox__WEBPACK_IMPORTED_MODULE_30__["AgCheckbox"] },
47874 { componentName: 'AgRadioButton', componentClass: _widgets_agRadioButton__WEBPACK_IMPORTED_MODULE_31__["AgRadioButton"] },
47875 { componentName: 'AgToggleButton', componentClass: _widgets_agToggleButton__WEBPACK_IMPORTED_MODULE_68__["AgToggleButton"] },
47876 { componentName: 'AgInputTextField', componentClass: _widgets_agInputTextField__WEBPACK_IMPORTED_MODULE_60__["AgInputTextField"] },
47877 { componentName: 'AgInputTextArea', componentClass: _widgets_agInputTextArea__WEBPACK_IMPORTED_MODULE_61__["AgInputTextArea"] },
47878 { componentName: 'AgInputNumberField', componentClass: _widgets_agInputNumberField__WEBPACK_IMPORTED_MODULE_64__["AgInputNumberField"] },
47879 { componentName: 'AgInputRange', componentClass: _widgets_agInputRange__WEBPACK_IMPORTED_MODULE_65__["AgInputRange"] },
47880 { componentName: 'AgSelect', componentClass: _widgets_agSelect__WEBPACK_IMPORTED_MODULE_66__["AgSelect"] },
47881 { componentName: 'AgSlider', componentClass: _widgets_agSlider__WEBPACK_IMPORTED_MODULE_62__["AgSlider"] },
47882 { componentName: 'AgAngleSelect', componentClass: _widgets_agAngleSelect__WEBPACK_IMPORTED_MODULE_67__["AgAngleSelect"] },
47883 { componentName: 'AgColorPicker', componentClass: _widgets_agColorPicker__WEBPACK_IMPORTED_MODULE_63__["AgColorPicker"] },
47884 { componentName: 'AgGridBody', componentClass: _gridBodyComp_gridBodyComp__WEBPACK_IMPORTED_MODULE_9__["GridBodyComp"] },
47885 { componentName: 'AgHeaderRoot', componentClass: _headerRendering_gridHeaderComp__WEBPACK_IMPORTED_MODULE_5__["GridHeaderComp"] },
47886 { componentName: 'AgPagination', componentClass: _pagination_paginationComp__WEBPACK_IMPORTED_MODULE_54__["PaginationComp"] },
47887 { componentName: 'AgOverlayWrapper', componentClass: _rendering_overlays_overlayWrapperComponent__WEBPACK_IMPORTED_MODULE_56__["OverlayWrapperComponent"] },
47888 { componentName: 'AgGroupComponent', componentClass: _widgets_agGroupComponent__WEBPACK_IMPORTED_MODULE_57__["AgGroupComponent"] },
47889 { componentName: 'AgPanel', componentClass: _widgets_agPanel__WEBPACK_IMPORTED_MODULE_59__["AgPanel"] },
47890 { componentName: 'AgDialog', componentClass: _widgets_agDialog__WEBPACK_IMPORTED_MODULE_58__["AgDialog"] },
47891 { componentName: 'AgRowContainer', componentClass: _gridBodyComp_rowContainer_rowContainerComp__WEBPACK_IMPORTED_MODULE_88__["RowContainerComp"] },
47892 { componentName: 'AgFakeHorizontalScroll', componentClass: _gridBodyComp_fakeHScrollComp__WEBPACK_IMPORTED_MODULE_86__["FakeHScrollComp"] }
47893 ];
47894 var moduleAgStackComps = this.extractModuleEntity(registeredModules, function (module) { return module.agStackComponents ? module.agStackComponents : []; });
47895 components = components.concat(moduleAgStackComps);
47896 return components;
47897 };
47898 GridCoreCreator.prototype.createBeansList = function (rowModelType, registeredModules) {
47899 var rowModelClass = this.getRowModelClass(rowModelType, registeredModules);
47900 if (!rowModelClass) {
47901 return;
47902 }
47903 // beans should only contain SERVICES, it should NEVER contain COMPONENTS
47904 var beans = [
47905 rowModelClass, _rendering_beans__WEBPACK_IMPORTED_MODULE_48__["Beans"], _entities_rowPosition__WEBPACK_IMPORTED_MODULE_69__["RowPositionUtils"], _entities_cellPosition__WEBPACK_IMPORTED_MODULE_70__["CellPositionUtils"], _headerRendering_common_headerPosition__WEBPACK_IMPORTED_MODULE_76__["HeaderPositionUtils"],
47906 _pagination_paginationAutoPageSizeService__WEBPACK_IMPORTED_MODULE_39__["PaginationAutoPageSizeService"], _gridApi__WEBPACK_IMPORTED_MODULE_10__["GridApi"], _components_framework_userComponentRegistry__WEBPACK_IMPORTED_MODULE_45__["UserComponentRegistry"], _components_framework_agComponentUtils__WEBPACK_IMPORTED_MODULE_46__["AgComponentUtils"],
47907 _components_framework_componentMetadataProvider__WEBPACK_IMPORTED_MODULE_47__["ComponentMetadataProvider"], _misc_resizeObserverService__WEBPACK_IMPORTED_MODULE_55__["ResizeObserverService"], _components_framework_userComponentFactory__WEBPACK_IMPORTED_MODULE_44__["UserComponentFactory"],
47908 _rendering_rowContainerHeightService__WEBPACK_IMPORTED_MODULE_52__["RowContainerHeightService"], _headerRendering_common_horizontalResizeService__WEBPACK_IMPORTED_MODULE_19__["HorizontalResizeService"],
47909 _pinnedRowModel_pinnedRowModel__WEBPACK_IMPORTED_MODULE_71__["PinnedRowModel"], _dragAndDrop_dragService__WEBPACK_IMPORTED_MODULE_23__["DragService"], _columns_displayedGroupCreator__WEBPACK_IMPORTED_MODULE_12__["DisplayedGroupCreator"], _eventService__WEBPACK_IMPORTED_MODULE_8__["EventService"], _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_0__["GridOptionsWrapper"],
47910 _widgets_popupService__WEBPACK_IMPORTED_MODULE_15__["PopupService"], _selectionService__WEBPACK_IMPORTED_MODULE_1__["SelectionService"], _filter_filterManager__WEBPACK_IMPORTED_MODULE_6__["FilterManager"], _columns_columnModel__WEBPACK_IMPORTED_MODULE_3__["ColumnModel"], _headerRendering_common_headerNavigationService__WEBPACK_IMPORTED_MODULE_77__["HeaderNavigationService"],
47911 _pagination_paginationProxy__WEBPACK_IMPORTED_MODULE_38__["PaginationProxy"], _rendering_rowRenderer__WEBPACK_IMPORTED_MODULE_4__["RowRenderer"], _valueService_expressionService__WEBPACK_IMPORTED_MODULE_13__["ExpressionService"], _columns_columnFactory__WEBPACK_IMPORTED_MODULE_11__["ColumnFactory"], _templateService__WEBPACK_IMPORTED_MODULE_14__["TemplateService"],
47912 _alignedGridsService__WEBPACK_IMPORTED_MODULE_43__["AlignedGridsService"], _gridBodyComp_navigationService__WEBPACK_IMPORTED_MODULE_51__["NavigationService"], _valueService_valueCache__WEBPACK_IMPORTED_MODULE_41__["ValueCache"], _valueService_valueService__WEBPACK_IMPORTED_MODULE_7__["ValueService"], _logger__WEBPACK_IMPORTED_MODULE_16__["LoggerFactory"],
47913 _columns_columnUtils__WEBPACK_IMPORTED_MODULE_17__["ColumnUtils"], _rendering_autoWidthCalculator__WEBPACK_IMPORTED_MODULE_18__["AutoWidthCalculator"], _headerRendering_cells_column_standardMenu__WEBPACK_IMPORTED_MODULE_90__["StandardMenuFactory"], _dragAndDrop_dragAndDropService__WEBPACK_IMPORTED_MODULE_22__["DragAndDropService"], _columns_columnApi__WEBPACK_IMPORTED_MODULE_2__["ColumnApi"],
47914 _focusService__WEBPACK_IMPORTED_MODULE_25__["FocusService"], _gridBodyComp_mouseEventService__WEBPACK_IMPORTED_MODULE_26__["MouseEventService"], _environment__WEBPACK_IMPORTED_MODULE_49__["Environment"], _cellNavigationService__WEBPACK_IMPORTED_MODULE_27__["CellNavigationService"], _rendering_valueFormatterService__WEBPACK_IMPORTED_MODULE_29__["ValueFormatterService"],
47915 _styling_stylingService__WEBPACK_IMPORTED_MODULE_34__["StylingService"], _gridBodyComp_scrollVisibleService__WEBPACK_IMPORTED_MODULE_33__["ScrollVisibleService"], _sortController__WEBPACK_IMPORTED_MODULE_24__["SortController"], _rendering_columnHoverService__WEBPACK_IMPORTED_MODULE_35__["ColumnHoverService"], _rendering_columnAnimationService__WEBPACK_IMPORTED_MODULE_36__["ColumnAnimationService"],
47916 _rowNodes_selectableService__WEBPACK_IMPORTED_MODULE_53__["SelectableService"], _columns_autoGroupColService__WEBPACK_IMPORTED_MODULE_37__["AutoGroupColService"], _valueService_changeDetectionService__WEBPACK_IMPORTED_MODULE_42__["ChangeDetectionService"], _misc_animationFrameService__WEBPACK_IMPORTED_MODULE_50__["AnimationFrameService"],
47917 _undoRedo_undoRedoService__WEBPACK_IMPORTED_MODULE_74__["UndoRedoService"], _components_agStackComponentsRegistry__WEBPACK_IMPORTED_MODULE_75__["AgStackComponentsRegistry"], _columns_columnDefFactory__WEBPACK_IMPORTED_MODULE_80__["ColumnDefFactory"],
47918 _rendering_row_rowCssClassCalculator__WEBPACK_IMPORTED_MODULE_81__["RowCssClassCalculator"], _rowNodeCache_rowNodeBlockLoader__WEBPACK_IMPORTED_MODULE_82__["RowNodeBlockLoader"], _rowNodes_rowNodeSorter__WEBPACK_IMPORTED_MODULE_83__["RowNodeSorter"], _ctrlsService__WEBPACK_IMPORTED_MODULE_84__["CtrlsService"],
47919 _gridBodyComp_pinnedWidthService__WEBPACK_IMPORTED_MODULE_87__["PinnedWidthService"], _entities_rowNodeEventThrottle__WEBPACK_IMPORTED_MODULE_89__["RowNodeEventThrottle"], _ctrlsFactory__WEBPACK_IMPORTED_MODULE_85__["CtrlsFactory"]
47920 ];
47921 var moduleBeans = this.extractModuleEntity(registeredModules, function (module) { return module.beans ? module.beans : []; });
47922 beans.push.apply(beans, __spread(moduleBeans));
47923 // check for duplicates, as different modules could include the same beans that
47924 // they depend on, eg ClientSideRowModel in enterprise, and ClientSideRowModel in community
47925 var beansNoDuplicates = [];
47926 beans.forEach(function (bean) {
47927 if (beansNoDuplicates.indexOf(bean) < 0) {
47928 beansNoDuplicates.push(bean);
47929 }
47930 });
47931 return beansNoDuplicates;
47932 };
47933 GridCoreCreator.prototype.extractModuleEntity = function (moduleEntities, extractor) {
47934 return [].concat.apply([], __spread(moduleEntities.map(extractor)));
47935 };
47936 GridCoreCreator.prototype.setColumnsAndData = function (beans) {
47937 var columnDefs = beans.gridOptionsWrapper.getColumnDefs();
47938 beans.columnModel.setColumnDefs(columnDefs || [], "gridInitializing");
47939 beans.rowModel.start();
47940 };
47941 GridCoreCreator.prototype.dispatchGridReadyEvent = function (beans, gridOptions) {
47942 var readyEvent = {
47943 type: _events__WEBPACK_IMPORTED_MODULE_28__["Events"].EVENT_GRID_READY,
47944 api: gridOptions.api,
47945 columnApi: gridOptions.columnApi
47946 };
47947 beans.eventService.dispatchEvent(readyEvent);
47948 };
47949 GridCoreCreator.prototype.getRowModelClass = function (rowModelType, registeredModules) {
47950 // default to client side
47951 if (!rowModelType) {
47952 rowModelType = _constants_constants__WEBPACK_IMPORTED_MODULE_40__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE;
47953 }
47954 var rowModelClasses = {};
47955 registeredModules.forEach(function (module) {
47956 Object(_utils_object__WEBPACK_IMPORTED_MODULE_79__["iterateObject"])(module.rowModels, function (key, value) {
47957 rowModelClasses[key] = value;
47958 });
47959 });
47960 var rowModelClass = rowModelClasses[rowModelType];
47961 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_78__["exists"])(rowModelClass)) {
47962 return rowModelClass;
47963 }
47964 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_72__["ModuleRegistry"].isPackageBased()) {
47965 if ([_constants_constants__WEBPACK_IMPORTED_MODULE_40__["Constants"].ROW_MODEL_TYPE_VIEWPORT, _constants_constants__WEBPACK_IMPORTED_MODULE_40__["Constants"].ROW_MODEL_TYPE_SERVER_SIDE].includes(rowModelType))
47966 // If package based only the enterprise row models could be missing.
47967 console.error("AG Grid: Row Model \"" + rowModelType + "\" not found. Please ensure the package 'ag-grid-enterprise' is imported. Please see: https://www.ag-grid.com/javascript-grid/packages/");
47968 else {
47969 console.error('AG Grid: could not find row model for rowModelType ' + rowModelType);
47970 }
47971 }
47972 else {
47973 if (rowModelType === _constants_constants__WEBPACK_IMPORTED_MODULE_40__["Constants"].ROW_MODEL_TYPE_INFINITE) {
47974 console.error("AG Grid: Row Model \"Infinite\" not found. Please ensure the " + _modules_moduleNames__WEBPACK_IMPORTED_MODULE_73__["ModuleNames"].InfiniteRowModelModule + " module is registered. Please see: https://www.ag-grid.com/javascript-grid/modules/");
47975 }
47976 else if (rowModelType === _constants_constants__WEBPACK_IMPORTED_MODULE_40__["Constants"].ROW_MODEL_TYPE_VIEWPORT) {
47977 console.error("AG Grid: Row Model \"Viewport\" not found. Please ensure the AG Grid Enterprise Module " + _modules_moduleNames__WEBPACK_IMPORTED_MODULE_73__["ModuleNames"].ViewportRowModelModule + " module is registered. Please see: https://www.ag-grid.com/javascript-grid/modules/");
47978 }
47979 else if (rowModelType === _constants_constants__WEBPACK_IMPORTED_MODULE_40__["Constants"].ROW_MODEL_TYPE_SERVER_SIDE) {
47980 console.error("AG Grid: Row Model \"Server Side\" not found. Please ensure the AG Grid Enterprise Module " + _modules_moduleNames__WEBPACK_IMPORTED_MODULE_73__["ModuleNames"].ServerSideRowModelModule + " module is registered. Please see: https://www.ag-grid.com/javascript-grid/modules/");
47981 }
47982 else if (rowModelType === _constants_constants__WEBPACK_IMPORTED_MODULE_40__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE) {
47983 console.error("AG Grid: Row Model \"Client Side\" not found. Please ensure the " + _modules_moduleNames__WEBPACK_IMPORTED_MODULE_73__["ModuleNames"].ClientSideRowModelModule + " module is registered. Please see: https://www.ag-grid.com/javascript-grid/modules/");
47984 }
47985 else {
47986 console.error('AG Grid: could not find row model for rowModelType ' + rowModelType);
47987 }
47988 }
47989 };
47990 return GridCoreCreator;
47991}());
47992
47993
47994
47995
47996
47997/***/ }),
47998/* 212 */
47999/***/ (function(module, __webpack_exports__, __webpack_require__) {
48000
48001"use strict";
48002__webpack_require__.r(__webpack_exports__);
48003/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SelectionService", function() { return SelectionService; });
48004/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
48005/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
48006/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(23);
48007/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15);
48008/* harmony import */ var _utils_changedPath__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(182);
48009/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(13);
48010/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(7);
48011/**
48012 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
48013 * @version v27.3.0
48014 * @link https://www.ag-grid.com/
48015 * @license MIT
48016 */
48017var __extends = (undefined && undefined.__extends) || (function () {
48018 var extendStatics = function (d, b) {
48019 extendStatics = Object.setPrototypeOf ||
48020 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
48021 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
48022 return extendStatics(d, b);
48023 };
48024 return function (d, b) {
48025 extendStatics(d, b);
48026 function __() { this.constructor = d; }
48027 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
48028 };
48029})();
48030var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
48031 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
48032 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
48033 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
48034 return c > 3 && r && Object.defineProperty(target, key, r), r;
48035};
48036var __param = (undefined && undefined.__param) || function (paramIndex, decorator) {
48037 return function (target, key) { decorator(target, key, paramIndex); }
48038};
48039
48040
48041
48042
48043
48044
48045
48046
48047
48048
48049var SelectionService = /** @class */ (function (_super) {
48050 __extends(SelectionService, _super);
48051 function SelectionService() {
48052 return _super !== null && _super.apply(this, arguments) || this;
48053 }
48054 SelectionService.prototype.setBeans = function (loggerFactory) {
48055 this.logger = loggerFactory.create('selectionService');
48056 this.reset();
48057 };
48058 SelectionService.prototype.init = function () {
48059 this.groupSelectsChildren = this.gridOptionsWrapper.isGroupSelectsChildren();
48060 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_SELECTED, this.onRowSelected.bind(this));
48061 };
48062 SelectionService.prototype.setLastSelectedNode = function (rowNode) {
48063 this.lastSelectedNode = rowNode;
48064 };
48065 SelectionService.prototype.getLastSelectedNode = function () {
48066 return this.lastSelectedNode;
48067 };
48068 SelectionService.prototype.getSelectedNodes = function () {
48069 var selectedNodes = [];
48070 Object(_utils_object__WEBPACK_IMPORTED_MODULE_5__["iterateObject"])(this.selectedNodes, function (key, rowNode) {
48071 if (rowNode) {
48072 selectedNodes.push(rowNode);
48073 }
48074 });
48075 return selectedNodes;
48076 };
48077 SelectionService.prototype.getSelectedRows = function () {
48078 var selectedRows = [];
48079 Object(_utils_object__WEBPACK_IMPORTED_MODULE_5__["iterateObject"])(this.selectedNodes, function (key, rowNode) {
48080 if (rowNode && rowNode.data) {
48081 selectedRows.push(rowNode.data);
48082 }
48083 });
48084 return selectedRows;
48085 };
48086 SelectionService.prototype.removeGroupsFromSelection = function () {
48087 var _this = this;
48088 Object(_utils_object__WEBPACK_IMPORTED_MODULE_5__["iterateObject"])(this.selectedNodes, function (key, rowNode) {
48089 if (rowNode && rowNode.group) {
48090 _this.selectedNodes[rowNode.id] = undefined;
48091 }
48092 });
48093 };
48094 // should only be called if groupSelectsChildren=true
48095 SelectionService.prototype.updateGroupsFromChildrenSelections = function (changedPath) {
48096 // we only do this when group selection state depends on selected children
48097 if (!this.gridOptionsWrapper.isGroupSelectsChildren()) {
48098 return;
48099 }
48100 // also only do it if CSRM (code should never allow this anyway)
48101 if (this.rowModel.getType() !== _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE) {
48102 return;
48103 }
48104 var clientSideRowModel = this.rowModel;
48105 var rootNode = clientSideRowModel.getRootNode();
48106 if (!changedPath) {
48107 changedPath = new _utils_changedPath__WEBPACK_IMPORTED_MODULE_4__["ChangedPath"](true, rootNode);
48108 changedPath.setInactive();
48109 }
48110 changedPath.forEachChangedNodeDepthFirst(function (rowNode) {
48111 if (rowNode !== rootNode) {
48112 rowNode.calculateSelectedFromChildren();
48113 }
48114 });
48115 // clientSideRowModel.getTopLevelNodes()!.forEach((rowNode: RowNode) => {
48116 // rowNode.depthFirstSearch((node) => {
48117 // if (node.group) {
48118 // }
48119 // });
48120 // });
48121 };
48122 SelectionService.prototype.getNodeForIdIfSelected = function (id) {
48123 return this.selectedNodes[id];
48124 };
48125 SelectionService.prototype.clearOtherNodes = function (rowNodeToKeepSelected) {
48126 var _this = this;
48127 var groupsToRefresh = {};
48128 var updatedCount = 0;
48129 Object(_utils_object__WEBPACK_IMPORTED_MODULE_5__["iterateObject"])(this.selectedNodes, function (key, otherRowNode) {
48130 if (otherRowNode && otherRowNode.id !== rowNodeToKeepSelected.id) {
48131 var rowNode = _this.selectedNodes[otherRowNode.id];
48132 updatedCount += rowNode.setSelectedParams({
48133 newValue: false,
48134 clearSelection: false,
48135 suppressFinishActions: true
48136 });
48137 if (_this.groupSelectsChildren && otherRowNode.parent) {
48138 groupsToRefresh[otherRowNode.parent.id] = otherRowNode.parent;
48139 }
48140 }
48141 });
48142 Object(_utils_object__WEBPACK_IMPORTED_MODULE_5__["iterateObject"])(groupsToRefresh, function (key, group) {
48143 group.calculateSelectedFromChildren();
48144 });
48145 return updatedCount;
48146 };
48147 SelectionService.prototype.onRowSelected = function (event) {
48148 var rowNode = event.node;
48149 // we do not store the group rows when the groups select children
48150 if (this.groupSelectsChildren && rowNode.group) {
48151 return;
48152 }
48153 if (rowNode.isSelected()) {
48154 this.selectedNodes[rowNode.id] = rowNode;
48155 }
48156 else {
48157 this.selectedNodes[rowNode.id] = undefined;
48158 }
48159 };
48160 SelectionService.prototype.syncInRowNode = function (rowNode, oldNode) {
48161 this.syncInOldRowNode(rowNode, oldNode);
48162 this.syncInNewRowNode(rowNode);
48163 };
48164 // if the id has changed for the node, then this means the rowNode
48165 // is getting used for a different data item, which breaks
48166 // our selectedNodes, as the node now is mapped by the old id
48167 // which is inconsistent. so to keep the old node as selected,
48168 // we swap in the clone (with the old id and old data). this means
48169 // the oldNode is effectively a daemon we keep a reference to,
48170 // so if client calls api.getSelectedNodes(), it gets the daemon
48171 // in the result. when the client un-selects, the reference to the
48172 // daemon is removed. the daemon, because it's an oldNode, is not
48173 // used by the grid for rendering, it's a copy of what the node used
48174 // to be like before the id was changed.
48175 SelectionService.prototype.syncInOldRowNode = function (rowNode, oldNode) {
48176 var oldNodeHasDifferentId = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_6__["exists"])(oldNode) && (rowNode.id !== oldNode.id);
48177 if (oldNodeHasDifferentId && oldNode) {
48178 var id = oldNode.id;
48179 var oldNodeSelected = this.selectedNodes[id] == rowNode;
48180 if (oldNodeSelected) {
48181 this.selectedNodes[oldNode.id] = oldNode;
48182 }
48183 }
48184 };
48185 SelectionService.prototype.syncInNewRowNode = function (rowNode) {
48186 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_6__["exists"])(this.selectedNodes[rowNode.id])) {
48187 rowNode.setSelectedInitialValue(true);
48188 this.selectedNodes[rowNode.id] = rowNode;
48189 }
48190 else {
48191 rowNode.setSelectedInitialValue(false);
48192 }
48193 };
48194 SelectionService.prototype.reset = function () {
48195 this.logger.log('reset');
48196 this.selectedNodes = {};
48197 this.lastSelectedNode = null;
48198 };
48199 // returns a list of all nodes at 'best cost' - a feature to be used
48200 // with groups / trees. if a group has all it's children selected,
48201 // then the group appears in the result, but not the children.
48202 // Designed for use with 'children' as the group selection type,
48203 // where groups don't actually appear in the selection normally.
48204 SelectionService.prototype.getBestCostNodeSelection = function () {
48205 if (this.rowModel.getType() !== _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE) {
48206 console.warn('AG Grid: `getBestCostNodeSelection` is only available when using normal row model');
48207 return;
48208 }
48209 var clientSideRowModel = this.rowModel;
48210 var topLevelNodes = clientSideRowModel.getTopLevelNodes();
48211 if (topLevelNodes === null) {
48212 console.warn('AG Grid: `selectAll` not available doing `rowModel=virtual`');
48213 return;
48214 }
48215 var result = [];
48216 // recursive function, to find the selected nodes
48217 function traverse(nodes) {
48218 for (var i = 0, l = nodes.length; i < l; i++) {
48219 var node = nodes[i];
48220 if (node.isSelected()) {
48221 result.push(node);
48222 }
48223 else {
48224 // if not selected, then if it's a group, and the group
48225 // has children, continue to search for selections
48226 var maybeGroup = node;
48227 if (maybeGroup.group && maybeGroup.children) {
48228 traverse(maybeGroup.children);
48229 }
48230 }
48231 }
48232 }
48233 traverse(topLevelNodes);
48234 return result;
48235 };
48236 SelectionService.prototype.setRowModel = function (rowModel) {
48237 this.rowModel = rowModel;
48238 };
48239 SelectionService.prototype.isEmpty = function () {
48240 var count = 0;
48241 Object(_utils_object__WEBPACK_IMPORTED_MODULE_5__["iterateObject"])(this.selectedNodes, function (nodeId, rowNode) {
48242 if (rowNode) {
48243 count++;
48244 }
48245 });
48246 return count === 0;
48247 };
48248 SelectionService.prototype.deselectAllRowNodes = function (justFiltered) {
48249 if (justFiltered === void 0) { justFiltered = false; }
48250 var callback = function (rowNode) { return rowNode.selectThisNode(false); };
48251 var rowModelClientSide = this.rowModel.getType() === _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE;
48252 if (justFiltered) {
48253 if (!rowModelClientSide) {
48254 console.error('AG Grid: selecting just filtered only works with In Memory Row Model');
48255 return;
48256 }
48257 var clientSideRowModel = this.rowModel;
48258 clientSideRowModel.forEachNodeAfterFilter(callback);
48259 }
48260 else {
48261 Object(_utils_object__WEBPACK_IMPORTED_MODULE_5__["iterateObject"])(this.selectedNodes, function (id, rowNode) {
48262 // remember the reference can be to null, as we never 'delete' from the map
48263 if (rowNode) {
48264 callback(rowNode);
48265 }
48266 });
48267 // this clears down the map (whereas above only sets the items in map to 'undefined')
48268 this.reset();
48269 }
48270 // the above does not clean up the parent rows if they are selected
48271 if (rowModelClientSide && this.groupSelectsChildren) {
48272 this.updateGroupsFromChildrenSelections();
48273 }
48274 var event = {
48275 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_SELECTION_CHANGED,
48276 api: this.gridApi,
48277 columnApi: this.columnApi
48278 };
48279 this.eventService.dispatchEvent(event);
48280 };
48281 SelectionService.prototype.selectAllRowNodes = function (justFiltered) {
48282 if (justFiltered === void 0) { justFiltered = false; }
48283 if (this.rowModel.getType() !== _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE) {
48284 throw new Error("selectAll only available with normal row model, ie not " + this.rowModel.getType());
48285 }
48286 var clientSideRowModel = this.rowModel;
48287 var callback = function (rowNode) { return rowNode.selectThisNode(true); };
48288 if (justFiltered) {
48289 clientSideRowModel.forEachNodeAfterFilter(callback);
48290 }
48291 else {
48292 clientSideRowModel.forEachNode(callback);
48293 }
48294 // the above does not clean up the parent rows if they are selected
48295 if (this.rowModel.getType() === _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE && this.groupSelectsChildren) {
48296 this.updateGroupsFromChildrenSelections();
48297 }
48298 var event = {
48299 type: _events__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_SELECTION_CHANGED,
48300 api: this.gridApi,
48301 columnApi: this.columnApi
48302 };
48303 this.eventService.dispatchEvent(event);
48304 };
48305 /**
48306 * @method
48307 * @deprecated
48308 */
48309 SelectionService.prototype.selectNode = function (rowNode, tryMulti) {
48310 if (rowNode) {
48311 rowNode.setSelectedParams({ newValue: true, clearSelection: !tryMulti });
48312 }
48313 };
48314 /**
48315 * @method
48316 * @deprecated
48317 */
48318 SelectionService.prototype.deselectIndex = function (rowIndex) {
48319 var node = this.rowModel.getRow(rowIndex);
48320 this.deselectNode(node);
48321 };
48322 /**
48323 * @method
48324 * @deprecated
48325 */
48326 SelectionService.prototype.deselectNode = function (rowNode) {
48327 if (rowNode) {
48328 rowNode.setSelectedParams({ newValue: false, clearSelection: false });
48329 }
48330 };
48331 /**
48332 * @method
48333 * @deprecated
48334 */
48335 SelectionService.prototype.selectIndex = function (index, tryMulti) {
48336 var node = this.rowModel.getRow(index);
48337 this.selectNode(node, tryMulti);
48338 };
48339 __decorate([
48340 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowModel')
48341 ], SelectionService.prototype, "rowModel", void 0);
48342 __decorate([
48343 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
48344 ], SelectionService.prototype, "columnApi", void 0);
48345 __decorate([
48346 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
48347 ], SelectionService.prototype, "gridApi", void 0);
48348 __decorate([
48349 __param(0, Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Qualifier"])('loggerFactory'))
48350 ], SelectionService.prototype, "setBeans", null);
48351 __decorate([
48352 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
48353 ], SelectionService.prototype, "init", null);
48354 SelectionService = __decorate([
48355 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('selectionService')
48356 ], SelectionService);
48357 return SelectionService;
48358}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
48359
48360
48361
48362
48363
48364/***/ }),
48365/* 213 */
48366/***/ (function(module, __webpack_exports__, __webpack_require__) {
48367
48368"use strict";
48369__webpack_require__.r(__webpack_exports__);
48370/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColumnApi", function() { return ColumnApi; });
48371/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
48372/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(37);
48373/**
48374 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
48375 * @version v27.3.0
48376 * @link https://www.ag-grid.com/
48377 * @license MIT
48378 */
48379var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
48380 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
48381 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
48382 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
48383 return c > 3 && r && Object.defineProperty(target, key, r), r;
48384};
48385
48386
48387var ColumnApi = /** @class */ (function () {
48388 function ColumnApi() {
48389 }
48390 /** Gets the grid to size the columns to the specified width in pixels, e.g. `sizeColumnsToFit(900)`. To have the grid fit the columns to the grid's width, use the Grid API `gridApi.sizeColumnsToFit()` instead. */
48391 ColumnApi.prototype.sizeColumnsToFit = function (gridWidth) {
48392 // AG-3403 validate that gridWidth is provided because this method has the same name as
48393 // a method on the grid API that takes no arguments, and it's easy to confuse the two
48394 if (typeof gridWidth === "undefined") {
48395 console.error('AG Grid: missing parameter to columnApi.sizeColumnsToFit(gridWidth)');
48396 }
48397 this.columnModel.sizeColumnsToFit(gridWidth, 'api');
48398 };
48399 /** Call this if you want to open or close a column group. */
48400 ColumnApi.prototype.setColumnGroupOpened = function (group, newValue) { this.columnModel.setColumnGroupOpened(group, newValue, 'api'); };
48401 /** Returns the column group with the given name. */
48402 ColumnApi.prototype.getColumnGroup = function (name, instanceId) { return this.columnModel.getColumnGroup(name, instanceId); };
48403 /** Returns the provided column group with the given name. */
48404 ColumnApi.prototype.getProvidedColumnGroup = function (name) { return this.columnModel.getProvidedColumnGroup(name); };
48405 /** Returns the display name for a column. Useful if you are doing your own header rendering and want the grid to work out if `headerValueGetter` is used, or if you are doing your own column management GUI, to know what to show as the column name. */
48406 ColumnApi.prototype.getDisplayNameForColumn = function (column, location) { return this.columnModel.getDisplayNameForColumn(column, location) || ''; };
48407 /** Returns the display name for a column group (when grouping columns). */
48408 ColumnApi.prototype.getDisplayNameForColumnGroup = function (columnGroup, location) { return this.columnModel.getDisplayNameForColumnGroup(columnGroup, location) || ''; };
48409 /** Returns the column with the given `colKey`, which can either be the `colId` (a string) or the `colDef` (an object). */
48410 ColumnApi.prototype.getColumn = function (key) { return this.columnModel.getPrimaryColumn(key); };
48411 /** Applies the state of the columns from a previous state. Returns `false` if one or more columns could not be found. */
48412 ColumnApi.prototype.applyColumnState = function (params) { return this.columnModel.applyColumnState(params, 'api'); };
48413 /** Gets the state of the columns. Typically used when saving column state. */
48414 ColumnApi.prototype.getColumnState = function () { return this.columnModel.getColumnState(); };
48415 /** Sets the state back to match the originally provided column definitions. */
48416 ColumnApi.prototype.resetColumnState = function () { this.columnModel.resetColumnState('api'); };
48417 /** Gets the state of the column groups. Typically used when saving column group state. */
48418 ColumnApi.prototype.getColumnGroupState = function () { return this.columnModel.getColumnGroupState(); };
48419 /** Sets the state of the column group state from a previous state. */
48420 ColumnApi.prototype.setColumnGroupState = function (stateItems) { this.columnModel.setColumnGroupState(stateItems, 'api'); };
48421 /** Sets the state back to match the originally provided column definitions. */
48422 ColumnApi.prototype.resetColumnGroupState = function () { this.columnModel.resetColumnGroupState('api'); };
48423 /** Returns `true` if pinning left or right, otherwise `false`. */
48424 ColumnApi.prototype.isPinning = function () { return this.columnModel.isPinningLeft() || this.columnModel.isPinningRight(); };
48425 /** Returns `true` if pinning left, otherwise `false`. */
48426 ColumnApi.prototype.isPinningLeft = function () { return this.columnModel.isPinningLeft(); };
48427 /** Returns `true` if pinning right, otherwise `false`. */
48428 ColumnApi.prototype.isPinningRight = function () { return this.columnModel.isPinningRight(); };
48429 /** Returns the column to the right of the provided column, taking into consideration open / closed column groups and visible columns. This is useful if you need to know what column is beside yours e.g. if implementing your own cell navigation. */
48430 ColumnApi.prototype.getDisplayedColAfter = function (col) { return this.columnModel.getDisplayedColAfter(col); };
48431 /** Same as `getVisibleColAfter` except gives column to the left. */
48432 ColumnApi.prototype.getDisplayedColBefore = function (col) { return this.columnModel.getDisplayedColBefore(col); };
48433 /** Sets the visibility of a column. Key can be the column ID or `Column` object. */
48434 ColumnApi.prototype.setColumnVisible = function (key, visible) { this.columnModel.setColumnVisible(key, visible, 'api'); };
48435 /** Same as `setColumnVisible`, but provide a list of column keys. */
48436 ColumnApi.prototype.setColumnsVisible = function (keys, visible) { this.columnModel.setColumnsVisible(keys, visible, 'api'); };
48437 /** Sets the column pinned / unpinned. Key can be the column ID, field, `ColDef` object or `Column` object. */
48438 ColumnApi.prototype.setColumnPinned = function (key, pinned) { this.columnModel.setColumnPinned(key, pinned, 'api'); };
48439 /** Same as `setColumnPinned`, but provide a list of column keys. */
48440 ColumnApi.prototype.setColumnsPinned = function (keys, pinned) { this.columnModel.setColumnsPinned(keys, pinned, 'api'); };
48441 /** Returns all the columns, regardless of visible or not. */
48442 ColumnApi.prototype.getAllColumns = function () { return this.columnModel.getAllPrimaryColumns(); };
48443 /**
48444 * Returns all the grid columns, same as `getAllColumns()`, except
48445 *
48446 * a) it has the order of the columns that are presented in the grid
48447 *
48448 * b) it's after the 'pivot' step, so if pivoting, has the value columns for the pivot.
48449 */
48450 ColumnApi.prototype.getAllGridColumns = function () { return this.columnModel.getAllGridColumns(); };
48451 /** Same as `getAllDisplayedColumns` but just for the pinned left portion of the grid. */
48452 ColumnApi.prototype.getDisplayedLeftColumns = function () { return this.columnModel.getDisplayedLeftColumns(); };
48453 /** Same as `getAllDisplayedColumns` but just for the center portion of the grid. */
48454 ColumnApi.prototype.getDisplayedCenterColumns = function () { return this.columnModel.getDisplayedCenterColumns(); };
48455 /** Same as `getAllDisplayedColumns` but just for the pinned right portion of the grid. */
48456 ColumnApi.prototype.getDisplayedRightColumns = function () { return this.columnModel.getDisplayedRightColumns(); };
48457 /** Returns all columns currently displayed (e.g. are visible and if in a group, the group is showing the columns) for the pinned left, centre and pinned right portions of the grid. */
48458 ColumnApi.prototype.getAllDisplayedColumns = function () { return this.columnModel.getAllDisplayedColumns(); };
48459 /** Same as `getAllGridColumns()`, except only returns rendered columns, i.e. columns that are not within the viewport and therefore not rendered, due to column virtualisation, are not displayed. */
48460 ColumnApi.prototype.getAllDisplayedVirtualColumns = function () { return this.columnModel.getViewportColumns(); };
48461 /** Moves a column to `toIndex`. The column is first removed, then added at the `toIndex` location, thus index locations will change to the right of the column after the removal. */
48462 ColumnApi.prototype.moveColumn = function (key, toIndex) {
48463 if (typeof key === 'number') {
48464 // moveColumn used to take indexes, so this is advising user who hasn't moved to new method name
48465 console.warn('AG Grid: you are using moveColumn(fromIndex, toIndex) - moveColumn takes a column key and a destination index, not two indexes, to move with indexes use moveColumnByIndex(from,to) instead');
48466 this.columnModel.moveColumnByIndex(key, toIndex, 'api');
48467 }
48468 else {
48469 this.columnModel.moveColumn(key, toIndex, 'api');
48470 }
48471 };
48472 /** Same as `moveColumn` but works on index locations. */
48473 ColumnApi.prototype.moveColumnByIndex = function (fromIndex, toIndex) { this.columnModel.moveColumnByIndex(fromIndex, toIndex, 'api'); };
48474 /** Same as `moveColumn` but works on list. */
48475 ColumnApi.prototype.moveColumns = function (columnsToMoveKeys, toIndex) { this.columnModel.moveColumns(columnsToMoveKeys, toIndex, 'api'); };
48476 /** Move the column to a new position in the row grouping order. */
48477 ColumnApi.prototype.moveRowGroupColumn = function (fromIndex, toIndex) { this.columnModel.moveRowGroupColumn(fromIndex, toIndex); };
48478 /** Sets the agg function for a column. `aggFunc` can be one of `'min' | 'max' | 'sum'`. */
48479 ColumnApi.prototype.setColumnAggFunc = function (key, aggFunc) { this.columnModel.setColumnAggFunc(key, aggFunc); };
48480 /** Sets the column width on a single column. The finished flag gets included in the resulting event and not used internally by the grid. The finished flag is intended for dragging, where a dragging action will produce many `columnWidth` events, so the consumer of events knows when it receives the last event in a stream. The finished parameter is optional, and defaults to `true`. */
48481 ColumnApi.prototype.setColumnWidth = function (key, newWidth, finished, source) {
48482 if (finished === void 0) { finished = true; }
48483 this.columnModel.setColumnWidths([{ key: key, newWidth: newWidth }], false, finished, source);
48484 };
48485 /** Sets the column widths on multiple columns. This method offers better performance than calling `setColumnWidth` multiple times. The finished flag gets included in the resulting event and not used internally by the grid. The finished flag is intended for dragging, where a dragging action will produce many `columnWidth` events, so the consumer of events knows when it receives the last event in a stream. The finished parameter is optional, and defaults to `true`. */
48486 ColumnApi.prototype.setColumnWidths = function (columnWidths, finished, source) {
48487 if (finished === void 0) { finished = true; }
48488 this.columnModel.setColumnWidths(columnWidths, false, finished, source);
48489 };
48490 /** Set the pivot mode. */
48491 ColumnApi.prototype.setPivotMode = function (pivotMode) { this.columnModel.setPivotMode(pivotMode); };
48492 /** Get the pivot mode. */
48493 ColumnApi.prototype.isPivotMode = function () { return this.columnModel.isPivotMode(); };
48494 /** Returns the pivot column for the given `pivotKeys` and `valueColId`. Useful to then call operations on the pivot column. */
48495 ColumnApi.prototype.getSecondaryPivotColumn = function (pivotKeys, valueColKey) { return this.columnModel.getSecondaryPivotColumn(pivotKeys, valueColKey); };
48496 /** Set the value columns. */
48497 ColumnApi.prototype.setValueColumns = function (colKeys) { this.columnModel.setValueColumns(colKeys, 'api'); };
48498 /** Get value columns. */
48499 ColumnApi.prototype.getValueColumns = function () { return this.columnModel.getValueColumns(); };
48500 /** Remove a value column. */
48501 ColumnApi.prototype.removeValueColumn = function (colKey) { this.columnModel.removeValueColumn(colKey, 'api'); };
48502 /** Same as `removeValueColumns` but provide a list. */
48503 ColumnApi.prototype.removeValueColumns = function (colKeys) { this.columnModel.removeValueColumns(colKeys, 'api'); };
48504 /** Add a value column. */
48505 ColumnApi.prototype.addValueColumn = function (colKey) { this.columnModel.addValueColumn(colKey, 'api'); };
48506 /** Same as `addValueColumn` but provide a list. */
48507 ColumnApi.prototype.addValueColumns = function (colKeys) { this.columnModel.addValueColumns(colKeys, 'api'); };
48508 /** Set the row group columns. */
48509 ColumnApi.prototype.setRowGroupColumns = function (colKeys) { this.columnModel.setRowGroupColumns(colKeys, 'api'); };
48510 /** Remove a column from the row groups. */
48511 ColumnApi.prototype.removeRowGroupColumn = function (colKey) { this.columnModel.removeRowGroupColumn(colKey, 'api'); };
48512 /** Same as `removeRowGroupColumn` but provide a list of columns. */
48513 ColumnApi.prototype.removeRowGroupColumns = function (colKeys) { this.columnModel.removeRowGroupColumns(colKeys, 'api'); };
48514 /** Add a column to the row groups. */
48515 ColumnApi.prototype.addRowGroupColumn = function (colKey) { this.columnModel.addRowGroupColumn(colKey, 'api'); };
48516 /** Same as `addRowGroupColumn` but provide a list of columns. */
48517 ColumnApi.prototype.addRowGroupColumns = function (colKeys) { this.columnModel.addRowGroupColumns(colKeys, 'api'); };
48518 /** Get row group columns. */
48519 ColumnApi.prototype.getRowGroupColumns = function () { return this.columnModel.getRowGroupColumns(); };
48520 /** Set the pivot columns. */
48521 ColumnApi.prototype.setPivotColumns = function (colKeys) { this.columnModel.setPivotColumns(colKeys, 'api'); };
48522 /** Remove a pivot column. */
48523 ColumnApi.prototype.removePivotColumn = function (colKey) { this.columnModel.removePivotColumn(colKey, 'api'); };
48524 /** Same as `removePivotColumn` but provide a list of columns. */
48525 ColumnApi.prototype.removePivotColumns = function (colKeys) { this.columnModel.removePivotColumns(colKeys, 'api'); };
48526 /** Add a pivot column. */
48527 ColumnApi.prototype.addPivotColumn = function (colKey) { this.columnModel.addPivotColumn(colKey, 'api'); };
48528 /** Same as `addPivotColumn` but provide a list of columns. */
48529 ColumnApi.prototype.addPivotColumns = function (colKeys) { this.columnModel.addPivotColumns(colKeys, 'api'); };
48530 /** Get the pivot columns. */
48531 ColumnApi.prototype.getPivotColumns = function () { return this.columnModel.getPivotColumns(); };
48532 /** Same as `getAllDisplayedColumnGroups` but just for the pinned left portion of the grid. */
48533 ColumnApi.prototype.getLeftDisplayedColumnGroups = function () { return this.columnModel.getDisplayedTreeLeft(); };
48534 /** Same as `getAllDisplayedColumnGroups` but just for the center portion of the grid. */
48535 ColumnApi.prototype.getCenterDisplayedColumnGroups = function () { return this.columnModel.getDisplayedTreeCentre(); };
48536 /** Same as `getAllDisplayedColumnGroups` but just for the pinned right portion of the grid. */
48537 ColumnApi.prototype.getRightDisplayedColumnGroups = function () { return this.columnModel.getDisplayedTreeRight(); };
48538 /** Returns all 'root' column headers. If you are not grouping columns, these return the columns. If you are grouping, these return the top level groups - you can navigate down through each one to get the other lower level headers and finally the columns at the bottom. */
48539 ColumnApi.prototype.getAllDisplayedColumnGroups = function () { return this.columnModel.getAllDisplayedTrees(); };
48540 /** Auto-sizes a column based on its contents. */
48541 ColumnApi.prototype.autoSizeColumn = function (key, skipHeader) { return this.columnModel.autoSizeColumn(key, skipHeader, 'api'); };
48542 /** Same as `autoSizeColumn`, but provide a list of column keys. */
48543 ColumnApi.prototype.autoSizeColumns = function (keys, skipHeader) {
48544 this.columnModel.autoSizeColumns({ columns: keys, skipHeader: skipHeader });
48545 };
48546 /** Calls `autoSizeColumns` on all displayed columns. */
48547 ColumnApi.prototype.autoSizeAllColumns = function (skipHeader) { this.columnModel.autoSizeAllColumns(skipHeader, 'api'); };
48548 /** Set the secondary pivot columns. */
48549 ColumnApi.prototype.setSecondaryColumns = function (colDefs) { this.columnModel.setSecondaryColumns(colDefs, 'api'); };
48550 /** Returns the grid's secondary columns. */
48551 ColumnApi.prototype.getSecondaryColumns = function () { return this.columnModel.getSecondaryColumns(); };
48552 /** Returns the grid's primary columns. */
48553 ColumnApi.prototype.getPrimaryColumns = function () { return this.columnModel.getAllPrimaryColumns(); };
48554 ColumnApi.prototype.cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid = function () {
48555 // some users were raising support issues with regards memory leaks. the problem was the customers applications
48556 // were keeping references to the API. trying to educate them all would be difficult, easier to just remove
48557 // all references in the API so at least the core grid can be garbage collected.
48558 //
48559 // wait about 100ms before clearing down the references, in case user has some cleanup to do,
48560 // and needs to deference the API first
48561 setTimeout(_utils__WEBPACK_IMPORTED_MODULE_1__["_"].removeAllReferences.bind(window, this, 'Column API'), 100);
48562 };
48563 // below goes through deprecated items, prints message to user, then calls the new version of the same method
48564 // public getColumnDefs(): (ColDef | ColGroupDef)[] {
48565 // this.setColumnGroupOpened(group, newValue);
48566 // return null;
48567 // }
48568 /** @deprecated columnGroupOpened no longer exists, use setColumnGroupOpened */
48569 ColumnApi.prototype.columnGroupOpened = function (group, newValue) {
48570 console.error('AG Grid: columnGroupOpened no longer exists, use setColumnGroupOpened');
48571 this.setColumnGroupOpened(group, newValue);
48572 };
48573 /** @deprecated hideColumns is deprecated, use setColumnsVisible */
48574 ColumnApi.prototype.hideColumns = function (colIds, hide) {
48575 console.error('AG Grid: hideColumns is deprecated, use setColumnsVisible');
48576 this.columnModel.setColumnsVisible(colIds, !hide, 'api');
48577 };
48578 /** @deprecated hideColumn is deprecated, use setColumnVisible */
48579 ColumnApi.prototype.hideColumn = function (colId, hide) {
48580 console.error('AG Grid: hideColumn is deprecated, use setColumnVisible');
48581 this.columnModel.setColumnVisible(colId, !hide, 'api');
48582 };
48583 /** @deprecated setState is deprecated, use setColumnState */
48584 ColumnApi.prototype.setState = function (columnState) {
48585 console.error('AG Grid: setState is deprecated, use setColumnState');
48586 return this.setColumnState(columnState);
48587 };
48588 /** @deprecated getState is deprecated, use getColumnState */
48589 ColumnApi.prototype.getState = function () {
48590 console.error('AG Grid: getState is deprecated, use getColumnState');
48591 return this.getColumnState();
48592 };
48593 /** @deprecated resetState is deprecated, use resetColumnState */
48594 ColumnApi.prototype.resetState = function () {
48595 console.error('AG Grid: resetState is deprecated, use resetColumnState');
48596 this.resetColumnState();
48597 };
48598 /** @deprecated getAggregationColumns is deprecated, use getValueColumns */
48599 ColumnApi.prototype.getAggregationColumns = function () {
48600 console.error('AG Grid: getAggregationColumns is deprecated, use getValueColumns');
48601 return this.columnModel.getValueColumns();
48602 };
48603 /** @deprecated removeAggregationColumn is deprecated, use removeValueColumn */
48604 ColumnApi.prototype.removeAggregationColumn = function (colKey) {
48605 console.error('AG Grid: removeAggregationColumn is deprecated, use removeValueColumn');
48606 this.columnModel.removeValueColumn(colKey, 'api');
48607 };
48608 /** @deprecated removeAggregationColumns is deprecated, use removeValueColumns */
48609 ColumnApi.prototype.removeAggregationColumns = function (colKeys) {
48610 console.error('AG Grid: removeAggregationColumns is deprecated, use removeValueColumns');
48611 this.columnModel.removeValueColumns(colKeys, 'api');
48612 };
48613 /** @deprecated addAggregationColumn is deprecated, use addValueColumn */
48614 ColumnApi.prototype.addAggregationColumn = function (colKey) {
48615 console.error('AG Grid: addAggregationColumn is deprecated, use addValueColumn');
48616 this.columnModel.addValueColumn(colKey, 'api');
48617 };
48618 /** @deprecated addAggregationColumns is deprecated, use addValueColumns */
48619 ColumnApi.prototype.addAggregationColumns = function (colKeys) {
48620 console.error('AG Grid: addAggregationColumns is deprecated, use addValueColumns');
48621 this.columnModel.addValueColumns(colKeys, 'api');
48622 };
48623 /** @deprecated setColumnAggFunction is deprecated, use setColumnAggFunc */
48624 ColumnApi.prototype.setColumnAggFunction = function (column, aggFunc) {
48625 console.error('AG Grid: setColumnAggFunction is deprecated, use setColumnAggFunc');
48626 this.columnModel.setColumnAggFunc(column, aggFunc, 'api');
48627 };
48628 /** @deprecated getDisplayNameForCol is deprecated, use getDisplayNameForColumn */
48629 ColumnApi.prototype.getDisplayNameForCol = function (column) {
48630 console.error('AG Grid: getDisplayNameForCol is deprecated, use getDisplayNameForColumn');
48631 return this.getDisplayNameForColumn(column, null);
48632 };
48633 /** @deprecated setColumnState is deprecated, use applyColumnState. */
48634 ColumnApi.prototype.setColumnState = function (columnState) {
48635 console.error('AG Grid: setColumnState is deprecated, use applyColumnState');
48636 return this.columnModel.applyColumnState({ state: columnState, applyOrder: true }, 'api');
48637 };
48638 /** @deprecated getOriginalColumnGroup is deprecated, use getProvidedColumnGroup. */
48639 ColumnApi.prototype.getOriginalColumnGroup = function (name) {
48640 console.error('AG Grid: getOriginalColumnGroup is deprecated, use getProvidedColumnGroup');
48641 return this.columnModel.getProvidedColumnGroup(name);
48642 };
48643 __decorate([
48644 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
48645 ], ColumnApi.prototype, "columnModel", void 0);
48646 __decorate([
48647 _context_context__WEBPACK_IMPORTED_MODULE_0__["PreDestroy"]
48648 ], ColumnApi.prototype, "cleanDownReferencesToAvoidMemoryLeakInCaseApplicationIsKeepingReferenceToDestroyedGrid", null);
48649 ColumnApi = __decorate([
48650 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('columnApi')
48651 ], ColumnApi);
48652 return ColumnApi;
48653}());
48654
48655
48656
48657
48658
48659/***/ }),
48660/* 214 */
48661/***/ (function(module, __webpack_exports__, __webpack_require__) {
48662
48663"use strict";
48664__webpack_require__.r(__webpack_exports__);
48665/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ValueService", function() { return ValueService; });
48666/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
48667/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(23);
48668/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(20);
48669/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(13);
48670/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(7);
48671/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(14);
48672/**
48673 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
48674 * @version v27.3.0
48675 * @link https://www.ag-grid.com/
48676 * @license MIT
48677 */
48678var __extends = (undefined && undefined.__extends) || (function () {
48679 var extendStatics = function (d, b) {
48680 extendStatics = Object.setPrototypeOf ||
48681 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
48682 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
48683 return extendStatics(d, b);
48684 };
48685 return function (d, b) {
48686 extendStatics(d, b);
48687 function __() { this.constructor = d; }
48688 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
48689 };
48690})();
48691var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
48692 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
48693 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
48694 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
48695 return c > 3 && r && Object.defineProperty(target, key, r), r;
48696};
48697
48698
48699
48700
48701
48702
48703var ValueService = /** @class */ (function (_super) {
48704 __extends(ValueService, _super);
48705 function ValueService() {
48706 var _this = _super !== null && _super.apply(this, arguments) || this;
48707 _this.initialised = false;
48708 return _this;
48709 }
48710 ValueService.prototype.init = function () {
48711 var _this = this;
48712 this.cellExpressions = this.gridOptionsWrapper.isEnableCellExpressions();
48713 this.initialised = true;
48714 // We listen to our own event and use it to call the columnSpecific callback,
48715 // this way the handler calls are correctly interleaved with other global events
48716 this.eventService.addEventListener(_events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_CELL_VALUE_CHANGED, function (event) { return _this.callColumnCellValueChangedHandler(event); }, this.gridOptionsWrapper.useAsyncEvents());
48717 };
48718 ValueService.prototype.getValue = function (column, rowNode, forFilter, ignoreAggData) {
48719 if (forFilter === void 0) { forFilter = false; }
48720 if (ignoreAggData === void 0) { ignoreAggData = false; }
48721 // hack - the grid is getting refreshed before this bean gets initialised, race condition.
48722 // really should have a way so they get initialised in the right order???
48723 if (!this.initialised) {
48724 this.init();
48725 }
48726 if (!rowNode) {
48727 return;
48728 }
48729 // pull these out to make code below easier to read
48730 var colDef = column.getColDef();
48731 var field = colDef.field;
48732 var colId = column.getId();
48733 var data = rowNode.data;
48734 var result;
48735 // if there is a value getter, this gets precedence over a field
48736 var groupDataExists = rowNode.groupData && rowNode.groupData[colId] !== undefined;
48737 var aggDataExists = !ignoreAggData && rowNode.aggData && rowNode.aggData[colId] !== undefined;
48738 if (forFilter && colDef.filterValueGetter) {
48739 result = this.executeFilterValueGetter(colDef.filterValueGetter, data, column, rowNode);
48740 }
48741 else if (this.gridOptionsWrapper.isTreeData() && aggDataExists) {
48742 result = rowNode.aggData[colId];
48743 }
48744 else if (this.gridOptionsWrapper.isTreeData() && colDef.valueGetter) {
48745 result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);
48746 }
48747 else if (this.gridOptionsWrapper.isTreeData() && (field && data)) {
48748 result = Object(_utils_object__WEBPACK_IMPORTED_MODULE_3__["getValueUsingField"])(data, field, column.isFieldContainsDots());
48749 }
48750 else if (groupDataExists) {
48751 result = rowNode.groupData[colId];
48752 }
48753 else if (aggDataExists) {
48754 result = rowNode.aggData[colId];
48755 }
48756 else if (colDef.valueGetter) {
48757 result = this.executeValueGetter(colDef.valueGetter, data, column, rowNode);
48758 }
48759 else if (field && data) {
48760 result = Object(_utils_object__WEBPACK_IMPORTED_MODULE_3__["getValueUsingField"])(data, field, column.isFieldContainsDots());
48761 }
48762 // the result could be an expression itself, if we are allowing cell values to be expressions
48763 if (this.cellExpressions && (typeof result === 'string') && result.indexOf('=') === 0) {
48764 var cellValueGetter = result.substring(1);
48765 result = this.executeValueGetter(cellValueGetter, data, column, rowNode);
48766 }
48767 if (result == null) {
48768 var openedGroup = this.getOpenedGroup(rowNode, column);
48769 if (openedGroup != null) {
48770 return openedGroup;
48771 }
48772 }
48773 return result;
48774 };
48775 ValueService.prototype.getOpenedGroup = function (rowNode, column) {
48776 if (!this.gridOptionsWrapper.isShowOpenedGroup()) {
48777 return;
48778 }
48779 var colDef = column.getColDef();
48780 if (!colDef.showRowGroup) {
48781 return;
48782 }
48783 var showRowGroup = column.getColDef().showRowGroup;
48784 var pointer = rowNode.parent;
48785 while (pointer != null) {
48786 if (pointer.rowGroupColumn && (showRowGroup === true || showRowGroup === pointer.rowGroupColumn.getId())) {
48787 return pointer.key;
48788 }
48789 pointer = pointer.parent;
48790 }
48791 return undefined;
48792 };
48793 /**
48794 * Sets the value of a GridCell
48795 * @param rowNode The `RowNode` to be updated
48796 * @param colKey The `Column` to be updated
48797 * @param newValue The new value to be set
48798 * @param eventSource The event source
48799 * @returns `True` if the value has been updated, otherwise`False`.
48800 */
48801 ValueService.prototype.setValue = function (rowNode, colKey, newValue, eventSource) {
48802 var column = this.columnModel.getPrimaryColumn(colKey);
48803 if (!rowNode || !column) {
48804 return false;
48805 }
48806 // this will only happen if user is trying to paste into a group row, which doesn't make sense
48807 // the user should not be trying to paste into group rows
48808 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_4__["missing"])(rowNode.data)) {
48809 rowNode.data = {};
48810 }
48811 // for backwards compatibility we are also retrieving the newValueHandler as well as the valueSetter
48812 var _a = column.getColDef(), field = _a.field, newValueHandler = _a.newValueHandler, valueSetter = _a.valueSetter;
48813 // need either a field or a newValueHandler for this to work
48814 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_4__["missing"])(field) && Object(_utils_generic__WEBPACK_IMPORTED_MODULE_4__["missing"])(newValueHandler) && Object(_utils_generic__WEBPACK_IMPORTED_MODULE_4__["missing"])(valueSetter)) {
48815 // we don't tell user about newValueHandler, as that is deprecated
48816 console.warn("AG Grid: you need either field or valueSetter set on colDef for editing to work");
48817 return false;
48818 }
48819 var params = {
48820 node: rowNode,
48821 data: rowNode.data,
48822 oldValue: this.getValue(column, rowNode),
48823 newValue: newValue,
48824 colDef: column.getColDef(),
48825 column: column,
48826 api: this.gridOptionsWrapper.getApi(),
48827 columnApi: this.gridOptionsWrapper.getColumnApi(),
48828 context: this.gridOptionsWrapper.getContext()
48829 };
48830 params.newValue = newValue;
48831 var valueWasDifferent;
48832 if (newValueHandler && Object(_utils_generic__WEBPACK_IMPORTED_MODULE_4__["exists"])(newValueHandler)) {
48833 valueWasDifferent = newValueHandler(params);
48834 }
48835 else if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_4__["exists"])(valueSetter)) {
48836 valueWasDifferent = this.expressionService.evaluate(valueSetter, params);
48837 }
48838 else {
48839 valueWasDifferent = this.setValueUsingField(rowNode.data, field, newValue, column.isFieldContainsDots());
48840 }
48841 // in case user forgot to return something (possible if they are not using TypeScript
48842 // and just forgot, or using an old newValueHandler we didn't always expect a return
48843 // value here), we default the return value to true, so we always refresh.
48844 if (valueWasDifferent === undefined) {
48845 valueWasDifferent = true;
48846 }
48847 // if no change to the value, then no need to do the updating, or notifying via events.
48848 // otherwise the user could be tabbing around the grid, and cellValueChange would get called
48849 // all the time.
48850 if (!valueWasDifferent) {
48851 return false;
48852 }
48853 // reset quick filter on this row
48854 rowNode.resetQuickFilterAggregateText();
48855 this.valueCache.onDataChanged();
48856 params.newValue = this.getValue(column, rowNode);
48857 var event = {
48858 type: _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_CELL_VALUE_CHANGED,
48859 event: null,
48860 rowIndex: rowNode.rowIndex,
48861 rowPinned: rowNode.rowPinned,
48862 column: params.column,
48863 api: params.api,
48864 columnApi: params.columnApi,
48865 colDef: params.colDef,
48866 context: params.context,
48867 data: rowNode.data,
48868 node: rowNode,
48869 oldValue: params.oldValue,
48870 newValue: params.newValue,
48871 value: params.newValue,
48872 source: eventSource
48873 };
48874 this.eventService.dispatchEvent(event);
48875 return true;
48876 };
48877 ValueService.prototype.callColumnCellValueChangedHandler = function (event) {
48878 var onCellValueChanged = event.colDef.onCellValueChanged;
48879 if (typeof onCellValueChanged === 'function') {
48880 onCellValueChanged({
48881 node: event.node,
48882 data: event.data,
48883 oldValue: event.oldValue,
48884 newValue: event.newValue,
48885 colDef: event.colDef,
48886 column: event.column,
48887 api: event.api,
48888 columnApi: event.columnApi,
48889 context: event.context
48890 });
48891 }
48892 };
48893 ValueService.prototype.setValueUsingField = function (data, field, newValue, isFieldContainsDots) {
48894 if (!field) {
48895 return false;
48896 }
48897 // if no '.', then it's not a deep value
48898 var valuesAreSame = false;
48899 if (!isFieldContainsDots) {
48900 data[field] = newValue;
48901 }
48902 else {
48903 // otherwise it is a deep value, so need to dig for it
48904 var fieldPieces = field.split('.');
48905 var currentObject = data;
48906 while (fieldPieces.length > 0 && currentObject) {
48907 var fieldPiece = fieldPieces.shift();
48908 if (fieldPieces.length === 0) {
48909 currentObject[fieldPiece] = newValue;
48910 }
48911 else {
48912 currentObject = currentObject[fieldPiece];
48913 }
48914 }
48915 }
48916 return !valuesAreSame;
48917 };
48918 ValueService.prototype.executeFilterValueGetter = function (valueGetter, data, column, rowNode) {
48919 var params = {
48920 data: data,
48921 node: rowNode,
48922 column: column,
48923 colDef: column.getColDef(),
48924 api: this.gridOptionsWrapper.getApi(),
48925 columnApi: this.gridOptionsWrapper.getColumnApi(),
48926 context: this.gridOptionsWrapper.getContext(),
48927 getValue: this.getValueCallback.bind(this, rowNode)
48928 };
48929 return this.expressionService.evaluate(valueGetter, params);
48930 };
48931 ValueService.prototype.executeValueGetter = function (valueGetter, data, column, rowNode) {
48932 var colId = column.getId();
48933 // if inside the same turn, just return back the value we got last time
48934 var valueFromCache = this.valueCache.getValue(rowNode, colId);
48935 if (valueFromCache !== undefined) {
48936 return valueFromCache;
48937 }
48938 var params = {
48939 data: data,
48940 node: rowNode,
48941 column: column,
48942 colDef: column.getColDef(),
48943 api: this.gridOptionsWrapper.getApi(),
48944 columnApi: this.gridOptionsWrapper.getColumnApi(),
48945 context: this.gridOptionsWrapper.getContext(),
48946 getValue: this.getValueCallback.bind(this, rowNode)
48947 };
48948 var result = this.expressionService.evaluate(valueGetter, params);
48949 // if a turn is active, store the value in case the grid asks for it again
48950 this.valueCache.setValue(rowNode, colId, result);
48951 return result;
48952 };
48953 ValueService.prototype.getValueCallback = function (node, field) {
48954 var otherColumn = this.columnModel.getPrimaryColumn(field);
48955 if (otherColumn) {
48956 return this.getValue(otherColumn, node);
48957 }
48958 return null;
48959 };
48960 // used by row grouping and pivot, to get key for a row. col can be a pivot col or a row grouping col
48961 ValueService.prototype.getKeyForNode = function (col, rowNode) {
48962 var value = this.getValue(col, rowNode);
48963 var keyCreator = col.getColDef().keyCreator;
48964 var result = value;
48965 if (keyCreator) {
48966 var keyParams = {
48967 value: value,
48968 colDef: col.getColDef(),
48969 column: col,
48970 node: rowNode,
48971 data: rowNode.data,
48972 api: this.gridOptionsWrapper.getApi(),
48973 columnApi: this.gridOptionsWrapper.getColumnApi(),
48974 context: this.gridOptionsWrapper.getContext()
48975 };
48976 result = keyCreator(keyParams);
48977 }
48978 // if already a string, or missing, just return it
48979 if (typeof result === 'string' || result == null) {
48980 return result;
48981 }
48982 result = String(result);
48983 if (result === '[object Object]') {
48984 Object(_utils_function__WEBPACK_IMPORTED_MODULE_5__["doOnce"])(function () {
48985 console.warn('AG Grid: a column you are grouping or pivoting by has objects as values. If you want to group by complex objects then either a) use a colDef.keyCreator (se AG Grid docs) or b) to toString() on the object to return a key');
48986 }, 'getKeyForNode - warn about [object,object]');
48987 }
48988 return result;
48989 };
48990 __decorate([
48991 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('expressionService')
48992 ], ValueService.prototype, "expressionService", void 0);
48993 __decorate([
48994 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
48995 ], ValueService.prototype, "columnModel", void 0);
48996 __decorate([
48997 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('valueCache')
48998 ], ValueService.prototype, "valueCache", void 0);
48999 __decorate([
49000 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
49001 ], ValueService.prototype, "init", null);
49002 ValueService = __decorate([
49003 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('valueService')
49004 ], ValueService);
49005 return ValueService;
49006}(_context_beanStub__WEBPACK_IMPORTED_MODULE_2__["BeanStub"]));
49007
49008
49009
49010
49011
49012/***/ }),
49013/* 215 */
49014/***/ (function(module, __webpack_exports__, __webpack_require__) {
49015
49016"use strict";
49017__webpack_require__.r(__webpack_exports__);
49018/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ExpressionService", function() { return ExpressionService; });
49019/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
49020/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
49021/**
49022 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
49023 * @version v27.3.0
49024 * @link https://www.ag-grid.com/
49025 * @license MIT
49026 */
49027var __extends = (undefined && undefined.__extends) || (function () {
49028 var extendStatics = function (d, b) {
49029 extendStatics = Object.setPrototypeOf ||
49030 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
49031 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
49032 return extendStatics(d, b);
49033 };
49034 return function (d, b) {
49035 extendStatics(d, b);
49036 function __() { this.constructor = d; }
49037 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
49038 };
49039})();
49040var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
49041 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
49042 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
49043 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
49044 return c > 3 && r && Object.defineProperty(target, key, r), r;
49045};
49046var __param = (undefined && undefined.__param) || function (paramIndex, decorator) {
49047 return function (target, key) { decorator(target, key, paramIndex); }
49048};
49049
49050
49051
49052var ExpressionService = /** @class */ (function (_super) {
49053 __extends(ExpressionService, _super);
49054 function ExpressionService() {
49055 var _this = _super !== null && _super.apply(this, arguments) || this;
49056 _this.expressionToFunctionCache = {};
49057 return _this;
49058 }
49059 ExpressionService.prototype.setBeans = function (loggerFactory) {
49060 this.logger = loggerFactory.create('ExpressionService');
49061 };
49062 ExpressionService.prototype.evaluate = function (expressionOrFunc, params) {
49063 if (typeof expressionOrFunc === 'function') {
49064 // valueGetter is a function, so just call it
49065 var func = expressionOrFunc;
49066 return func(params);
49067 }
49068 else if (typeof expressionOrFunc === 'string') {
49069 // valueGetter is an expression, so execute the expression
49070 var expression = expressionOrFunc;
49071 return this.evaluateExpression(expression, params);
49072 }
49073 else {
49074 console.error('AG Grid: value should be either a string or a function', expressionOrFunc);
49075 }
49076 };
49077 ExpressionService.prototype.evaluateExpression = function (expression, params) {
49078 try {
49079 var javaScriptFunction = this.createExpressionFunction(expression);
49080 // the params don't have all these values, rather we add every possible
49081 // value a params can have, which makes whatever is in the params available.
49082 var result = javaScriptFunction(params.value, params.context, params.oldValue, params.newValue, params.value, params.node, params.data, params.colDef, params.rowIndex, params.api, params.columnApi, params.getValue, params.column, params.columnGroup);
49083 return result;
49084 }
49085 catch (e) {
49086 // the expression failed, which can happen, as it's the client that
49087 // provides the expression. so print a nice message
49088 // tslint:disable-next-line
49089 console.log('Processing of the expression failed');
49090 // tslint:disable-next-line
49091 console.log('Expression = ' + expression);
49092 // tslint:disable-next-line
49093 console.log('Params =', params);
49094 // tslint:disable-next-line
49095 console.log('Exception = ' + e);
49096 return null;
49097 }
49098 };
49099 ExpressionService.prototype.createExpressionFunction = function (expression) {
49100 // check cache first
49101 if (this.expressionToFunctionCache[expression]) {
49102 return this.expressionToFunctionCache[expression];
49103 }
49104 // if not found in cache, return the function
49105 var functionBody = this.createFunctionBody(expression);
49106 var theFunction = new Function('x, ctx, oldValue, newValue, value, node, data, colDef, rowIndex, api, columnApi, getValue, column, columnGroup', functionBody);
49107 // store in cache
49108 this.expressionToFunctionCache[expression] = theFunction;
49109 return theFunction;
49110 };
49111 ExpressionService.prototype.createFunctionBody = function (expression) {
49112 // if the expression has the 'return' word in it, then use as is,
49113 // if not, then wrap it with return and ';' to make a function
49114 if (expression.indexOf('return') >= 0) {
49115 return expression;
49116 }
49117 else {
49118 return 'return ' + expression + ';';
49119 }
49120 };
49121 __decorate([
49122 __param(0, Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Qualifier"])('loggerFactory'))
49123 ], ExpressionService.prototype, "setBeans", null);
49124 ExpressionService = __decorate([
49125 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('expressionService')
49126 ], ExpressionService);
49127 return ExpressionService;
49128}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
49129
49130
49131
49132
49133
49134/***/ }),
49135/* 216 */
49136/***/ (function(module, __webpack_exports__, __webpack_require__) {
49137
49138"use strict";
49139__webpack_require__.r(__webpack_exports__);
49140/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TemplateService", function() { return TemplateService; });
49141/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
49142/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
49143/**
49144 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
49145 * @version v27.3.0
49146 * @link https://www.ag-grid.com/
49147 * @license MIT
49148 */
49149var __extends = (undefined && undefined.__extends) || (function () {
49150 var extendStatics = function (d, b) {
49151 extendStatics = Object.setPrototypeOf ||
49152 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
49153 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
49154 return extendStatics(d, b);
49155 };
49156 return function (d, b) {
49157 extendStatics(d, b);
49158 function __() { this.constructor = d; }
49159 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
49160 };
49161})();
49162var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
49163 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
49164 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
49165 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
49166 return c > 3 && r && Object.defineProperty(target, key, r), r;
49167};
49168
49169
49170var TemplateService = /** @class */ (function (_super) {
49171 __extends(TemplateService, _super);
49172 function TemplateService() {
49173 var _this = _super !== null && _super.apply(this, arguments) || this;
49174 _this.templateCache = {};
49175 _this.waitingCallbacks = {};
49176 return _this;
49177 }
49178 // returns the template if it is loaded, or null if it is not loaded
49179 // but will call the callback when it is loaded
49180 TemplateService.prototype.getTemplate = function (url, callback) {
49181 var templateFromCache = this.templateCache[url];
49182 if (templateFromCache) {
49183 return templateFromCache;
49184 }
49185 var callbackList = this.waitingCallbacks[url];
49186 var that = this;
49187 if (!callbackList) {
49188 // first time this was called, so need a new list for callbacks
49189 callbackList = [];
49190 this.waitingCallbacks[url] = callbackList;
49191 // and also need to do the http request
49192 var client = new XMLHttpRequest();
49193 client.onload = function () {
49194 that.handleHttpResult(this, url);
49195 };
49196 client.open("GET", url);
49197 client.send();
49198 }
49199 // add this callback
49200 if (callback) {
49201 callbackList.push(callback);
49202 }
49203 // caller needs to wait for template to load, so return null
49204 return null;
49205 };
49206 TemplateService.prototype.handleHttpResult = function (httpResult, url) {
49207 if (httpResult.status !== 200 || httpResult.response === null) {
49208 console.warn("AG Grid: Unable to get template error " + httpResult.status + " - " + url);
49209 return;
49210 }
49211 // response success, so process it
49212 // in IE9 the response is in - responseText
49213 this.templateCache[url] = httpResult.response || httpResult.responseText;
49214 // inform all listeners that this is now in the cache
49215 var callbacks = this.waitingCallbacks[url];
49216 for (var i = 0; i < callbacks.length; i++) {
49217 var callback = callbacks[i];
49218 // we could pass the callback the response, however we know the client of this code
49219 // is the cell renderer, and it passes the 'cellRefresh' method in as the callback
49220 // which doesn't take any parameters.
49221 callback();
49222 }
49223 };
49224 TemplateService = __decorate([
49225 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('templateService')
49226 ], TemplateService);
49227 return TemplateService;
49228}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
49229
49230
49231
49232
49233
49234/***/ }),
49235/* 217 */
49236/***/ (function(module, __webpack_exports__, __webpack_require__) {
49237
49238"use strict";
49239__webpack_require__.r(__webpack_exports__);
49240/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "LoggerFactory", function() { return LoggerFactory; });
49241/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Logger", function() { return Logger; });
49242/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
49243/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
49244/**
49245 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
49246 * @version v27.3.0
49247 * @link https://www.ag-grid.com/
49248 * @license MIT
49249 */
49250var __extends = (undefined && undefined.__extends) || (function () {
49251 var extendStatics = function (d, b) {
49252 extendStatics = Object.setPrototypeOf ||
49253 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
49254 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
49255 return extendStatics(d, b);
49256 };
49257 return function (d, b) {
49258 extendStatics(d, b);
49259 function __() { this.constructor = d; }
49260 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
49261 };
49262})();
49263var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
49264 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
49265 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
49266 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
49267 return c > 3 && r && Object.defineProperty(target, key, r), r;
49268};
49269var __param = (undefined && undefined.__param) || function (paramIndex, decorator) {
49270 return function (target, key) { decorator(target, key, paramIndex); }
49271};
49272
49273
49274
49275var LoggerFactory = /** @class */ (function (_super) {
49276 __extends(LoggerFactory, _super);
49277 function LoggerFactory() {
49278 return _super !== null && _super.apply(this, arguments) || this;
49279 }
49280 LoggerFactory.prototype.setBeans = function (gridOptionsWrapper) {
49281 this.logging = gridOptionsWrapper.isDebug();
49282 };
49283 LoggerFactory.prototype.create = function (name) {
49284 return new Logger(name, this.isLogging.bind(this));
49285 };
49286 LoggerFactory.prototype.isLogging = function () {
49287 return this.logging;
49288 };
49289 __decorate([
49290 __param(0, Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Qualifier"])('gridOptionsWrapper'))
49291 ], LoggerFactory.prototype, "setBeans", null);
49292 LoggerFactory = __decorate([
49293 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('loggerFactory')
49294 ], LoggerFactory);
49295 return LoggerFactory;
49296}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
49297
49298var Logger = /** @class */ (function () {
49299 function Logger(name, isLoggingFunc) {
49300 this.name = name;
49301 this.isLoggingFunc = isLoggingFunc;
49302 }
49303 Logger.prototype.isLogging = function () {
49304 return this.isLoggingFunc();
49305 };
49306 Logger.prototype.log = function (message) {
49307 if (this.isLoggingFunc()) {
49308 // tslint:disable-next-line
49309 console.log('AG Grid.' + this.name + ': ' + message);
49310 }
49311 };
49312 return Logger;
49313}());
49314
49315
49316
49317
49318
49319/***/ }),
49320/* 218 */
49321/***/ (function(module, __webpack_exports__, __webpack_require__) {
49322
49323"use strict";
49324__webpack_require__.r(__webpack_exports__);
49325/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GridComp", function() { return GridComp; });
49326/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
49327/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
49328/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
49329/* harmony import */ var _focusService__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(206);
49330/* harmony import */ var _gridCtrl__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(219);
49331/* harmony import */ var _styling_layoutFeature__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(111);
49332/* harmony import */ var _widgets_tabGuardComp__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(202);
49333/**
49334 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
49335 * @version v27.3.0
49336 * @link https://www.ag-grid.com/
49337 * @license MIT
49338 */
49339var __extends = (undefined && undefined.__extends) || (function () {
49340 var extendStatics = function (d, b) {
49341 extendStatics = Object.setPrototypeOf ||
49342 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
49343 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
49344 return extendStatics(d, b);
49345 };
49346 return function (d, b) {
49347 extendStatics(d, b);
49348 function __() { this.constructor = d; }
49349 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
49350 };
49351})();
49352var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
49353 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
49354 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
49355 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
49356 return c > 3 && r && Object.defineProperty(target, key, r), r;
49357};
49358
49359
49360
49361
49362
49363
49364
49365var GridComp = /** @class */ (function (_super) {
49366 __extends(GridComp, _super);
49367 function GridComp(eGridDiv) {
49368 var _this = _super.call(this, undefined) || this;
49369 _this.eGridDiv = eGridDiv;
49370 return _this;
49371 }
49372 GridComp.prototype.postConstruct = function () {
49373 var _this = this;
49374 this.logger = this.loggerFactory.create('GridComp');
49375 var compProxy = {
49376 destroyGridUi: function () { return _this.destroyBean(_this); },
49377 setRtlClass: function (cssClass) { return _this.addCssClass(cssClass); },
49378 addOrRemoveKeyboardFocusClass: function (addOrRemove) { return _this.addOrRemoveCssClass(_focusService__WEBPACK_IMPORTED_MODULE_3__["FocusService"].AG_KEYBOARD_FOCUS, addOrRemove); },
49379 forceFocusOutOfContainer: this.forceFocusOutOfContainer.bind(this),
49380 updateLayoutClasses: this.updateLayoutClasses.bind(this),
49381 getFocusableContainers: this.getFocusableContainers.bind(this),
49382 setUserSelect: function (value) {
49383 _this.getGui().style.userSelect = value != null ? value : '';
49384 _this.getGui().style.webkitUserSelect = value != null ? value : '';
49385 },
49386 setCursor: function (value) {
49387 _this.getGui().style.cursor = value != null ? value : '';
49388 }
49389 };
49390 this.ctrl = this.createManagedBean(new _gridCtrl__WEBPACK_IMPORTED_MODULE_4__["GridCtrl"]());
49391 var template = this.createTemplate();
49392 this.setTemplate(template);
49393 this.ctrl.setComp(compProxy, this.eGridDiv, this.getGui());
49394 this.insertGridIntoDom();
49395 this.initialiseTabGuard({
49396 // we want to override the default behaviour to do nothing for onTabKeyDown
49397 onTabKeyDown: function () { return undefined; },
49398 focusInnerElement: function (fromBottom) { return _this.ctrl.focusInnerElement(fromBottom); }
49399 });
49400 };
49401 GridComp.prototype.insertGridIntoDom = function () {
49402 var _this = this;
49403 var eGui = this.getGui();
49404 this.eGridDiv.appendChild(eGui);
49405 this.addDestroyFunc(function () {
49406 _this.eGridDiv.removeChild(eGui);
49407 _this.logger.log('Grid removed from DOM');
49408 });
49409 };
49410 GridComp.prototype.updateLayoutClasses = function (cssClass, params) {
49411 var eRootWrapperBodyClassList = this.eRootWrapperBody.classList;
49412 eRootWrapperBodyClassList.toggle(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_5__["LayoutCssClasses"].AUTO_HEIGHT, params.autoHeight);
49413 eRootWrapperBodyClassList.toggle(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_5__["LayoutCssClasses"].NORMAL, params.normal);
49414 eRootWrapperBodyClassList.toggle(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_5__["LayoutCssClasses"].PRINT, params.print);
49415 this.addOrRemoveCssClass(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_5__["LayoutCssClasses"].AUTO_HEIGHT, params.autoHeight);
49416 this.addOrRemoveCssClass(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_5__["LayoutCssClasses"].NORMAL, params.normal);
49417 this.addOrRemoveCssClass(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_5__["LayoutCssClasses"].PRINT, params.print);
49418 };
49419 GridComp.prototype.createTemplate = function () {
49420 var dropZones = this.ctrl.showDropZones() ? '<ag-grid-header-drop-zones></ag-grid-header-drop-zones>' : '';
49421 var sideBar = this.ctrl.showSideBar() ? '<ag-side-bar ref="sideBar"></ag-side-bar>' : '';
49422 var statusBar = this.ctrl.showStatusBar() ? '<ag-status-bar ref="statusBar"></ag-status-bar>' : '';
49423 var watermark = this.ctrl.showWatermark() ? '<ag-watermark></ag-watermark>' : '';
49424 var template = /* html */ "<div class=\"ag-root-wrapper\">\n " + dropZones + "\n <div class=\"ag-root-wrapper-body\" ref=\"rootWrapperBody\">\n <ag-grid-body ref=\"gridBody\"></ag-grid-body>\n " + sideBar + "\n </div>\n " + statusBar + "\n <ag-pagination></ag-pagination>\n " + watermark + "\n </div>";
49425 return template;
49426 };
49427 GridComp.prototype.getFocusableElement = function () {
49428 return this.eRootWrapperBody;
49429 };
49430 GridComp.prototype.getFocusableContainers = function () {
49431 var focusableContainers = [
49432 this.gridBodyComp.getGui()
49433 ];
49434 if (this.sideBarComp) {
49435 focusableContainers.push(this.sideBarComp.getGui());
49436 }
49437 return focusableContainers.filter(function (el) { return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["isVisible"])(el); });
49438 };
49439 __decorate([
49440 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('loggerFactory')
49441 ], GridComp.prototype, "loggerFactory", void 0);
49442 __decorate([
49443 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('gridBody')
49444 ], GridComp.prototype, "gridBodyComp", void 0);
49445 __decorate([
49446 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('sideBar')
49447 ], GridComp.prototype, "sideBarComp", void 0);
49448 __decorate([
49449 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('rootWrapperBody')
49450 ], GridComp.prototype, "eRootWrapperBody", void 0);
49451 __decorate([
49452 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
49453 ], GridComp.prototype, "postConstruct", null);
49454 return GridComp;
49455}(_widgets_tabGuardComp__WEBPACK_IMPORTED_MODULE_6__["TabGuardComp"]));
49456
49457
49458
49459
49460
49461/***/ }),
49462/* 219 */
49463/***/ (function(module, __webpack_exports__, __webpack_require__) {
49464
49465"use strict";
49466__webpack_require__.r(__webpack_exports__);
49467/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GridCtrl", function() { return GridCtrl; });
49468/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
49469/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
49470/* harmony import */ var _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(17);
49471/* harmony import */ var _modules_moduleNames__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(16);
49472/* harmony import */ var _styling_layoutFeature__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(111);
49473/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(24);
49474/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(18);
49475/**
49476 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
49477 * @version v27.3.0
49478 * @link https://www.ag-grid.com/
49479 * @license MIT
49480 */
49481var __extends = (undefined && undefined.__extends) || (function () {
49482 var extendStatics = function (d, b) {
49483 extendStatics = Object.setPrototypeOf ||
49484 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
49485 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
49486 return extendStatics(d, b);
49487 };
49488 return function (d, b) {
49489 extendStatics(d, b);
49490 function __() { this.constructor = d; }
49491 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
49492 };
49493})();
49494var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
49495 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
49496 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
49497 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
49498 return c > 3 && r && Object.defineProperty(target, key, r), r;
49499};
49500
49501
49502
49503
49504
49505
49506
49507var GridCtrl = /** @class */ (function (_super) {
49508 __extends(GridCtrl, _super);
49509 function GridCtrl() {
49510 return _super !== null && _super.apply(this, arguments) || this;
49511 }
49512 GridCtrl.prototype.setComp = function (view, eGridDiv, eGui) {
49513 var _this = this;
49514 this.view = view;
49515 this.eGridHostDiv = eGridDiv;
49516 this.eGui = eGui;
49517 this.mouseEventService.stampTopLevelGridCompWithGridInstance(eGridDiv);
49518 this.createManagedBean(new _styling_layoutFeature__WEBPACK_IMPORTED_MODULE_4__["LayoutFeature"](this.view));
49519 // important to set rtl before doLayout, as setting the RTL class impacts the scroll position,
49520 // which doLayout indirectly depends on
49521 this.addRtlSupport();
49522 this.addManagedListener(this, _eventKeys__WEBPACK_IMPORTED_MODULE_5__["Events"].EVENT_KEYBOARD_FOCUS, function () {
49523 _this.view.addOrRemoveKeyboardFocusClass(true);
49524 });
49525 this.addManagedListener(this, _eventKeys__WEBPACK_IMPORTED_MODULE_5__["Events"].EVENT_MOUSE_FOCUS, function () {
49526 _this.view.addOrRemoveKeyboardFocusClass(false);
49527 });
49528 var unsubscribeFromResize = this.resizeObserverService.observeResize(this.eGridHostDiv, this.onGridSizeChanged.bind(this));
49529 this.addDestroyFunc(function () { return unsubscribeFromResize(); });
49530 this.ctrlsService.registerGridCtrl(this);
49531 };
49532 GridCtrl.prototype.isDetailGrid = function () {
49533 var _a, _b;
49534 var el = this.focusService.findTabbableParent(this.getGui());
49535 return ((_b = (_a = el) === null || _a === void 0 ? void 0 : _a.getAttribute('row-id')) === null || _b === void 0 ? void 0 : _b.startsWith('detail')) || false;
49536 };
49537 GridCtrl.prototype.showDropZones = function () {
49538 return _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_2__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_3__["ModuleNames"].RowGroupingModule);
49539 };
49540 GridCtrl.prototype.showSideBar = function () {
49541 return _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_2__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_3__["ModuleNames"].SideBarModule);
49542 };
49543 GridCtrl.prototype.showStatusBar = function () {
49544 return _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_2__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_3__["ModuleNames"].StatusBarModule);
49545 };
49546 GridCtrl.prototype.showWatermark = function () {
49547 return _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_2__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_3__["ModuleNames"].EnterpriseCoreModule);
49548 };
49549 GridCtrl.prototype.onGridSizeChanged = function () {
49550 var event = {
49551 type: _eventKeys__WEBPACK_IMPORTED_MODULE_5__["Events"].EVENT_GRID_SIZE_CHANGED,
49552 api: this.gridApi,
49553 columnApi: this.columnApi,
49554 clientWidth: this.eGridHostDiv.clientWidth,
49555 clientHeight: this.eGridHostDiv.clientHeight
49556 };
49557 this.eventService.dispatchEvent(event);
49558 };
49559 GridCtrl.prototype.addRtlSupport = function () {
49560 var cssClass = this.gridOptionsWrapper.isEnableRtl() ? 'ag-rtl' : 'ag-ltr';
49561 this.view.setRtlClass(cssClass);
49562 };
49563 GridCtrl.prototype.destroyGridUi = function () {
49564 this.view.destroyGridUi();
49565 };
49566 GridCtrl.prototype.getGui = function () {
49567 return this.eGui;
49568 };
49569 GridCtrl.prototype.setResizeCursor = function (on) {
49570 this.view.setCursor(on ? 'ew-resize' : null);
49571 };
49572 GridCtrl.prototype.disableUserSelect = function (on) {
49573 this.view.setUserSelect(on ? 'none' : null);
49574 };
49575 GridCtrl.prototype.focusNextInnerContainer = function (backwards) {
49576 var eDocument = this.gridOptionsWrapper.getDocument();
49577 var focusableContainers = this.view.getFocusableContainers();
49578 var idxWithFocus = focusableContainers.findIndex(function (container) { return container.contains(eDocument.activeElement); });
49579 var nextIdx = idxWithFocus + (backwards ? -1 : 1);
49580 if (nextIdx <= 0 || nextIdx >= focusableContainers.length) {
49581 return false;
49582 }
49583 return this.focusService.focusInto(focusableContainers[nextIdx]);
49584 };
49585 GridCtrl.prototype.focusInnerElement = function (fromBottom) {
49586 var focusableContainers = this.view.getFocusableContainers();
49587 if (fromBottom) {
49588 if (focusableContainers.length > 1) {
49589 return this.focusService.focusInto(Object(_utils_array__WEBPACK_IMPORTED_MODULE_6__["last"])(focusableContainers), true);
49590 }
49591 var lastColumn = Object(_utils_array__WEBPACK_IMPORTED_MODULE_6__["last"])(this.columnModel.getAllDisplayedColumns());
49592 if (this.focusService.focusGridView(lastColumn, true)) {
49593 return true;
49594 }
49595 }
49596 return this.focusService.focusFirstHeader();
49597 };
49598 GridCtrl.prototype.forceFocusOutOfContainer = function (up) {
49599 if (up === void 0) { up = false; }
49600 this.view.forceFocusOutOfContainer(up);
49601 };
49602 __decorate([
49603 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
49604 ], GridCtrl.prototype, "columnApi", void 0);
49605 __decorate([
49606 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
49607 ], GridCtrl.prototype, "gridApi", void 0);
49608 __decorate([
49609 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('focusService')
49610 ], GridCtrl.prototype, "focusService", void 0);
49611 __decorate([
49612 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('resizeObserverService')
49613 ], GridCtrl.prototype, "resizeObserverService", void 0);
49614 __decorate([
49615 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
49616 ], GridCtrl.prototype, "columnModel", void 0);
49617 __decorate([
49618 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
49619 ], GridCtrl.prototype, "ctrlsService", void 0);
49620 __decorate([
49621 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('mouseEventService')
49622 ], GridCtrl.prototype, "mouseEventService", void 0);
49623 return GridCtrl;
49624}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
49625
49626
49627
49628
49629
49630/***/ }),
49631/* 220 */
49632/***/ (function(module, __webpack_exports__, __webpack_require__) {
49633
49634"use strict";
49635__webpack_require__.r(__webpack_exports__);
49636/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SortController", function() { return SortController; });
49637/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
49638/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
49639/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
49640/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(23);
49641/**
49642 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
49643 * @version v27.3.0
49644 * @link https://www.ag-grid.com/
49645 * @license MIT
49646 */
49647var __extends = (undefined && undefined.__extends) || (function () {
49648 var extendStatics = function (d, b) {
49649 extendStatics = Object.setPrototypeOf ||
49650 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
49651 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
49652 return extendStatics(d, b);
49653 };
49654 return function (d, b) {
49655 extendStatics(d, b);
49656 function __() { this.constructor = d; }
49657 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
49658 };
49659})();
49660var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
49661 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
49662 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
49663 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
49664 return c > 3 && r && Object.defineProperty(target, key, r), r;
49665};
49666
49667
49668
49669
49670var SortController = /** @class */ (function (_super) {
49671 __extends(SortController, _super);
49672 function SortController() {
49673 return _super !== null && _super.apply(this, arguments) || this;
49674 }
49675 SortController_1 = SortController;
49676 SortController.prototype.progressSort = function (column, multiSort, source) {
49677 var nextDirection = this.getNextSortDirection(column);
49678 this.setSortForColumn(column, nextDirection, multiSort, source);
49679 };
49680 SortController.prototype.setSortForColumn = function (column, sort, multiSort, source) {
49681 // auto correct - if sort not legal value, then set it to 'no sort' (which is null)
49682 if (sort !== _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].SORT_ASC && sort !== _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].SORT_DESC) {
49683 sort = null;
49684 }
49685 // update sort on current col
49686 column.setSort(sort, source);
49687 var doingMultiSort = (multiSort || this.gridOptionsWrapper.isAlwaysMultiSort()) && !this.gridOptionsWrapper.isSuppressMultiSort();
49688 // clear sort on all columns except this one, and update the icons
49689 if (!doingMultiSort) {
49690 this.clearSortBarThisColumn(column, source);
49691 }
49692 // sortIndex used for knowing order of cols when multi-col sort
49693 this.updateSortIndex(column);
49694 this.dispatchSortChangedEvents(source);
49695 };
49696 SortController.prototype.updateSortIndex = function (lastColToChange) {
49697 // update sortIndex on all sorting cols
49698 var allSortedCols = this.getColumnsWithSortingOrdered();
49699 var sortIndex = 0;
49700 allSortedCols.forEach(function (col) {
49701 if (col !== lastColToChange) {
49702 col.setSortIndex(sortIndex);
49703 sortIndex++;
49704 }
49705 });
49706 // last col to change always gets the last sort index, it's added to the end
49707 if (lastColToChange.getSort()) {
49708 lastColToChange.setSortIndex(sortIndex);
49709 }
49710 // clear sort index on all cols not sorting
49711 var allCols = this.columnModel.getPrimaryAndSecondaryAndAutoColumns();
49712 allCols.filter(function (col) { return col.getSort() == null; }).forEach(function (col) { return col.setSortIndex(); });
49713 };
49714 // gets called by API, so if data changes, use can call this, which will end up
49715 // working out the sort order again of the rows.
49716 SortController.prototype.onSortChanged = function (source) {
49717 this.dispatchSortChangedEvents(source);
49718 };
49719 SortController.prototype.isSortActive = function () {
49720 // pull out all the columns that have sorting set
49721 var allCols = this.columnModel.getPrimaryAndSecondaryAndAutoColumns();
49722 var sortedCols = allCols.filter(function (column) { return !!column.getSort(); });
49723 return sortedCols && sortedCols.length > 0;
49724 };
49725 SortController.prototype.dispatchSortChangedEvents = function (source) {
49726 var event = {
49727 type: _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_SORT_CHANGED,
49728 api: this.gridApi,
49729 columnApi: this.columnApi,
49730 source: source
49731 };
49732 this.eventService.dispatchEvent(event);
49733 };
49734 SortController.prototype.clearSortBarThisColumn = function (columnToSkip, source) {
49735 this.columnModel.getPrimaryAndSecondaryAndAutoColumns().forEach(function (columnToClear) {
49736 // Do not clear if either holding shift, or if column in question was clicked
49737 if (columnToClear !== columnToSkip) {
49738 // setting to 'undefined' as null means 'none' rather than cleared, otherwise issue will arise
49739 // if sort order is: ['desc', null , 'asc'], as it will start at null rather than 'desc'.
49740 columnToClear.setSort(undefined, source);
49741 }
49742 });
49743 };
49744 SortController.prototype.getNextSortDirection = function (column) {
49745 var sortingOrder;
49746 if (column.getColDef().sortingOrder) {
49747 sortingOrder = column.getColDef().sortingOrder;
49748 }
49749 else if (this.gridOptionsWrapper.getSortingOrder()) {
49750 sortingOrder = this.gridOptionsWrapper.getSortingOrder();
49751 }
49752 else {
49753 sortingOrder = SortController_1.DEFAULT_SORTING_ORDER;
49754 }
49755 if (!Array.isArray(sortingOrder) || sortingOrder.length <= 0) {
49756 console.warn("AG Grid: sortingOrder must be an array with at least one element, currently it's " + sortingOrder);
49757 return null;
49758 }
49759 var currentIndex = sortingOrder.indexOf(column.getSort());
49760 var notInArray = currentIndex < 0;
49761 var lastItemInArray = currentIndex == sortingOrder.length - 1;
49762 var result;
49763 if (notInArray || lastItemInArray) {
49764 result = sortingOrder[0];
49765 }
49766 else {
49767 result = sortingOrder[currentIndex + 1];
49768 }
49769 // verify the sort type exists, as the user could provide the sortingOrder, need to make sure it's valid
49770 if (SortController_1.DEFAULT_SORTING_ORDER.indexOf(result) < 0) {
49771 console.warn('AG Grid: invalid sort type ' + result);
49772 return null;
49773 }
49774 return result;
49775 };
49776 SortController.prototype.getColumnsWithSortingOrdered = function () {
49777 // pull out all the columns that have sorting set
49778 var allColumnsIncludingAuto = this.columnModel.getPrimaryAndSecondaryAndAutoColumns();
49779 var columnsWithSorting = allColumnsIncludingAuto.filter(function (column) { return !!column.getSort(); });
49780 // when both cols are missing sortIndex, we use the position of the col in all cols list.
49781 // this means if colDefs only have sort, but no sortIndex, we deterministically pick which
49782 // cols is sorted by first.
49783 var allColsIndexes = {};
49784 allColumnsIncludingAuto.forEach(function (col, index) { return allColsIndexes[col.getId()] = index; });
49785 // put the columns in order of which one got sorted first
49786 columnsWithSorting.sort(function (a, b) {
49787 var iA = a.getSortIndex();
49788 var iB = b.getSortIndex();
49789 if (iA != null && iB != null) {
49790 return iA - iB; // both present, normal comparison
49791 }
49792 else if (iA == null && iB == null) {
49793 // both missing, compare using column positions
49794 var posA = allColsIndexes[a.getId()];
49795 var posB = allColsIndexes[b.getId()];
49796 return posA > posB ? 1 : -1;
49797 }
49798 else if (iB == null) {
49799 return -1; // iB missing
49800 }
49801 else {
49802 return 1; // iA missing
49803 }
49804 });
49805 return columnsWithSorting;
49806 };
49807 // used by server side row models, to sent sort to server
49808 SortController.prototype.getSortModel = function () {
49809 return this.getColumnsWithSortingOrdered().map(function (column) { return ({
49810 sort: column.getSort(),
49811 colId: column.getId()
49812 }); });
49813 };
49814 SortController.prototype.getSortOptions = function () {
49815 return this.getColumnsWithSortingOrdered().map(function (column) { return ({
49816 sort: column.getSort(),
49817 column: column
49818 }); });
49819 };
49820 var SortController_1;
49821 SortController.DEFAULT_SORTING_ORDER = [_constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].SORT_ASC, _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].SORT_DESC, null];
49822 __decorate([
49823 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
49824 ], SortController.prototype, "columnModel", void 0);
49825 __decorate([
49826 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
49827 ], SortController.prototype, "columnApi", void 0);
49828 __decorate([
49829 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
49830 ], SortController.prototype, "gridApi", void 0);
49831 SortController = SortController_1 = __decorate([
49832 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('sortController')
49833 ], SortController);
49834 return SortController;
49835}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
49836
49837
49838
49839
49840
49841/***/ }),
49842/* 221 */
49843/***/ (function(module, __webpack_exports__, __webpack_require__) {
49844
49845"use strict";
49846__webpack_require__.r(__webpack_exports__);
49847/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColumnHoverService", function() { return ColumnHoverService; });
49848/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
49849/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(23);
49850/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(20);
49851/**
49852 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
49853 * @version v27.3.0
49854 * @link https://www.ag-grid.com/
49855 * @license MIT
49856 */
49857var __extends = (undefined && undefined.__extends) || (function () {
49858 var extendStatics = function (d, b) {
49859 extendStatics = Object.setPrototypeOf ||
49860 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
49861 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
49862 return extendStatics(d, b);
49863 };
49864 return function (d, b) {
49865 extendStatics(d, b);
49866 function __() { this.constructor = d; }
49867 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
49868 };
49869})();
49870var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
49871 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
49872 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
49873 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
49874 return c > 3 && r && Object.defineProperty(target, key, r), r;
49875};
49876
49877
49878
49879var ColumnHoverService = /** @class */ (function (_super) {
49880 __extends(ColumnHoverService, _super);
49881 function ColumnHoverService() {
49882 return _super !== null && _super.apply(this, arguments) || this;
49883 }
49884 ColumnHoverService.prototype.setMouseOver = function (columns) {
49885 this.selectedColumns = columns;
49886 var event = {
49887 type: _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_COLUMN_HOVER_CHANGED,
49888 api: this.gridApi,
49889 columnApi: this.columnApi
49890 };
49891 this.eventService.dispatchEvent(event);
49892 };
49893 ColumnHoverService.prototype.clearMouseOver = function () {
49894 this.selectedColumns = null;
49895 var event = {
49896 type: _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_COLUMN_HOVER_CHANGED,
49897 api: this.gridApi,
49898 columnApi: this.columnApi
49899 };
49900 this.eventService.dispatchEvent(event);
49901 };
49902 ColumnHoverService.prototype.isHovered = function (column) {
49903 return !!this.selectedColumns && this.selectedColumns.indexOf(column) >= 0;
49904 };
49905 __decorate([
49906 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
49907 ], ColumnHoverService.prototype, "columnApi", void 0);
49908 __decorate([
49909 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
49910 ], ColumnHoverService.prototype, "gridApi", void 0);
49911 ColumnHoverService = __decorate([
49912 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('columnHoverService')
49913 ], ColumnHoverService);
49914 return ColumnHoverService;
49915}(_context_beanStub__WEBPACK_IMPORTED_MODULE_2__["BeanStub"]));
49916
49917
49918
49919
49920
49921/***/ }),
49922/* 222 */
49923/***/ (function(module, __webpack_exports__, __webpack_require__) {
49924
49925"use strict";
49926__webpack_require__.r(__webpack_exports__);
49927/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColumnAnimationService", function() { return ColumnAnimationService; });
49928/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
49929/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
49930/**
49931 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
49932 * @version v27.3.0
49933 * @link https://www.ag-grid.com/
49934 * @license MIT
49935 */
49936var __extends = (undefined && undefined.__extends) || (function () {
49937 var extendStatics = function (d, b) {
49938 extendStatics = Object.setPrototypeOf ||
49939 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
49940 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
49941 return extendStatics(d, b);
49942 };
49943 return function (d, b) {
49944 extendStatics(d, b);
49945 function __() { this.constructor = d; }
49946 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
49947 };
49948})();
49949var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
49950 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
49951 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
49952 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
49953 return c > 3 && r && Object.defineProperty(target, key, r), r;
49954};
49955
49956
49957var ColumnAnimationService = /** @class */ (function (_super) {
49958 __extends(ColumnAnimationService, _super);
49959 function ColumnAnimationService() {
49960 var _this = _super !== null && _super.apply(this, arguments) || this;
49961 _this.executeNextFuncs = [];
49962 _this.executeLaterFuncs = [];
49963 _this.active = false;
49964 _this.animationThreadCount = 0;
49965 return _this;
49966 }
49967 ColumnAnimationService.prototype.postConstruct = function () {
49968 var _this = this;
49969 this.ctrlsService.whenReady(function (p) { return _this.gridBodyCtrl = p.gridBodyCtrl; });
49970 };
49971 ColumnAnimationService.prototype.isActive = function () {
49972 return this.active;
49973 };
49974 ColumnAnimationService.prototype.start = function () {
49975 if (this.active) {
49976 return;
49977 }
49978 if (this.gridOptionsWrapper.isSuppressColumnMoveAnimation()) {
49979 return;
49980 }
49981 // if doing RTL, we don't animate open / close as due to how the pixels are inverted,
49982 // the animation moves all the row the the right rather than to the left (ie it's the static
49983 // columns that actually get their coordinates updated)
49984 if (this.gridOptionsWrapper.isEnableRtl()) {
49985 return;
49986 }
49987 this.ensureAnimationCssClassPresent();
49988 this.active = true;
49989 };
49990 ColumnAnimationService.prototype.finish = function () {
49991 if (!this.active) {
49992 return;
49993 }
49994 this.flush();
49995 this.active = false;
49996 };
49997 ColumnAnimationService.prototype.executeNextVMTurn = function (func) {
49998 if (this.active) {
49999 this.executeNextFuncs.push(func);
50000 }
50001 else {
50002 func();
50003 }
50004 };
50005 ColumnAnimationService.prototype.executeLaterVMTurn = function (func) {
50006 if (this.active) {
50007 this.executeLaterFuncs.push(func);
50008 }
50009 else {
50010 func();
50011 }
50012 };
50013 ColumnAnimationService.prototype.ensureAnimationCssClassPresent = function () {
50014 var _this = this;
50015 // up the count, so we can tell if someone else has updated the count
50016 // by the time the 'wait' func executes
50017 this.animationThreadCount++;
50018 var animationThreadCountCopy = this.animationThreadCount;
50019 this.gridBodyCtrl.setColumnMovingCss(true);
50020 this.executeLaterFuncs.push(function () {
50021 // only remove the class if this thread was the last one to update it
50022 if (_this.animationThreadCount === animationThreadCountCopy) {
50023 _this.gridBodyCtrl.setColumnMovingCss(false);
50024 }
50025 });
50026 };
50027 ColumnAnimationService.prototype.flush = function () {
50028 var nowFuncs = this.executeNextFuncs;
50029 this.executeNextFuncs = [];
50030 var waitFuncs = this.executeLaterFuncs;
50031 this.executeLaterFuncs = [];
50032 if (nowFuncs.length === 0 && waitFuncs.length === 0) {
50033 return;
50034 }
50035 window.setTimeout(function () { return nowFuncs.forEach(function (func) { return func(); }); }, 0);
50036 window.setTimeout(function () { return waitFuncs.forEach(function (func) { return func(); }); }, 300);
50037 };
50038 __decorate([
50039 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('ctrlsService')
50040 ], ColumnAnimationService.prototype, "ctrlsService", void 0);
50041 __decorate([
50042 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
50043 ], ColumnAnimationService.prototype, "postConstruct", null);
50044 ColumnAnimationService = __decorate([
50045 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('columnAnimationService')
50046 ], ColumnAnimationService);
50047 return ColumnAnimationService;
50048}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
50049
50050
50051
50052
50053
50054/***/ }),
50055/* 223 */
50056/***/ (function(module, __webpack_exports__, __webpack_require__) {
50057
50058"use strict";
50059__webpack_require__.r(__webpack_exports__);
50060/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AutoGroupColService", function() { return AutoGroupColService; });
50061/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
50062/* harmony import */ var _entities_column__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(10);
50063/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
50064/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(20);
50065/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(13);
50066/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(7);
50067/**
50068 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
50069 * @version v27.3.0
50070 * @link https://www.ag-grid.com/
50071 * @license MIT
50072 */
50073var __extends = (undefined && undefined.__extends) || (function () {
50074 var extendStatics = function (d, b) {
50075 extendStatics = Object.setPrototypeOf ||
50076 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
50077 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
50078 return extendStatics(d, b);
50079 };
50080 return function (d, b) {
50081 extendStatics(d, b);
50082 function __() { this.constructor = d; }
50083 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
50084 };
50085})();
50086var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
50087 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
50088 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
50089 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
50090 return c > 3 && r && Object.defineProperty(target, key, r), r;
50091};
50092
50093
50094
50095
50096
50097
50098var AutoGroupColService = /** @class */ (function (_super) {
50099 __extends(AutoGroupColService, _super);
50100 function AutoGroupColService() {
50101 return _super !== null && _super.apply(this, arguments) || this;
50102 }
50103 AutoGroupColService_1 = AutoGroupColService;
50104 AutoGroupColService.prototype.createAutoGroupColumns = function (existingCols, rowGroupColumns) {
50105 var _this = this;
50106 var groupAutoColumns = [];
50107 var doingTreeData = this.gridOptionsWrapper.isTreeData();
50108 var doingMultiAutoColumn = this.gridOptionsWrapper.isGroupMultiAutoColumn();
50109 if (doingTreeData && doingMultiAutoColumn) {
50110 console.warn('AG Grid: you cannot mix groupMultiAutoColumn with treeData, only one column can be used to display groups when doing tree data');
50111 doingMultiAutoColumn = false;
50112 }
50113 // if doing groupMultiAutoColumn, then we call the method multiple times, once
50114 // for each column we are grouping by
50115 if (doingMultiAutoColumn) {
50116 rowGroupColumns.forEach(function (rowGroupCol, index) {
50117 groupAutoColumns.push(_this.createOneAutoGroupColumn(existingCols, rowGroupCol, index));
50118 });
50119 }
50120 else {
50121 groupAutoColumns.push(this.createOneAutoGroupColumn(existingCols));
50122 }
50123 return groupAutoColumns;
50124 };
50125 // rowGroupCol and index are missing if groupMultiAutoColumn=false
50126 AutoGroupColService.prototype.createOneAutoGroupColumn = function (existingCols, rowGroupCol, index) {
50127 // if one provided by user, use it, otherwise create one
50128 var defaultAutoColDef = this.generateDefaultColDef(rowGroupCol);
50129 // if doing multi, set the field
50130 var colId;
50131 if (rowGroupCol) {
50132 colId = _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].GROUP_AUTO_COLUMN_ID + "-" + rowGroupCol.getId();
50133 }
50134 else {
50135 colId = AutoGroupColService_1.GROUP_AUTO_COLUMN_BUNDLE_ID;
50136 }
50137 var userAutoColDef = this.gridOptionsWrapper.getAutoGroupColumnDef();
50138 Object(_utils_object__WEBPACK_IMPORTED_MODULE_4__["mergeDeep"])(defaultAutoColDef, userAutoColDef);
50139 defaultAutoColDef = this.columnFactory.mergeColDefs(defaultAutoColDef);
50140 defaultAutoColDef.colId = colId;
50141 // For tree data the filter is always allowed
50142 if (!this.gridOptionsWrapper.isTreeData()) {
50143 // we would only allow filter if the user has provided field or value getter. otherwise the filter
50144 // would not be able to work.
50145 var noFieldOrValueGetter = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["missing"])(defaultAutoColDef.field) && Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["missing"])(defaultAutoColDef.valueGetter) && Object(_utils_generic__WEBPACK_IMPORTED_MODULE_5__["missing"])(defaultAutoColDef.filterValueGetter);
50146 if (noFieldOrValueGetter) {
50147 defaultAutoColDef.filter = false;
50148 }
50149 }
50150 // if showing many cols, we don't want to show more than one with a checkbox for selection
50151 if (index && index > 0) {
50152 defaultAutoColDef.headerCheckboxSelection = false;
50153 }
50154 var existingCol = existingCols.find(function (col) { return col.getId() == colId; });
50155 if (existingCol) {
50156 existingCol.setColDef(defaultAutoColDef, null);
50157 this.columnFactory.applyColumnState(existingCol, defaultAutoColDef);
50158 return existingCol;
50159 }
50160 var newCol = new _entities_column__WEBPACK_IMPORTED_MODULE_1__["Column"](defaultAutoColDef, null, colId, true);
50161 this.context.createBean(newCol);
50162 return newCol;
50163 };
50164 AutoGroupColService.prototype.generateDefaultColDef = function (rowGroupCol) {
50165 var userDef = this.gridOptionsWrapper.getAutoGroupColumnDef();
50166 var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();
50167 var res = {
50168 headerName: localeTextFunc('group', 'Group')
50169 };
50170 var userHasProvidedGroupCellRenderer = userDef &&
50171 (userDef.cellRenderer || userDef.cellRendererFramework || userDef.cellRendererSelector);
50172 // only add the default group cell renderer if user hasn't provided one
50173 if (!userHasProvidedGroupCellRenderer) {
50174 res.cellRenderer = 'agGroupCellRenderer';
50175 }
50176 // we never allow moving the group column
50177 // defaultAutoColDef.suppressMovable = true;
50178 if (rowGroupCol) {
50179 var colDef = rowGroupCol.getColDef();
50180 Object.assign(res, {
50181 // cellRendererParams.groupKey: colDefToCopy.field;
50182 headerName: this.columnModel.getDisplayNameForColumn(rowGroupCol, 'header'),
50183 headerValueGetter: colDef.headerValueGetter
50184 });
50185 if (colDef.cellRenderer || colDef.cellRendererFramework) {
50186 Object.assign(res, {
50187 cellRendererParams: {
50188 innerRenderer: colDef.cellRenderer,
50189 innerRendererFramework: colDef.cellRendererFramework,
50190 innerRendererParams: colDef.cellRendererParams
50191 }
50192 });
50193 }
50194 res.showRowGroup = rowGroupCol.getColId();
50195 }
50196 else {
50197 res.showRowGroup = true;
50198 }
50199 return res;
50200 };
50201 var AutoGroupColService_1;
50202 AutoGroupColService.GROUP_AUTO_COLUMN_BUNDLE_ID = _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].GROUP_AUTO_COLUMN_ID;
50203 __decorate([
50204 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
50205 ], AutoGroupColService.prototype, "columnModel", void 0);
50206 __decorate([
50207 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnFactory')
50208 ], AutoGroupColService.prototype, "columnFactory", void 0);
50209 AutoGroupColService = AutoGroupColService_1 = __decorate([
50210 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('autoGroupColService')
50211 ], AutoGroupColService);
50212 return AutoGroupColService;
50213}(_context_beanStub__WEBPACK_IMPORTED_MODULE_3__["BeanStub"]));
50214
50215
50216
50217
50218
50219/***/ }),
50220/* 224 */
50221/***/ (function(module, __webpack_exports__, __webpack_require__) {
50222
50223"use strict";
50224__webpack_require__.r(__webpack_exports__);
50225/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PaginationAutoPageSizeService", function() { return PaginationAutoPageSizeService; });
50226/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
50227/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(23);
50228/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
50229/**
50230 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
50231 * @version v27.3.0
50232 * @link https://www.ag-grid.com/
50233 * @license MIT
50234 */
50235var __extends = (undefined && undefined.__extends) || (function () {
50236 var extendStatics = function (d, b) {
50237 extendStatics = Object.setPrototypeOf ||
50238 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
50239 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
50240 return extendStatics(d, b);
50241 };
50242 return function (d, b) {
50243 extendStatics(d, b);
50244 function __() { this.constructor = d; }
50245 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
50246 };
50247})();
50248var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
50249 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
50250 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
50251 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
50252 return c > 3 && r && Object.defineProperty(target, key, r), r;
50253};
50254
50255
50256
50257var PaginationAutoPageSizeService = /** @class */ (function (_super) {
50258 __extends(PaginationAutoPageSizeService, _super);
50259 function PaginationAutoPageSizeService() {
50260 return _super !== null && _super.apply(this, arguments) || this;
50261 }
50262 PaginationAutoPageSizeService.prototype.postConstruct = function () {
50263 var _this = this;
50264 this.ctrlsService.whenReady(function (p) {
50265 _this.centerRowContainerCon = p.centerRowContainerCtrl;
50266 _this.addManagedListener(_this.eventService, _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_BODY_HEIGHT_CHANGED, _this.onBodyHeightChanged.bind(_this));
50267 _this.addManagedListener(_this.eventService, _events__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_SCROLL_VISIBILITY_CHANGED, _this.onScrollVisibilityChanged.bind(_this));
50268 _this.checkPageSize();
50269 });
50270 };
50271 PaginationAutoPageSizeService.prototype.notActive = function () {
50272 return !this.gridOptionsWrapper.isPaginationAutoPageSize();
50273 };
50274 PaginationAutoPageSizeService.prototype.onScrollVisibilityChanged = function () {
50275 this.checkPageSize();
50276 };
50277 PaginationAutoPageSizeService.prototype.onBodyHeightChanged = function () {
50278 this.checkPageSize();
50279 };
50280 PaginationAutoPageSizeService.prototype.checkPageSize = function () {
50281 if (this.notActive()) {
50282 return;
50283 }
50284 var rowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();
50285 var bodyHeight = this.centerRowContainerCon.getViewportSizeFeature().getBodyHeight();
50286 if (bodyHeight > 0) {
50287 var newPageSize = Math.floor(bodyHeight / rowHeight);
50288 this.gridOptionsWrapper.setProperty('paginationPageSize', newPageSize);
50289 }
50290 };
50291 __decorate([
50292 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('ctrlsService')
50293 ], PaginationAutoPageSizeService.prototype, "ctrlsService", void 0);
50294 __decorate([
50295 _context_context__WEBPACK_IMPORTED_MODULE_2__["PostConstruct"]
50296 ], PaginationAutoPageSizeService.prototype, "postConstruct", null);
50297 PaginationAutoPageSizeService = __decorate([
50298 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Bean"])('paginationAutoPageSizeService')
50299 ], PaginationAutoPageSizeService);
50300 return PaginationAutoPageSizeService;
50301}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
50302
50303
50304
50305
50306
50307/***/ }),
50308/* 225 */
50309/***/ (function(module, __webpack_exports__, __webpack_require__) {
50310
50311"use strict";
50312__webpack_require__.r(__webpack_exports__);
50313/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ValueCache", function() { return ValueCache; });
50314/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
50315/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
50316/**
50317 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
50318 * @version v27.3.0
50319 * @link https://www.ag-grid.com/
50320 * @license MIT
50321 */
50322var __extends = (undefined && undefined.__extends) || (function () {
50323 var extendStatics = function (d, b) {
50324 extendStatics = Object.setPrototypeOf ||
50325 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
50326 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
50327 return extendStatics(d, b);
50328 };
50329 return function (d, b) {
50330 extendStatics(d, b);
50331 function __() { this.constructor = d; }
50332 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
50333 };
50334})();
50335var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
50336 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
50337 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
50338 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
50339 return c > 3 && r && Object.defineProperty(target, key, r), r;
50340};
50341
50342
50343var ValueCache = /** @class */ (function (_super) {
50344 __extends(ValueCache, _super);
50345 function ValueCache() {
50346 var _this = _super !== null && _super.apply(this, arguments) || this;
50347 _this.cacheVersion = 0;
50348 return _this;
50349 }
50350 ValueCache.prototype.init = function () {
50351 this.active = this.gridOptionsWrapper.isValueCache();
50352 this.neverExpires = this.gridOptionsWrapper.isValueCacheNeverExpires();
50353 };
50354 ValueCache.prototype.onDataChanged = function () {
50355 if (this.neverExpires) {
50356 return;
50357 }
50358 this.expire();
50359 };
50360 ValueCache.prototype.expire = function () {
50361 this.cacheVersion++;
50362 };
50363 ValueCache.prototype.setValue = function (rowNode, colId, value) {
50364 if (this.active) {
50365 if (rowNode.__cacheVersion !== this.cacheVersion) {
50366 rowNode.__cacheVersion = this.cacheVersion;
50367 rowNode.__cacheData = {};
50368 }
50369 rowNode.__cacheData[colId] = value;
50370 }
50371 };
50372 ValueCache.prototype.getValue = function (rowNode, colId) {
50373 if (!this.active || rowNode.__cacheVersion !== this.cacheVersion) {
50374 return undefined;
50375 }
50376 return rowNode.__cacheData[colId];
50377 };
50378 __decorate([
50379 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
50380 ], ValueCache.prototype, "init", null);
50381 ValueCache = __decorate([
50382 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('valueCache')
50383 ], ValueCache);
50384 return ValueCache;
50385}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
50386
50387
50388
50389
50390
50391/***/ }),
50392/* 226 */
50393/***/ (function(module, __webpack_exports__, __webpack_require__) {
50394
50395"use strict";
50396__webpack_require__.r(__webpack_exports__);
50397/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ChangeDetectionService", function() { return ChangeDetectionService; });
50398/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
50399/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
50400/* harmony import */ var _utils_changedPath__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(182);
50401/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15);
50402/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(23);
50403/**
50404 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
50405 * @version v27.3.0
50406 * @link https://www.ag-grid.com/
50407 * @license MIT
50408 */
50409var __extends = (undefined && undefined.__extends) || (function () {
50410 var extendStatics = function (d, b) {
50411 extendStatics = Object.setPrototypeOf ||
50412 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
50413 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
50414 return extendStatics(d, b);
50415 };
50416 return function (d, b) {
50417 extendStatics(d, b);
50418 function __() { this.constructor = d; }
50419 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
50420 };
50421})();
50422var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
50423 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
50424 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
50425 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
50426 return c > 3 && r && Object.defineProperty(target, key, r), r;
50427};
50428
50429
50430
50431
50432
50433var ChangeDetectionService = /** @class */ (function (_super) {
50434 __extends(ChangeDetectionService, _super);
50435 function ChangeDetectionService() {
50436 return _super !== null && _super.apply(this, arguments) || this;
50437 }
50438 ChangeDetectionService.prototype.init = function () {
50439 if (this.rowModel.getType() === _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE) {
50440 this.clientSideRowModel = this.rowModel;
50441 }
50442 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_4__["Events"].EVENT_CELL_VALUE_CHANGED, this.onCellValueChanged.bind(this));
50443 };
50444 ChangeDetectionService.prototype.onCellValueChanged = function (event) {
50445 // Clipboard service manages its own change detection, so no need to do it here.
50446 // The clipboard manages its own as otherwise this would happen once for every cell
50447 // that got updated as part of a paste operation, so e.g. if 100 cells in a paste operation,
50448 // this doChangeDetection would get called 100 times (once for each cell), instead clipboard
50449 // service executes the logic we have here once (in essence batching up all cell changes
50450 // into one change detection).
50451 if (event.source === _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].SOURCE_PASTE) {
50452 return;
50453 }
50454 this.doChangeDetection(event.node, event.column);
50455 };
50456 ChangeDetectionService.prototype.doChangeDetection = function (rowNode, column) {
50457 if (this.gridOptionsWrapper.isSuppressChangeDetection()) {
50458 return;
50459 }
50460 // step 1 of change detection is to update the aggregated values
50461 if (this.clientSideRowModel && !rowNode.isRowPinned()) {
50462 var onlyChangedColumns = this.gridOptionsWrapper.isAggregateOnlyChangedColumns();
50463 var changedPath = new _utils_changedPath__WEBPACK_IMPORTED_MODULE_2__["ChangedPath"](onlyChangedColumns, this.clientSideRowModel.getRootNode());
50464 changedPath.addParentNode(rowNode.parent, [column]);
50465 this.clientSideRowModel.doAggregate(changedPath);
50466 }
50467 // step 2 of change detection is to refresh the cells
50468 this.rowRenderer.refreshCells();
50469 };
50470 __decorate([
50471 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('rowModel')
50472 ], ChangeDetectionService.prototype, "rowModel", void 0);
50473 __decorate([
50474 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('rowRenderer')
50475 ], ChangeDetectionService.prototype, "rowRenderer", void 0);
50476 __decorate([
50477 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
50478 ], ChangeDetectionService.prototype, "init", null);
50479 ChangeDetectionService = __decorate([
50480 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('changeDetectionService')
50481 ], ChangeDetectionService);
50482 return ChangeDetectionService;
50483}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
50484
50485
50486
50487
50488
50489/***/ }),
50490/* 227 */
50491/***/ (function(module, __webpack_exports__, __webpack_require__) {
50492
50493"use strict";
50494__webpack_require__.r(__webpack_exports__);
50495/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AgComponentUtils", function() { return AgComponentUtils; });
50496/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
50497/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
50498/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(42);
50499/**
50500 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
50501 * @version v27.3.0
50502 * @link https://www.ag-grid.com/
50503 * @license MIT
50504 */
50505var __extends = (undefined && undefined.__extends) || (function () {
50506 var extendStatics = function (d, b) {
50507 extendStatics = Object.setPrototypeOf ||
50508 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
50509 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
50510 return extendStatics(d, b);
50511 };
50512 return function (d, b) {
50513 extendStatics(d, b);
50514 function __() { this.constructor = d; }
50515 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
50516 };
50517})();
50518var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
50519 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
50520 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
50521 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
50522 return c > 3 && r && Object.defineProperty(target, key, r), r;
50523};
50524
50525
50526
50527var AgComponentUtils = /** @class */ (function (_super) {
50528 __extends(AgComponentUtils, _super);
50529 function AgComponentUtils() {
50530 return _super !== null && _super.apply(this, arguments) || this;
50531 }
50532 AgComponentUtils.prototype.adaptFunction = function (propertyName, jsCompFunc) {
50533 var metadata = this.componentMetadataProvider.retrieve(propertyName);
50534 if (metadata && metadata.functionAdapter) {
50535 return metadata.functionAdapter(jsCompFunc);
50536 }
50537 return null;
50538 };
50539 AgComponentUtils.prototype.adaptCellRendererFunction = function (callback) {
50540 var Adapter = /** @class */ (function () {
50541 function Adapter() {
50542 }
50543 Adapter.prototype.refresh = function (params) {
50544 return false;
50545 };
50546 Adapter.prototype.getGui = function () {
50547 return this.eGui;
50548 };
50549 Adapter.prototype.init = function (params) {
50550 var callbackResult = callback(params);
50551 var type = typeof callbackResult;
50552 if (type === 'string' || type === 'number' || type === 'boolean') {
50553 this.eGui = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["loadTemplate"])('<span>' + callbackResult + '</span>');
50554 return;
50555 }
50556 if (callbackResult == null) {
50557 this.eGui = Object(_utils_dom__WEBPACK_IMPORTED_MODULE_2__["loadTemplate"])('<span></span>');
50558 return;
50559 }
50560 this.eGui = callbackResult;
50561 };
50562 return Adapter;
50563 }());
50564 return Adapter;
50565 };
50566 AgComponentUtils.prototype.doesImplementIComponent = function (candidate) {
50567 if (!candidate) {
50568 return false;
50569 }
50570 return candidate.prototype && 'getGui' in candidate.prototype;
50571 };
50572 __decorate([
50573 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])("componentMetadataProvider")
50574 ], AgComponentUtils.prototype, "componentMetadataProvider", void 0);
50575 AgComponentUtils = __decorate([
50576 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])("agComponentUtils")
50577 ], AgComponentUtils);
50578 return AgComponentUtils;
50579}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
50580
50581
50582
50583
50584
50585/***/ }),
50586/* 228 */
50587/***/ (function(module, __webpack_exports__, __webpack_require__) {
50588
50589"use strict";
50590__webpack_require__.r(__webpack_exports__);
50591/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ComponentMetadataProvider", function() { return ComponentMetadataProvider; });
50592/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
50593/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
50594/**
50595 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
50596 * @version v27.3.0
50597 * @link https://www.ag-grid.com/
50598 * @license MIT
50599 */
50600var __extends = (undefined && undefined.__extends) || (function () {
50601 var extendStatics = function (d, b) {
50602 extendStatics = Object.setPrototypeOf ||
50603 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
50604 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
50605 return extendStatics(d, b);
50606 };
50607 return function (d, b) {
50608 extendStatics(d, b);
50609 function __() { this.constructor = d; }
50610 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
50611 };
50612})();
50613var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
50614 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
50615 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
50616 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
50617 return c > 3 && r && Object.defineProperty(target, key, r), r;
50618};
50619
50620
50621var ComponentMetadataProvider = /** @class */ (function (_super) {
50622 __extends(ComponentMetadataProvider, _super);
50623 function ComponentMetadataProvider() {
50624 return _super !== null && _super.apply(this, arguments) || this;
50625 }
50626 ComponentMetadataProvider.prototype.postConstruct = function () {
50627 this.componentMetaData = {
50628 dateComponent: {
50629 mandatoryMethodList: ['getDate', 'setDate'],
50630 optionalMethodList: ['afterGuiAttached', 'setInputPlaceholder', 'setInputAriaLabel']
50631 },
50632 detailCellRenderer: {
50633 mandatoryMethodList: [],
50634 optionalMethodList: ['refresh'],
50635 functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)
50636 },
50637 headerComponent: {
50638 mandatoryMethodList: [],
50639 optionalMethodList: ['refresh']
50640 },
50641 headerGroupComponent: {
50642 mandatoryMethodList: [],
50643 optionalMethodList: []
50644 },
50645 loadingCellRenderer: {
50646 mandatoryMethodList: [],
50647 optionalMethodList: []
50648 },
50649 loadingOverlayComponent: {
50650 mandatoryMethodList: [],
50651 optionalMethodList: []
50652 },
50653 noRowsOverlayComponent: {
50654 mandatoryMethodList: [],
50655 optionalMethodList: []
50656 },
50657 floatingFilterComponent: {
50658 mandatoryMethodList: ['onParentModelChanged'],
50659 optionalMethodList: ['afterGuiAttached']
50660 },
50661 floatingFilterWrapperComponent: {
50662 mandatoryMethodList: [],
50663 optionalMethodList: []
50664 },
50665 cellRenderer: {
50666 mandatoryMethodList: [],
50667 optionalMethodList: ['refresh', 'afterGuiAttached'],
50668 functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)
50669 },
50670 cellEditor: {
50671 mandatoryMethodList: ['getValue'],
50672 optionalMethodList: ['isPopup', 'isCancelBeforeStart', 'isCancelAfterEnd', 'getPopupPosition', 'focusIn', 'focusOut', 'afterGuiAttached']
50673 },
50674 innerRenderer: {
50675 mandatoryMethodList: [],
50676 optionalMethodList: ['afterGuiAttached'],
50677 functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)
50678 },
50679 fullWidthCellRenderer: {
50680 mandatoryMethodList: [],
50681 optionalMethodList: ['refresh', 'afterGuiAttached'],
50682 functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)
50683 },
50684 pinnedRowCellRenderer: {
50685 mandatoryMethodList: [],
50686 optionalMethodList: ['refresh', 'afterGuiAttached'],
50687 functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)
50688 },
50689 groupRowRenderer: {
50690 mandatoryMethodList: [],
50691 optionalMethodList: ['afterGuiAttached'],
50692 functionAdapter: this.agComponentUtils.adaptCellRendererFunction.bind(this.agComponentUtils)
50693 },
50694 filter: {
50695 mandatoryMethodList: ['isFilterActive', 'doesFilterPass', 'getModel', 'setModel'],
50696 optionalMethodList: ['afterGuiAttached', 'onNewRowsLoaded', 'getModelAsString', 'onFloatingFilterChanged']
50697 },
50698 filterComponent: {
50699 mandatoryMethodList: ['isFilterActive', 'doesFilterPass', 'getModel', 'setModel'],
50700 optionalMethodList: ['afterGuiAttached', 'onNewRowsLoaded', 'getModelAsString', 'onFloatingFilterChanged']
50701 },
50702 statusPanel: {
50703 mandatoryMethodList: [],
50704 optionalMethodList: ['afterGuiAttached'],
50705 },
50706 toolPanel: {
50707 mandatoryMethodList: [],
50708 optionalMethodList: ['refresh', 'afterGuiAttached']
50709 },
50710 tooltipComponent: {
50711 mandatoryMethodList: [],
50712 optionalMethodList: []
50713 }
50714 };
50715 };
50716 ComponentMetadataProvider.prototype.retrieve = function (name) {
50717 return this.componentMetaData[name];
50718 };
50719 __decorate([
50720 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])("agComponentUtils")
50721 ], ComponentMetadataProvider.prototype, "agComponentUtils", void 0);
50722 __decorate([
50723 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
50724 ], ComponentMetadataProvider.prototype, "postConstruct", null);
50725 ComponentMetadataProvider = __decorate([
50726 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])("componentMetadataProvider")
50727 ], ComponentMetadataProvider);
50728 return ComponentMetadataProvider;
50729}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
50730
50731
50732
50733
50734
50735/***/ }),
50736/* 229 */
50737/***/ (function(module, __webpack_exports__, __webpack_require__) {
50738
50739"use strict";
50740__webpack_require__.r(__webpack_exports__);
50741/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Environment", function() { return Environment; });
50742/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
50743/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
50744/* harmony import */ var _utils_function__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(14);
50745/**
50746 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
50747 * @version v27.3.0
50748 * @link https://www.ag-grid.com/
50749 * @license MIT
50750 */
50751var __extends = (undefined && undefined.__extends) || (function () {
50752 var extendStatics = function (d, b) {
50753 extendStatics = Object.setPrototypeOf ||
50754 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
50755 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
50756 return extendStatics(d, b);
50757 };
50758 return function (d, b) {
50759 extendStatics(d, b);
50760 function __() { this.constructor = d; }
50761 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
50762 };
50763})();
50764var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
50765 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
50766 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
50767 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
50768 return c > 3 && r && Object.defineProperty(target, key, r), r;
50769};
50770
50771
50772
50773var MAT_GRID_SIZE = 8;
50774var BASE_GRID_SIZE = 4;
50775var BALHAM_GRID_SIZE = 4;
50776var ALPINE_GRID_SIZE = 6;
50777var HARD_CODED_SIZES = {
50778 // this item is required for custom themes
50779 'ag-theme-custom': {
50780 headerHeight: 25,
50781 headerCellMinWidth: 24,
50782 listItemHeight: BASE_GRID_SIZE * 5,
50783 rowHeight: 25,
50784 chartMenuPanelWidth: 220
50785 },
50786 'ag-theme-material': {
50787 headerHeight: MAT_GRID_SIZE * 7,
50788 headerCellMinWidth: 48,
50789 listItemHeight: MAT_GRID_SIZE * 4,
50790 rowHeight: MAT_GRID_SIZE * 6,
50791 chartMenuPanelWidth: 240
50792 },
50793 'ag-theme-balham': {
50794 headerHeight: BALHAM_GRID_SIZE * 8,
50795 headerCellMinWidth: 24,
50796 listItemHeight: BALHAM_GRID_SIZE * 6,
50797 rowHeight: BALHAM_GRID_SIZE * 7,
50798 chartMenuPanelWidth: 220
50799 },
50800 'ag-theme-alpine': {
50801 headerHeight: ALPINE_GRID_SIZE * 8,
50802 headerCellMinWidth: 36,
50803 listItemHeight: ALPINE_GRID_SIZE * 4,
50804 rowHeight: ALPINE_GRID_SIZE * 7,
50805 chartMenuPanelWidth: 240
50806 }
50807};
50808/**
50809 * this object contains a list of Sass variables and an array
50810 * of CSS styles required to get the correct value.
50811 * eg. $virtual-item-height requires a structure, so we can get its height.
50812 * <div class="ag-theme-balham">
50813 * <div class="ag-virtual-list-container">
50814 * <div class="ag-virtual-list-item"></div>
50815 * </div>
50816 * </div>
50817 */
50818var SASS_PROPERTY_BUILDER = {
50819 headerHeight: ['ag-header-row'],
50820 headerCellMinWidth: ['ag-header-cell'],
50821 listItemHeight: ['ag-virtual-list-item'],
50822 rowHeight: ['ag-row'],
50823 chartMenuPanelWidth: ['ag-chart-docked-container']
50824};
50825var CALCULATED_SIZES = {};
50826var Environment = /** @class */ (function (_super) {
50827 __extends(Environment, _super);
50828 function Environment() {
50829 return _super !== null && _super.apply(this, arguments) || this;
50830 }
50831 Environment.prototype.getSassVariable = function (theme, key) {
50832 var useTheme = 'ag-theme-' + (theme.match('material') ? 'material' : theme.match('balham') ? 'balham' : theme.match('alpine') ? 'alpine' : 'custom');
50833 var defaultValue = HARD_CODED_SIZES[useTheme][key];
50834 var calculatedValue = 0;
50835 if (!CALCULATED_SIZES[theme]) {
50836 CALCULATED_SIZES[theme] = {};
50837 }
50838 var size = CALCULATED_SIZES[theme][key];
50839 if (size != null) {
50840 return size;
50841 }
50842 if (SASS_PROPERTY_BUILDER[key]) {
50843 var classList = SASS_PROPERTY_BUILDER[key];
50844 var div = document.createElement('div');
50845 div.classList.add(theme);
50846 div.style.position = 'absolute';
50847 var el = classList.reduce(function (prevEl, currentClass) {
50848 var currentDiv = document.createElement('div');
50849 currentDiv.style.position = 'static';
50850 currentDiv.classList.add(currentClass);
50851 prevEl.appendChild(currentDiv);
50852 return currentDiv;
50853 }, div);
50854 if (document.body) {
50855 document.body.appendChild(div);
50856 var sizeName = key.toLowerCase().indexOf('height') !== -1 ? 'height' : 'width';
50857 calculatedValue = parseInt(window.getComputedStyle(el)[sizeName], 10);
50858 document.body.removeChild(div);
50859 }
50860 }
50861 CALCULATED_SIZES[theme][key] = calculatedValue || defaultValue;
50862 return CALCULATED_SIZES[theme][key];
50863 };
50864 Environment.prototype.isThemeDark = function () {
50865 var theme = this.getTheme().theme;
50866 return !!theme && theme.indexOf('dark') >= 0;
50867 };
50868 Environment.prototype.chartMenuPanelWidth = function () {
50869 var theme = this.getTheme().themeFamily;
50870 return this.getSassVariable(theme, 'chartMenuPanelWidth');
50871 };
50872 Environment.prototype.getTheme = function () {
50873 var reg = /\bag-(material|(?:theme-([\w\-]*)))\b/;
50874 var el = this.eGridDiv;
50875 var themeMatch = null;
50876 while (el) {
50877 themeMatch = reg.exec(el.className);
50878 if (!themeMatch) {
50879 el = el.parentElement || undefined;
50880 }
50881 else {
50882 break;
50883 }
50884 }
50885 if (!themeMatch) {
50886 return {};
50887 }
50888 var theme = themeMatch[0];
50889 var usingOldTheme = themeMatch[2] === undefined;
50890 if (usingOldTheme) {
50891 var newTheme_1 = theme.replace('ag-', 'ag-theme-');
50892 Object(_utils_function__WEBPACK_IMPORTED_MODULE_2__["doOnce"])(function () { return console.warn("AG Grid: As of v19 old theme are no longer provided. Please replace " + theme + " with " + newTheme_1 + "."); }, 'using-old-theme');
50893 }
50894 return { theme: theme, el: el, themeFamily: theme.replace(/-dark$/, '') };
50895 };
50896 __decorate([
50897 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('eGridDiv')
50898 ], Environment.prototype, "eGridDiv", void 0);
50899 Environment = __decorate([
50900 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('environment')
50901 ], Environment);
50902 return Environment;
50903}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
50904
50905
50906
50907
50908
50909/***/ }),
50910/* 230 */
50911/***/ (function(module, __webpack_exports__, __webpack_require__) {
50912
50913"use strict";
50914__webpack_require__.r(__webpack_exports__);
50915/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowContainerHeightService", function() { return RowContainerHeightService; });
50916/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
50917/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
50918/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(24);
50919/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(43);
50920/**
50921 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
50922 * @version v27.3.0
50923 * @link https://www.ag-grid.com/
50924 * @license MIT
50925 */
50926var __extends = (undefined && undefined.__extends) || (function () {
50927 var extendStatics = function (d, b) {
50928 extendStatics = Object.setPrototypeOf ||
50929 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
50930 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
50931 return extendStatics(d, b);
50932 };
50933 return function (d, b) {
50934 extendStatics(d, b);
50935 function __() { this.constructor = d; }
50936 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
50937 };
50938})();
50939var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
50940 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
50941 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
50942 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
50943 return c > 3 && r && Object.defineProperty(target, key, r), r;
50944};
50945var __param = (undefined && undefined.__param) || function (paramIndex, decorator) {
50946 return function (target, key) { decorator(target, key, paramIndex); }
50947};
50948
50949
50950
50951
50952/**
50953 * This class solves the 'max height' problem, where the user might want to show more data than
50954 * the max div height actually allows.
50955 */
50956var RowContainerHeightService = /** @class */ (function (_super) {
50957 __extends(RowContainerHeightService, _super);
50958 function RowContainerHeightService() {
50959 var _this = _super !== null && _super.apply(this, arguments) || this;
50960 // the scrollY position
50961 _this.scrollY = 0;
50962 // how tall the body is
50963 _this.uiBodyHeight = 0;
50964 return _this;
50965 }
50966 RowContainerHeightService.prototype.agWire = function (loggerFactory) {
50967 this.logger = loggerFactory.create("RowContainerHeightService");
50968 };
50969 RowContainerHeightService.prototype.postConstruct = function () {
50970 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_BODY_HEIGHT_CHANGED, this.updateOffset.bind(this));
50971 this.maxDivHeight = Object(_utils_browser__WEBPACK_IMPORTED_MODULE_3__["getMaxDivHeight"])();
50972 this.logger.log('maxDivHeight = ' + this.maxDivHeight);
50973 };
50974 RowContainerHeightService.prototype.isStretching = function () {
50975 return this.stretching;
50976 };
50977 RowContainerHeightService.prototype.getDivStretchOffset = function () {
50978 return this.divStretchOffset;
50979 };
50980 RowContainerHeightService.prototype.updateOffset = function () {
50981 if (!this.stretching) {
50982 return;
50983 }
50984 var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
50985 var newScrollY = gridBodyCon.getScrollFeature().getVScrollPosition().top;
50986 var newBodyHeight = this.getUiBodyHeight();
50987 var atLeastOneChanged = newScrollY !== this.scrollY || newBodyHeight !== this.uiBodyHeight;
50988 if (atLeastOneChanged) {
50989 this.scrollY = newScrollY;
50990 this.uiBodyHeight = newBodyHeight;
50991 this.calculateOffset();
50992 }
50993 };
50994 RowContainerHeightService.prototype.calculateOffset = function () {
50995 this.setUiContainerHeight(this.maxDivHeight);
50996 this.pixelsToShave = this.modelHeight - this.uiContainerHeight;
50997 this.maxScrollY = this.uiContainerHeight - this.uiBodyHeight;
50998 var scrollPercent = this.scrollY / this.maxScrollY;
50999 var divStretchOffset = scrollPercent * this.pixelsToShave;
51000 this.logger.log("Div Stretch Offset = " + divStretchOffset + " (" + this.pixelsToShave + " * " + scrollPercent + ")");
51001 this.setDivStretchOffset(divStretchOffset);
51002 };
51003 RowContainerHeightService.prototype.setUiContainerHeight = function (height) {
51004 if (height !== this.uiContainerHeight) {
51005 this.uiContainerHeight = height;
51006 this.eventService.dispatchEvent({ type: _eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_ROW_CONTAINER_HEIGHT_CHANGED });
51007 }
51008 };
51009 RowContainerHeightService.prototype.clearOffset = function () {
51010 this.setUiContainerHeight(this.modelHeight);
51011 this.pixelsToShave = 0;
51012 this.setDivStretchOffset(0);
51013 };
51014 RowContainerHeightService.prototype.setDivStretchOffset = function (newOffset) {
51015 // because we are talking pixels, no point in confusing things with half numbers
51016 var newOffsetFloor = typeof newOffset === 'number' ? Math.floor(newOffset) : null;
51017 if (this.divStretchOffset === newOffsetFloor) {
51018 return;
51019 }
51020 this.divStretchOffset = newOffsetFloor;
51021 this.eventService.dispatchEvent({ type: _eventKeys__WEBPACK_IMPORTED_MODULE_2__["Events"].EVENT_HEIGHT_SCALE_CHANGED });
51022 };
51023 RowContainerHeightService.prototype.setModelHeight = function (modelHeight) {
51024 this.modelHeight = modelHeight;
51025 this.stretching = modelHeight != null // null happens when in print layout
51026 && this.maxDivHeight > 0
51027 && modelHeight > this.maxDivHeight;
51028 if (this.stretching) {
51029 this.calculateOffset();
51030 }
51031 else {
51032 this.clearOffset();
51033 }
51034 };
51035 RowContainerHeightService.prototype.getUiContainerHeight = function () {
51036 return this.uiContainerHeight;
51037 };
51038 RowContainerHeightService.prototype.getRealPixelPosition = function (modelPixel) {
51039 return modelPixel - this.divStretchOffset;
51040 };
51041 RowContainerHeightService.prototype.getUiBodyHeight = function () {
51042 var gridBodyCon = this.ctrlsService.getGridBodyCtrl();
51043 var pos = gridBodyCon.getScrollFeature().getVScrollPosition();
51044 return pos.bottom - pos.top;
51045 };
51046 RowContainerHeightService.prototype.getScrollPositionForPixel = function (rowTop) {
51047 if (this.pixelsToShave <= 0) {
51048 return rowTop;
51049 }
51050 var modelMaxScroll = this.modelHeight - this.getUiBodyHeight();
51051 var scrollPercent = rowTop / modelMaxScroll;
51052 var scrollPixel = this.maxScrollY * scrollPercent;
51053 return scrollPixel;
51054 };
51055 __decorate([
51056 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('ctrlsService')
51057 ], RowContainerHeightService.prototype, "ctrlsService", void 0);
51058 __decorate([
51059 __param(0, Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Qualifier"])("loggerFactory"))
51060 ], RowContainerHeightService.prototype, "agWire", null);
51061 __decorate([
51062 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
51063 ], RowContainerHeightService.prototype, "postConstruct", null);
51064 RowContainerHeightService = __decorate([
51065 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('rowContainerHeightService')
51066 ], RowContainerHeightService);
51067 return RowContainerHeightService;
51068}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
51069
51070
51071
51072
51073
51074/***/ }),
51075/* 231 */
51076/***/ (function(module, __webpack_exports__, __webpack_require__) {
51077
51078"use strict";
51079__webpack_require__.r(__webpack_exports__);
51080/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SelectableService", function() { return SelectableService; });
51081/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
51082/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
51083/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(7);
51084/**
51085 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
51086 * @version v27.3.0
51087 * @link https://www.ag-grid.com/
51088 * @license MIT
51089 */
51090var __extends = (undefined && undefined.__extends) || (function () {
51091 var extendStatics = function (d, b) {
51092 extendStatics = Object.setPrototypeOf ||
51093 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
51094 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
51095 return extendStatics(d, b);
51096 };
51097 return function (d, b) {
51098 extendStatics(d, b);
51099 function __() { this.constructor = d; }
51100 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
51101 };
51102})();
51103var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
51104 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
51105 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
51106 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
51107 return c > 3 && r && Object.defineProperty(target, key, r), r;
51108};
51109
51110
51111
51112var SelectableService = /** @class */ (function (_super) {
51113 __extends(SelectableService, _super);
51114 function SelectableService() {
51115 return _super !== null && _super.apply(this, arguments) || this;
51116 }
51117 SelectableService.prototype.init = function () {
51118 this.groupSelectsChildren = this.gridOptionsWrapper.isGroupSelectsChildren();
51119 this.isRowSelectableFunc = this.gridOptionsWrapper.getIsRowSelectableFunc();
51120 };
51121 SelectableService.prototype.updateSelectableAfterGrouping = function (rowNode) {
51122 if (this.isRowSelectableFunc) {
51123 var nextChildrenFunc = function (node) { return node.childrenAfterGroup; };
51124 this.recurseDown(rowNode.childrenAfterGroup, nextChildrenFunc);
51125 }
51126 };
51127 SelectableService.prototype.recurseDown = function (children, nextChildrenFunc) {
51128 var _this = this;
51129 if (!children) {
51130 return;
51131 }
51132 children.forEach(function (child) {
51133 if (!child.group) {
51134 return;
51135 } // only interested in groups
51136 if (child.hasChildren()) {
51137 _this.recurseDown(nextChildrenFunc(child), nextChildrenFunc);
51138 }
51139 var rowSelectable;
51140 if (_this.groupSelectsChildren) {
51141 // have this group selectable if at least one direct child is selectable
51142 var firstSelectable = (nextChildrenFunc(child) || []).find(function (rowNode) { return rowNode.selectable === true; });
51143 rowSelectable = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_2__["exists"])(firstSelectable);
51144 }
51145 else {
51146 // directly retrieve selectable value from user callback
51147 rowSelectable = _this.isRowSelectableFunc ? _this.isRowSelectableFunc(child) : false;
51148 }
51149 child.setRowSelectable(rowSelectable);
51150 });
51151 };
51152 __decorate([
51153 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
51154 ], SelectableService.prototype, "init", null);
51155 SelectableService = __decorate([
51156 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('selectableService')
51157 ], SelectableService);
51158 return SelectableService;
51159}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
51160
51161
51162
51163
51164
51165/***/ }),
51166/* 232 */
51167/***/ (function(module, __webpack_exports__, __webpack_require__) {
51168
51169"use strict";
51170__webpack_require__.r(__webpack_exports__);
51171/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PaginationComp", function() { return PaginationComp; });
51172/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
51173/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
51174/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(57);
51175/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(23);
51176/* harmony import */ var _utils_icon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(48);
51177/* harmony import */ var _utils_number__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(46);
51178/* harmony import */ var _utils_aria__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(44);
51179/* harmony import */ var _constants_keyCode__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(65);
51180/**
51181 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
51182 * @version v27.3.0
51183 * @link https://www.ag-grid.com/
51184 * @license MIT
51185 */
51186var __extends = (undefined && undefined.__extends) || (function () {
51187 var extendStatics = function (d, b) {
51188 extendStatics = Object.setPrototypeOf ||
51189 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
51190 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
51191 return extendStatics(d, b);
51192 };
51193 return function (d, b) {
51194 extendStatics(d, b);
51195 function __() { this.constructor = d; }
51196 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
51197 };
51198})();
51199var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
51200 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
51201 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
51202 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
51203 return c > 3 && r && Object.defineProperty(target, key, r), r;
51204};
51205
51206
51207
51208
51209
51210
51211
51212
51213var PaginationComp = /** @class */ (function (_super) {
51214 __extends(PaginationComp, _super);
51215 function PaginationComp() {
51216 var _this = _super.call(this) || this;
51217 _this.previousAndFirstButtonsDisabled = false;
51218 _this.nextButtonDisabled = false;
51219 _this.lastButtonDisabled = false;
51220 return _this;
51221 }
51222 PaginationComp.prototype.postConstruct = function () {
51223 var _this = this;
51224 var isRtl = this.gridOptionsWrapper.isEnableRtl();
51225 this.setTemplate(this.getTemplate());
51226 this.btFirst.insertAdjacentElement('afterbegin', Object(_utils_icon__WEBPACK_IMPORTED_MODULE_4__["createIconNoSpan"])(isRtl ? 'last' : 'first', this.gridOptionsWrapper));
51227 this.btPrevious.insertAdjacentElement('afterbegin', Object(_utils_icon__WEBPACK_IMPORTED_MODULE_4__["createIconNoSpan"])(isRtl ? 'next' : 'previous', this.gridOptionsWrapper));
51228 this.btNext.insertAdjacentElement('afterbegin', Object(_utils_icon__WEBPACK_IMPORTED_MODULE_4__["createIconNoSpan"])(isRtl ? 'previous' : 'next', this.gridOptionsWrapper));
51229 this.btLast.insertAdjacentElement('afterbegin', Object(_utils_icon__WEBPACK_IMPORTED_MODULE_4__["createIconNoSpan"])(isRtl ? 'first' : 'last', this.gridOptionsWrapper));
51230 var isPaging = this.gridOptionsWrapper.isPagination();
51231 var paginationPanelEnabled = isPaging && !this.gridOptionsWrapper.isSuppressPaginationPanel();
51232 if (!paginationPanelEnabled) {
51233 this.setDisplayed(false);
51234 return;
51235 }
51236 this.addManagedListener(this.eventService, _events__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_PAGINATION_CHANGED, this.onPaginationChanged.bind(this));
51237 [
51238 { el: this.btFirst, fn: this.onBtFirst.bind(this) },
51239 { el: this.btPrevious, fn: this.onBtPrevious.bind(this) },
51240 { el: this.btNext, fn: this.onBtNext.bind(this) },
51241 { el: this.btLast, fn: this.onBtLast.bind(this) }
51242 ].forEach(function (item) {
51243 var el = item.el, fn = item.fn;
51244 _this.addManagedListener(el, 'click', fn);
51245 _this.addManagedListener(el, 'keydown', function (e) {
51246 if (e.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_7__["KeyCode"].ENTER || e.key === _constants_keyCode__WEBPACK_IMPORTED_MODULE_7__["KeyCode"].SPACE) {
51247 e.preventDefault();
51248 fn();
51249 }
51250 });
51251 });
51252 this.onPaginationChanged();
51253 };
51254 PaginationComp.prototype.onPaginationChanged = function () {
51255 this.enableOrDisableButtons();
51256 this.updateRowLabels();
51257 this.setCurrentPageLabel();
51258 this.setTotalLabels();
51259 };
51260 PaginationComp.prototype.onBtFirst = function () {
51261 if (!this.previousAndFirstButtonsDisabled) {
51262 this.paginationProxy.goToFirstPage();
51263 }
51264 };
51265 PaginationComp.prototype.setCurrentPageLabel = function () {
51266 var pagesExist = this.paginationProxy.getTotalPages() > 0;
51267 var currentPage = this.paginationProxy.getCurrentPage();
51268 var toDisplay = pagesExist ? currentPage + 1 : 0;
51269 this.lbCurrent.innerHTML = this.formatNumber(toDisplay);
51270 };
51271 PaginationComp.prototype.formatNumber = function (value) {
51272 var userFunc = this.gridOptionsWrapper.getPaginationNumberFormatterFunc();
51273 if (userFunc) {
51274 var params = { value: value };
51275 return userFunc(params);
51276 }
51277 var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();
51278 var thousandSeparator = localeTextFunc('thousandSeparator', ',');
51279 var decimalSeparator = localeTextFunc('decimalSeparator', '.');
51280 return Object(_utils_number__WEBPACK_IMPORTED_MODULE_5__["formatNumberCommas"])(value, thousandSeparator, decimalSeparator);
51281 };
51282 PaginationComp.prototype.getTemplate = function () {
51283 var localeTextFunc = this.gridOptionsWrapper.getLocaleTextFunc();
51284 var strPage = localeTextFunc('page', 'Page');
51285 var strTo = localeTextFunc('to', 'to');
51286 var strOf = localeTextFunc('of', 'of');
51287 var strFirst = localeTextFunc('firstPage', 'First Page');
51288 var strPrevious = localeTextFunc('previousPage', 'Previous Page');
51289 var strNext = localeTextFunc('nextPage', 'Next Page');
51290 var strLast = localeTextFunc('lastPage', 'Last Page');
51291 var compId = this.getCompId();
51292 return /* html */ "<div class=\"ag-paging-panel ag-unselectable\" id=\"ag-" + compId + "\">\n <span class=\"ag-paging-row-summary-panel\" role=\"status\">\n <span id=\"ag-" + compId + "-first-row\" ref=\"lbFirstRowOnPage\" class=\"ag-paging-row-summary-panel-number\"></span>\n <span id=\"ag-" + compId + "-to\">" + strTo + "</span>\n <span id=\"ag-" + compId + "-last-row\" ref=\"lbLastRowOnPage\" class=\"ag-paging-row-summary-panel-number\"></span>\n <span id=\"ag-" + compId + "-of\">" + strOf + "</span>\n <span id=\"ag-" + compId + "-row-count\" ref=\"lbRecordCount\" class=\"ag-paging-row-summary-panel-number\"></span>\n </span>\n <span class=\"ag-paging-page-summary-panel\" role=\"presentation\">\n <div ref=\"btFirst\" class=\"ag-paging-button\" role=\"button\" aria-label=\"" + strFirst + "\"></div>\n <div ref=\"btPrevious\" class=\"ag-paging-button\" role=\"button\" aria-label=\"" + strPrevious + "\"></div>\n <span class=\"ag-paging-description\" role=\"status\">\n <span id=\"ag-" + compId + "-start-page\">" + strPage + "</span>\n <span id=\"ag-" + compId + "-start-page-number\" ref=\"lbCurrent\" class=\"ag-paging-number\"></span>\n <span id=\"ag-" + compId + "-of-page\">" + strOf + "</span>\n <span id=\"ag-" + compId + "-of-page-number\" ref=\"lbTotal\" class=\"ag-paging-number\"></span>\n </span>\n <div ref=\"btNext\" class=\"ag-paging-button\" role=\"button\" aria-label=\"" + strNext + "\"></div>\n <div ref=\"btLast\" class=\"ag-paging-button\" role=\"button\" aria-label=\"" + strLast + "\"></div>\n </span>\n </div>";
51293 };
51294 PaginationComp.prototype.onBtNext = function () {
51295 if (!this.nextButtonDisabled) {
51296 this.paginationProxy.goToNextPage();
51297 }
51298 };
51299 PaginationComp.prototype.onBtPrevious = function () {
51300 if (!this.previousAndFirstButtonsDisabled) {
51301 this.paginationProxy.goToPreviousPage();
51302 }
51303 };
51304 PaginationComp.prototype.onBtLast = function () {
51305 if (!this.lastButtonDisabled) {
51306 this.paginationProxy.goToLastPage();
51307 }
51308 };
51309 PaginationComp.prototype.enableOrDisableButtons = function () {
51310 var currentPage = this.paginationProxy.getCurrentPage();
51311 var maxRowFound = this.paginationProxy.isLastPageFound();
51312 var totalPages = this.paginationProxy.getTotalPages();
51313 this.previousAndFirstButtonsDisabled = currentPage === 0;
51314 this.toggleButtonDisabled(this.btFirst, this.previousAndFirstButtonsDisabled);
51315 this.toggleButtonDisabled(this.btPrevious, this.previousAndFirstButtonsDisabled);
51316 var zeroPagesToDisplay = this.isZeroPagesToDisplay();
51317 var onLastPage = maxRowFound && currentPage === (totalPages - 1);
51318 this.nextButtonDisabled = onLastPage || zeroPagesToDisplay;
51319 this.lastButtonDisabled = !maxRowFound || zeroPagesToDisplay || currentPage === (totalPages - 1);
51320 this.toggleButtonDisabled(this.btNext, this.nextButtonDisabled);
51321 this.toggleButtonDisabled(this.btLast, this.lastButtonDisabled);
51322 };
51323 PaginationComp.prototype.toggleButtonDisabled = function (button, disabled) {
51324 Object(_utils_aria__WEBPACK_IMPORTED_MODULE_6__["setAriaDisabled"])(button, disabled);
51325 button.classList.toggle('ag-disabled', disabled);
51326 if (disabled) {
51327 button.removeAttribute('tabindex');
51328 }
51329 else {
51330 button.setAttribute('tabindex', '0');
51331 }
51332 };
51333 PaginationComp.prototype.updateRowLabels = function () {
51334 var currentPage = this.paginationProxy.getCurrentPage();
51335 var pageSize = this.paginationProxy.getPageSize();
51336 var maxRowFound = this.paginationProxy.isLastPageFound();
51337 var rowCount = this.paginationProxy.isLastPageFound() ?
51338 this.paginationProxy.getMasterRowCount() : null;
51339 var startRow;
51340 var endRow;
51341 if (this.isZeroPagesToDisplay()) {
51342 startRow = endRow = 0;
51343 }
51344 else {
51345 startRow = (pageSize * currentPage) + 1;
51346 endRow = startRow + pageSize - 1;
51347 if (maxRowFound && endRow > rowCount) {
51348 endRow = rowCount;
51349 }
51350 }
51351 this.lbFirstRowOnPage.innerHTML = this.formatNumber(startRow);
51352 if (this.rowNodeBlockLoader.isLoading()) {
51353 this.lbLastRowOnPage.innerHTML = '?';
51354 }
51355 else {
51356 this.lbLastRowOnPage.innerHTML = this.formatNumber(endRow);
51357 }
51358 };
51359 PaginationComp.prototype.isZeroPagesToDisplay = function () {
51360 var maxRowFound = this.paginationProxy.isLastPageFound();
51361 var totalPages = this.paginationProxy.getTotalPages();
51362 return maxRowFound && totalPages === 0;
51363 };
51364 PaginationComp.prototype.setTotalLabels = function () {
51365 var lastPageFound = this.paginationProxy.isLastPageFound();
51366 var totalPages = this.paginationProxy.getTotalPages();
51367 var rowCount = lastPageFound ? this.paginationProxy.getMasterRowCount() : null;
51368 // When `pivotMode=true` and no grouping or value columns exist, a single 'hidden' group row (root node) is in
51369 // the grid and the pagination totals will correctly display total = 1. However this is confusing to users as
51370 // they can't see it. To address this UX issue we simply set the totals to zero in the pagination panel.
51371 if (rowCount === 1) {
51372 var firstRow = this.paginationProxy.getRow(0);
51373 // a group node with no group or agg data will not be visible to users
51374 var hiddenGroupRow = firstRow && firstRow.group && !(firstRow.groupData || firstRow.aggData);
51375 if (hiddenGroupRow) {
51376 this.setTotalLabelsToZero();
51377 return;
51378 }
51379 }
51380 if (lastPageFound) {
51381 this.lbTotal.innerHTML = this.formatNumber(totalPages);
51382 this.lbRecordCount.innerHTML = this.formatNumber(rowCount);
51383 }
51384 else {
51385 var moreText = this.gridOptionsWrapper.getLocaleTextFunc()('more', 'more');
51386 this.lbTotal.innerHTML = moreText;
51387 this.lbRecordCount.innerHTML = moreText;
51388 }
51389 };
51390 PaginationComp.prototype.setTotalLabelsToZero = function () {
51391 this.lbFirstRowOnPage.innerHTML = this.formatNumber(0);
51392 this.lbCurrent.innerHTML = this.formatNumber(0);
51393 this.lbLastRowOnPage.innerHTML = this.formatNumber(0);
51394 this.lbTotal.innerHTML = this.formatNumber(0);
51395 this.lbRecordCount.innerHTML = this.formatNumber(0);
51396 };
51397 __decorate([
51398 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('paginationProxy')
51399 ], PaginationComp.prototype, "paginationProxy", void 0);
51400 __decorate([
51401 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('rowNodeBlockLoader')
51402 ], PaginationComp.prototype, "rowNodeBlockLoader", void 0);
51403 __decorate([
51404 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('btFirst')
51405 ], PaginationComp.prototype, "btFirst", void 0);
51406 __decorate([
51407 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('btPrevious')
51408 ], PaginationComp.prototype, "btPrevious", void 0);
51409 __decorate([
51410 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('btNext')
51411 ], PaginationComp.prototype, "btNext", void 0);
51412 __decorate([
51413 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('btLast')
51414 ], PaginationComp.prototype, "btLast", void 0);
51415 __decorate([
51416 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('lbRecordCount')
51417 ], PaginationComp.prototype, "lbRecordCount", void 0);
51418 __decorate([
51419 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('lbFirstRowOnPage')
51420 ], PaginationComp.prototype, "lbFirstRowOnPage", void 0);
51421 __decorate([
51422 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('lbLastRowOnPage')
51423 ], PaginationComp.prototype, "lbLastRowOnPage", void 0);
51424 __decorate([
51425 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('lbCurrent')
51426 ], PaginationComp.prototype, "lbCurrent", void 0);
51427 __decorate([
51428 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('lbTotal')
51429 ], PaginationComp.prototype, "lbTotal", void 0);
51430 __decorate([
51431 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
51432 ], PaginationComp.prototype, "postConstruct", null);
51433 return PaginationComp;
51434}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
51435
51436
51437
51438
51439
51440/***/ }),
51441/* 233 */
51442/***/ (function(module, __webpack_exports__, __webpack_require__) {
51443
51444"use strict";
51445__webpack_require__.r(__webpack_exports__);
51446/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OverlayWrapperComponent", function() { return OverlayWrapperComponent; });
51447/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
51448/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(36);
51449/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(57);
51450/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(42);
51451/* harmony import */ var _styling_layoutFeature__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(111);
51452/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(24);
51453/**
51454 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
51455 * @version v27.3.0
51456 * @link https://www.ag-grid.com/
51457 * @license MIT
51458 */
51459var __extends = (undefined && undefined.__extends) || (function () {
51460 var extendStatics = function (d, b) {
51461 extendStatics = Object.setPrototypeOf ||
51462 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
51463 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
51464 return extendStatics(d, b);
51465 };
51466 return function (d, b) {
51467 extendStatics(d, b);
51468 function __() { this.constructor = d; }
51469 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
51470 };
51471})();
51472var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
51473 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
51474 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
51475 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
51476 return c > 3 && r && Object.defineProperty(target, key, r), r;
51477};
51478
51479
51480
51481
51482
51483
51484var LoadingType;
51485(function (LoadingType) {
51486 LoadingType[LoadingType["Loading"] = 0] = "Loading";
51487 LoadingType[LoadingType["NoRows"] = 1] = "NoRows";
51488})(LoadingType || (LoadingType = {}));
51489var OverlayWrapperComponent = /** @class */ (function (_super) {
51490 __extends(OverlayWrapperComponent, _super);
51491 function OverlayWrapperComponent() {
51492 var _this = _super.call(this, OverlayWrapperComponent.TEMPLATE) || this;
51493 _this.inProgress = false;
51494 _this.destroyRequested = false;
51495 _this.manuallyDisplayed = false;
51496 return _this;
51497 }
51498 OverlayWrapperComponent.prototype.updateLayoutClasses = function (cssClass, params) {
51499 var overlayWrapperClassList = this.eOverlayWrapper.classList;
51500 overlayWrapperClassList.toggle(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_4__["LayoutCssClasses"].AUTO_HEIGHT, params.autoHeight);
51501 overlayWrapperClassList.toggle(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_4__["LayoutCssClasses"].NORMAL, params.normal);
51502 overlayWrapperClassList.toggle(_styling_layoutFeature__WEBPACK_IMPORTED_MODULE_4__["LayoutCssClasses"].PRINT, params.print);
51503 };
51504 OverlayWrapperComponent.prototype.postConstruct = function () {
51505 this.createManagedBean(new _styling_layoutFeature__WEBPACK_IMPORTED_MODULE_4__["LayoutFeature"](this));
51506 this.setDisplayed(false);
51507 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_5__["Events"].EVENT_ROW_DATA_CHANGED, this.onRowDataChanged.bind(this));
51508 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_5__["Events"].EVENT_ROW_DATA_UPDATED, this.onRowDataChanged.bind(this));
51509 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_5__["Events"].EVENT_NEW_COLUMNS_LOADED, this.onNewColumnsLoaded.bind(this));
51510 if (this.gridOptionsWrapper.isRowModelDefault() && !this.gridOptionsWrapper.getRowData()) {
51511 this.showLoadingOverlay();
51512 }
51513 this.gridApi.registerOverlayWrapperComp(this);
51514 };
51515 OverlayWrapperComponent.prototype.setWrapperTypeClass = function (loadingType) {
51516 var overlayWrapperClassList = this.eOverlayWrapper.classList;
51517 overlayWrapperClassList.toggle('ag-overlay-loading-wrapper', loadingType === LoadingType.Loading);
51518 overlayWrapperClassList.toggle('ag-overlay-no-rows-wrapper', loadingType === LoadingType.NoRows);
51519 };
51520 OverlayWrapperComponent.prototype.showLoadingOverlay = function () {
51521 if (this.gridOptionsWrapper.isSuppressLoadingOverlay()) {
51522 return;
51523 }
51524 var params = {};
51525 var compDetails = this.userComponentFactory.getLoadingOverlayCompDetails(params);
51526 var promise = compDetails.newAgStackInstance();
51527 this.showOverlay(promise, LoadingType.Loading);
51528 };
51529 OverlayWrapperComponent.prototype.showNoRowsOverlay = function () {
51530 if (this.gridOptionsWrapper.isSuppressNoRowsOverlay()) {
51531 return;
51532 }
51533 var params = {};
51534 var compDetails = this.userComponentFactory.getNoRowsOverlayCompDetails(params);
51535 var promise = compDetails.newAgStackInstance();
51536 this.showOverlay(promise, LoadingType.NoRows);
51537 };
51538 OverlayWrapperComponent.prototype.showOverlay = function (workItem, type) {
51539 var _this = this;
51540 if (this.inProgress) {
51541 return;
51542 }
51543 this.setWrapperTypeClass(type);
51544 this.destroyActiveOverlay();
51545 this.inProgress = true;
51546 if (workItem) {
51547 workItem.then(function (comp) {
51548 _this.inProgress = false;
51549 _this.eOverlayWrapper.appendChild(comp.getGui());
51550 _this.activeOverlay = comp;
51551 if (_this.destroyRequested) {
51552 _this.destroyRequested = false;
51553 _this.destroyActiveOverlay();
51554 }
51555 });
51556 }
51557 this.manuallyDisplayed = this.columnModel.isReady() && !this.paginationProxy.isEmpty();
51558 this.setDisplayed(true);
51559 };
51560 OverlayWrapperComponent.prototype.destroyActiveOverlay = function () {
51561 if (this.inProgress) {
51562 this.destroyRequested = true;
51563 return;
51564 }
51565 if (!this.activeOverlay) {
51566 return;
51567 }
51568 this.activeOverlay = this.getContext().destroyBean(this.activeOverlay);
51569 Object(_utils_dom__WEBPACK_IMPORTED_MODULE_3__["clearElement"])(this.eOverlayWrapper);
51570 };
51571 OverlayWrapperComponent.prototype.hideOverlay = function () {
51572 this.manuallyDisplayed = false;
51573 this.destroyActiveOverlay();
51574 this.setDisplayed(false);
51575 };
51576 OverlayWrapperComponent.prototype.destroy = function () {
51577 this.destroyActiveOverlay();
51578 _super.prototype.destroy.call(this);
51579 };
51580 OverlayWrapperComponent.prototype.showOrHideOverlay = function () {
51581 var isEmpty = this.paginationProxy.isEmpty();
51582 var isSuppressNoRowsOverlay = this.gridOptionsWrapper.isSuppressNoRowsOverlay();
51583 if (isEmpty && !isSuppressNoRowsOverlay) {
51584 this.showNoRowsOverlay();
51585 }
51586 else {
51587 this.hideOverlay();
51588 }
51589 };
51590 OverlayWrapperComponent.prototype.onRowDataChanged = function () {
51591 this.showOrHideOverlay();
51592 };
51593 OverlayWrapperComponent.prototype.onNewColumnsLoaded = function () {
51594 // hide overlay if columns and rows exist, this can happen if columns are loaded after data.
51595 // this problem exists before of the race condition between the services (column controller in this case)
51596 // and the view (grid panel). if the model beans were all initialised first, and then the view beans second,
51597 // this race condition would not happen.
51598 if (this.columnModel.isReady() && !this.paginationProxy.isEmpty() && !this.manuallyDisplayed) {
51599 this.hideOverlay();
51600 }
51601 };
51602 // wrapping in outer div, and wrapper, is needed to center the loading icon
51603 // The idea for centering came from here: http://www.vanseodesign.com/css/vertical-centering/
51604 OverlayWrapperComponent.TEMPLATE = "\n <div class=\"ag-overlay\" aria-hidden=\"true\">\n <div class=\"ag-overlay-panel\">\n <div class=\"ag-overlay-wrapper\" ref=\"eOverlayWrapper\"></div>\n </div>\n </div>";
51605 __decorate([
51606 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('userComponentFactory')
51607 ], OverlayWrapperComponent.prototype, "userComponentFactory", void 0);
51608 __decorate([
51609 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('paginationProxy')
51610 ], OverlayWrapperComponent.prototype, "paginationProxy", void 0);
51611 __decorate([
51612 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
51613 ], OverlayWrapperComponent.prototype, "gridApi", void 0);
51614 __decorate([
51615 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
51616 ], OverlayWrapperComponent.prototype, "columnModel", void 0);
51617 __decorate([
51618 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_2__["RefSelector"])('eOverlayWrapper')
51619 ], OverlayWrapperComponent.prototype, "eOverlayWrapper", void 0);
51620 __decorate([
51621 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
51622 ], OverlayWrapperComponent.prototype, "postConstruct", null);
51623 return OverlayWrapperComponent;
51624}(_widgets_component__WEBPACK_IMPORTED_MODULE_1__["Component"]));
51625
51626
51627
51628
51629
51630/***/ }),
51631/* 234 */
51632/***/ (function(module, __webpack_exports__, __webpack_require__) {
51633
51634"use strict";
51635__webpack_require__.r(__webpack_exports__);
51636/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowPositionUtils", function() { return RowPositionUtils; });
51637/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
51638/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
51639/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
51640/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(7);
51641/**
51642 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
51643 * @version v27.3.0
51644 * @link https://www.ag-grid.com/
51645 * @license MIT
51646 */
51647var __extends = (undefined && undefined.__extends) || (function () {
51648 var extendStatics = function (d, b) {
51649 extendStatics = Object.setPrototypeOf ||
51650 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
51651 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
51652 return extendStatics(d, b);
51653 };
51654 return function (d, b) {
51655 extendStatics(d, b);
51656 function __() { this.constructor = d; }
51657 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
51658 };
51659})();
51660var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
51661 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
51662 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
51663 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
51664 return c > 3 && r && Object.defineProperty(target, key, r), r;
51665};
51666
51667
51668
51669
51670var RowPositionUtils = /** @class */ (function (_super) {
51671 __extends(RowPositionUtils, _super);
51672 function RowPositionUtils() {
51673 return _super !== null && _super.apply(this, arguments) || this;
51674 }
51675 RowPositionUtils.prototype.getFirstRow = function () {
51676 var rowIndex = 0;
51677 var rowPinned;
51678 if (this.pinnedRowModel.getPinnedTopRowCount()) {
51679 rowPinned = _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP;
51680 }
51681 else if (this.rowModel.getRowCount()) {
51682 rowPinned = null;
51683 rowIndex = this.paginationProxy.getPageFirstRow();
51684 }
51685 else if (this.pinnedRowModel.getPinnedBottomRowCount()) {
51686 rowPinned = _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM;
51687 }
51688 return rowPinned === undefined ? null : { rowIndex: rowIndex, rowPinned: rowPinned };
51689 };
51690 RowPositionUtils.prototype.getLastRow = function () {
51691 var rowIndex;
51692 var rowPinned = null;
51693 var pinnedBottomCount = this.pinnedRowModel.getPinnedBottomRowCount();
51694 var pinnedTopCount = this.pinnedRowModel.getPinnedTopRowCount();
51695 if (pinnedBottomCount) {
51696 rowPinned = _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM;
51697 rowIndex = pinnedBottomCount - 1;
51698 }
51699 else if (this.rowModel.getRowCount()) {
51700 rowPinned = null;
51701 rowIndex = this.paginationProxy.getPageLastRow();
51702 }
51703 else if (pinnedTopCount) {
51704 rowPinned = _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP;
51705 rowIndex = pinnedTopCount - 1;
51706 }
51707 return rowIndex === undefined ? null : { rowIndex: rowIndex, rowPinned: rowPinned };
51708 };
51709 RowPositionUtils.prototype.getRowNode = function (gridRow) {
51710 switch (gridRow.rowPinned) {
51711 case _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP:
51712 return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];
51713 case _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM:
51714 return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];
51715 default:
51716 return this.rowModel.getRow(gridRow.rowIndex);
51717 }
51718 };
51719 RowPositionUtils.prototype.sameRow = function (rowA, rowB) {
51720 // if both missing
51721 if (!rowA && !rowB) {
51722 return true;
51723 }
51724 // if only one missing
51725 if ((rowA && !rowB) || (!rowA && rowB)) {
51726 return false;
51727 }
51728 // otherwise compare (use == to compare rowPinned because it can be null or undefined)
51729 return rowA.rowIndex === rowB.rowIndex && rowA.rowPinned == rowB.rowPinned;
51730 };
51731 // tests if this row selection is before the other row selection
51732 RowPositionUtils.prototype.before = function (rowA, rowB) {
51733 switch (rowA.rowPinned) {
51734 case _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP:
51735 // we we are floating top, and other isn't, then we are always before
51736 if (rowB.rowPinned !== _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP) {
51737 return true;
51738 }
51739 break;
51740 case _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM:
51741 // if we are floating bottom, and the other isn't, then we are never before
51742 if (rowB.rowPinned !== _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_BOTTOM) {
51743 return false;
51744 }
51745 break;
51746 default:
51747 // if we are not floating, but the other one is floating...
51748 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_3__["exists"])(rowB.rowPinned)) {
51749 return rowB.rowPinned !== _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_TOP;
51750 }
51751 break;
51752 }
51753 return rowA.rowIndex < rowB.rowIndex;
51754 };
51755 __decorate([
51756 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowModel')
51757 ], RowPositionUtils.prototype, "rowModel", void 0);
51758 __decorate([
51759 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('pinnedRowModel')
51760 ], RowPositionUtils.prototype, "pinnedRowModel", void 0);
51761 __decorate([
51762 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('paginationProxy')
51763 ], RowPositionUtils.prototype, "paginationProxy", void 0);
51764 RowPositionUtils = __decorate([
51765 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('rowPositionUtils')
51766 ], RowPositionUtils);
51767 return RowPositionUtils;
51768}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
51769
51770
51771
51772
51773
51774/***/ }),
51775/* 235 */
51776/***/ (function(module, __webpack_exports__, __webpack_require__) {
51777
51778"use strict";
51779__webpack_require__.r(__webpack_exports__);
51780/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CellPositionUtils", function() { return CellPositionUtils; });
51781/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
51782/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
51783/**
51784 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
51785 * @version v27.3.0
51786 * @link https://www.ag-grid.com/
51787 * @license MIT
51788 */
51789var __extends = (undefined && undefined.__extends) || (function () {
51790 var extendStatics = function (d, b) {
51791 extendStatics = Object.setPrototypeOf ||
51792 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
51793 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
51794 return extendStatics(d, b);
51795 };
51796 return function (d, b) {
51797 extendStatics(d, b);
51798 function __() { this.constructor = d; }
51799 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
51800 };
51801})();
51802var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
51803 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
51804 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
51805 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
51806 return c > 3 && r && Object.defineProperty(target, key, r), r;
51807};
51808
51809
51810var CellPositionUtils = /** @class */ (function (_super) {
51811 __extends(CellPositionUtils, _super);
51812 function CellPositionUtils() {
51813 return _super !== null && _super.apply(this, arguments) || this;
51814 }
51815 CellPositionUtils.prototype.createId = function (cellPosition) {
51816 var rowIndex = cellPosition.rowIndex, rowPinned = cellPosition.rowPinned, column = cellPosition.column;
51817 return this.createIdFromValues(rowIndex, column, rowPinned);
51818 };
51819 CellPositionUtils.prototype.createIdFromValues = function (rowIndex, column, rowPinned) {
51820 return rowIndex + "." + (rowPinned == null ? 'null' : rowPinned) + "." + column.getId();
51821 };
51822 CellPositionUtils.prototype.equals = function (cellA, cellB) {
51823 var colsMatch = cellA.column === cellB.column;
51824 var floatingMatch = cellA.rowPinned === cellB.rowPinned;
51825 var indexMatch = cellA.rowIndex === cellB.rowIndex;
51826 return colsMatch && floatingMatch && indexMatch;
51827 };
51828 CellPositionUtils = __decorate([
51829 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('cellPositionUtils')
51830 ], CellPositionUtils);
51831 return CellPositionUtils;
51832}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
51833
51834
51835
51836
51837
51838/***/ }),
51839/* 236 */
51840/***/ (function(module, __webpack_exports__, __webpack_require__) {
51841
51842"use strict";
51843__webpack_require__.r(__webpack_exports__);
51844/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UndoRedoService", function() { return UndoRedoService; });
51845/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
51846/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(24);
51847/* harmony import */ var _undoRedoStack__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(237);
51848/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15);
51849/* harmony import */ var _modules_moduleNames__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(16);
51850/* harmony import */ var _modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(17);
51851/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(20);
51852/**
51853 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
51854 * @version v27.3.0
51855 * @link https://www.ag-grid.com/
51856 * @license MIT
51857 */
51858var __extends = (undefined && undefined.__extends) || (function () {
51859 var extendStatics = function (d, b) {
51860 extendStatics = Object.setPrototypeOf ||
51861 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
51862 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
51863 return extendStatics(d, b);
51864 };
51865 return function (d, b) {
51866 extendStatics(d, b);
51867 function __() { this.constructor = d; }
51868 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
51869 };
51870})();
51871var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
51872 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
51873 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
51874 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
51875 return c > 3 && r && Object.defineProperty(target, key, r), r;
51876};
51877
51878
51879
51880
51881
51882
51883
51884var UndoRedoService = /** @class */ (function (_super) {
51885 __extends(UndoRedoService, _super);
51886 function UndoRedoService() {
51887 var _this = _super !== null && _super.apply(this, arguments) || this;
51888 _this.cellValueChanges = [];
51889 _this.activeCellEdit = null;
51890 _this.activeRowEdit = null;
51891 _this.isPasting = false;
51892 _this.isFilling = false;
51893 _this.onCellValueChanged = function (event) {
51894 var eventCell = { column: event.column, rowIndex: event.rowIndex, rowPinned: event.rowPinned };
51895 var isCellEditing = _this.activeCellEdit !== null && _this.cellPositionUtils.equals(_this.activeCellEdit, eventCell);
51896 var isRowEditing = _this.activeRowEdit !== null && _this.rowPositionUtils.sameRow(_this.activeRowEdit, eventCell);
51897 var shouldCaptureAction = isCellEditing || isRowEditing || _this.isPasting || _this.isFilling;
51898 if (!shouldCaptureAction) {
51899 return;
51900 }
51901 var rowPinned = event.rowPinned, rowIndex = event.rowIndex, column = event.column, oldValue = event.oldValue, value = event.value;
51902 var cellValueChange = {
51903 rowPinned: rowPinned,
51904 rowIndex: rowIndex,
51905 columnId: column.getColId(),
51906 newValue: value,
51907 oldValue: oldValue
51908 };
51909 _this.cellValueChanges.push(cellValueChange);
51910 };
51911 _this.clearStacks = function () {
51912 _this.undoStack.clear();
51913 _this.redoStack.clear();
51914 };
51915 return _this;
51916 }
51917 UndoRedoService.prototype.init = function () {
51918 if (!this.gridOptionsWrapper.isUndoRedoCellEditing()) {
51919 return;
51920 }
51921 var undoRedoLimit = this.gridOptionsWrapper.getUndoRedoCellEditingLimit();
51922 if (undoRedoLimit <= 0) {
51923 return;
51924 }
51925 this.undoStack = new _undoRedoStack__WEBPACK_IMPORTED_MODULE_2__["UndoRedoStack"](undoRedoLimit);
51926 this.redoStack = new _undoRedoStack__WEBPACK_IMPORTED_MODULE_2__["UndoRedoStack"](undoRedoLimit);
51927 this.addRowEditingListeners();
51928 this.addCellEditingListeners();
51929 this.addPasteListeners();
51930 this.addFillListeners();
51931 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_CELL_VALUE_CHANGED, this.onCellValueChanged);
51932 // undo / redo is restricted to actual editing so we clear the stacks when other operations are
51933 // performed that change the order of the row / cols.
51934 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_MODEL_UPDATED, this.clearStacks);
51935 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_COLUMN_PIVOT_MODE_CHANGED, this.clearStacks);
51936 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_NEW_COLUMNS_LOADED, this.clearStacks);
51937 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_COLUMN_GROUP_OPENED, this.clearStacks);
51938 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_COLUMN_ROW_GROUP_CHANGED, this.clearStacks);
51939 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_COLUMN_MOVED, this.clearStacks);
51940 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_COLUMN_PINNED, this.clearStacks);
51941 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_COLUMN_VISIBLE, this.clearStacks);
51942 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_ROW_DRAG_END, this.clearStacks);
51943 };
51944 UndoRedoService.prototype.getCurrentUndoStackSize = function () {
51945 return this.undoStack ? this.undoStack.getCurrentStackSize() : 0;
51946 };
51947 UndoRedoService.prototype.getCurrentRedoStackSize = function () {
51948 return this.redoStack ? this.redoStack.getCurrentStackSize() : 0;
51949 };
51950 UndoRedoService.prototype.undo = function () {
51951 if (!this.undoStack) {
51952 return;
51953 }
51954 var undoAction = this.undoStack.pop();
51955 if (!undoAction || !undoAction.cellValueChanges) {
51956 return;
51957 }
51958 this.processAction(undoAction, function (cellValueChange) { return cellValueChange.oldValue; });
51959 if (undoAction instanceof _undoRedoStack__WEBPACK_IMPORTED_MODULE_2__["FillUndoRedoAction"]) {
51960 this.processRangeAndCellFocus(undoAction.cellValueChanges, undoAction.initialRange);
51961 }
51962 else {
51963 this.processRangeAndCellFocus(undoAction.cellValueChanges);
51964 }
51965 this.redoStack.push(undoAction);
51966 };
51967 UndoRedoService.prototype.redo = function () {
51968 if (!this.redoStack) {
51969 return;
51970 }
51971 var redoAction = this.redoStack.pop();
51972 if (!redoAction || !redoAction.cellValueChanges) {
51973 return;
51974 }
51975 this.processAction(redoAction, function (cellValueChange) { return cellValueChange.newValue; });
51976 if (redoAction instanceof _undoRedoStack__WEBPACK_IMPORTED_MODULE_2__["FillUndoRedoAction"]) {
51977 this.processRangeAndCellFocus(redoAction.cellValueChanges, redoAction.finalRange);
51978 }
51979 else {
51980 this.processRangeAndCellFocus(redoAction.cellValueChanges);
51981 }
51982 this.undoStack.push(redoAction);
51983 };
51984 UndoRedoService.prototype.processAction = function (action, valueExtractor) {
51985 var _this = this;
51986 action.cellValueChanges.forEach(function (cellValueChange) {
51987 var rowIndex = cellValueChange.rowIndex, rowPinned = cellValueChange.rowPinned, columnId = cellValueChange.columnId;
51988 var rowPosition = { rowIndex: rowIndex, rowPinned: rowPinned };
51989 var currentRow = _this.getRowNode(rowPosition);
51990 // checks if the row has been filtered out
51991 if (!currentRow.displayed) {
51992 return;
51993 }
51994 currentRow.setDataValue(columnId, valueExtractor(cellValueChange));
51995 });
51996 };
51997 UndoRedoService.prototype.processRangeAndCellFocus = function (cellValueChanges, range) {
51998 var lastFocusedCell;
51999 if (range) {
52000 var startRow = range.startRow;
52001 var endRow = range.endRow;
52002 lastFocusedCell = {
52003 rowPinned: startRow.rowPinned,
52004 rowIndex: startRow.rowIndex,
52005 columnId: range.startColumn.getColId()
52006 };
52007 this.setLastFocusedCell(lastFocusedCell);
52008 var cellRangeParams = {
52009 rowStartIndex: startRow.rowIndex,
52010 rowStartPinned: startRow.rowPinned,
52011 rowEndIndex: endRow.rowIndex,
52012 rowEndPinned: endRow.rowPinned,
52013 columnStart: range.startColumn,
52014 columns: range.columns
52015 };
52016 this.gridApi.addCellRange(cellRangeParams);
52017 return;
52018 }
52019 var cellValueChange = cellValueChanges[0];
52020 var rowIndex = cellValueChange.rowIndex, rowPinned = cellValueChange.rowPinned;
52021 var rowPosition = { rowIndex: rowIndex, rowPinned: rowPinned };
52022 var row = this.getRowNode(rowPosition);
52023 lastFocusedCell = {
52024 rowPinned: cellValueChange.rowPinned,
52025 rowIndex: row.rowIndex,
52026 columnId: cellValueChange.columnId
52027 };
52028 this.setLastFocusedCell(lastFocusedCell);
52029 };
52030 UndoRedoService.prototype.setLastFocusedCell = function (lastFocusedCell) {
52031 var rowIndex = lastFocusedCell.rowIndex, columnId = lastFocusedCell.columnId, rowPinned = lastFocusedCell.rowPinned;
52032 this.gridApi.ensureIndexVisible(rowIndex);
52033 this.gridApi.ensureColumnVisible(columnId);
52034 if (_modules_moduleRegistry__WEBPACK_IMPORTED_MODULE_5__["ModuleRegistry"].isRegistered(_modules_moduleNames__WEBPACK_IMPORTED_MODULE_4__["ModuleNames"].RangeSelectionModule)) {
52035 this.gridApi.clearRangeSelection();
52036 }
52037 this.focusService.setFocusedCell(rowIndex, columnId, rowPinned, true);
52038 };
52039 UndoRedoService.prototype.addRowEditingListeners = function () {
52040 var _this = this;
52041 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_ROW_EDITING_STARTED, function (e) {
52042 _this.activeRowEdit = { rowIndex: e.rowIndex, rowPinned: e.rowPinned };
52043 });
52044 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_ROW_EDITING_STOPPED, function () {
52045 var action = new _undoRedoStack__WEBPACK_IMPORTED_MODULE_2__["UndoRedoAction"](_this.cellValueChanges);
52046 _this.pushActionsToUndoStack(action);
52047 _this.activeRowEdit = null;
52048 });
52049 };
52050 UndoRedoService.prototype.addCellEditingListeners = function () {
52051 var _this = this;
52052 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_CELL_EDITING_STARTED, function (e) {
52053 _this.activeCellEdit = { column: e.column, rowIndex: e.rowIndex, rowPinned: e.rowPinned };
52054 });
52055 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_CELL_EDITING_STOPPED, function () {
52056 _this.activeCellEdit = null;
52057 var shouldPushAction = !_this.activeRowEdit && !_this.isPasting && !_this.isFilling;
52058 if (shouldPushAction) {
52059 var action = new _undoRedoStack__WEBPACK_IMPORTED_MODULE_2__["UndoRedoAction"](_this.cellValueChanges);
52060 _this.pushActionsToUndoStack(action);
52061 }
52062 });
52063 };
52064 UndoRedoService.prototype.addPasteListeners = function () {
52065 var _this = this;
52066 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_PASTE_START, function () {
52067 _this.isPasting = true;
52068 });
52069 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_PASTE_END, function () {
52070 var action = new _undoRedoStack__WEBPACK_IMPORTED_MODULE_2__["UndoRedoAction"](_this.cellValueChanges);
52071 _this.pushActionsToUndoStack(action);
52072 _this.isPasting = false;
52073 });
52074 };
52075 UndoRedoService.prototype.addFillListeners = function () {
52076 var _this = this;
52077 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_FILL_START, function () {
52078 _this.isFilling = true;
52079 });
52080 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_1__["Events"].EVENT_FILL_END, function (event) {
52081 var action = new _undoRedoStack__WEBPACK_IMPORTED_MODULE_2__["FillUndoRedoAction"](_this.cellValueChanges, event.initialRange, event.finalRange);
52082 _this.pushActionsToUndoStack(action);
52083 _this.isFilling = false;
52084 });
52085 };
52086 UndoRedoService.prototype.pushActionsToUndoStack = function (action) {
52087 this.undoStack.push(action);
52088 this.cellValueChanges = [];
52089 this.redoStack.clear();
52090 };
52091 UndoRedoService.prototype.getRowNode = function (gridRow) {
52092 switch (gridRow.rowPinned) {
52093 case _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].PINNED_TOP:
52094 return this.pinnedRowModel.getPinnedTopRowData()[gridRow.rowIndex];
52095 case _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].PINNED_BOTTOM:
52096 return this.pinnedRowModel.getPinnedBottomRowData()[gridRow.rowIndex];
52097 default:
52098 return this.rowModel.getRow(gridRow.rowIndex);
52099 }
52100 };
52101 __decorate([
52102 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('focusService')
52103 ], UndoRedoService.prototype, "focusService", void 0);
52104 __decorate([
52105 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
52106 ], UndoRedoService.prototype, "gridApi", void 0);
52107 __decorate([
52108 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowModel')
52109 ], UndoRedoService.prototype, "rowModel", void 0);
52110 __decorate([
52111 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('pinnedRowModel')
52112 ], UndoRedoService.prototype, "pinnedRowModel", void 0);
52113 __decorate([
52114 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('cellPositionUtils')
52115 ], UndoRedoService.prototype, "cellPositionUtils", void 0);
52116 __decorate([
52117 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowPositionUtils')
52118 ], UndoRedoService.prototype, "rowPositionUtils", void 0);
52119 __decorate([
52120 _context_context__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
52121 ], UndoRedoService.prototype, "init", null);
52122 UndoRedoService = __decorate([
52123 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('undoRedoService')
52124 ], UndoRedoService);
52125 return UndoRedoService;
52126}(_context_beanStub__WEBPACK_IMPORTED_MODULE_6__["BeanStub"]));
52127
52128
52129
52130
52131
52132/***/ }),
52133/* 237 */
52134/***/ (function(module, __webpack_exports__, __webpack_require__) {
52135
52136"use strict";
52137__webpack_require__.r(__webpack_exports__);
52138/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UndoRedoAction", function() { return UndoRedoAction; });
52139/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FillUndoRedoAction", function() { return FillUndoRedoAction; });
52140/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UndoRedoStack", function() { return UndoRedoStack; });
52141/**
52142 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
52143 * @version v27.3.0
52144 * @link https://www.ag-grid.com/
52145 * @license MIT
52146 */
52147var __extends = (undefined && undefined.__extends) || (function () {
52148 var extendStatics = function (d, b) {
52149 extendStatics = Object.setPrototypeOf ||
52150 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
52151 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
52152 return extendStatics(d, b);
52153 };
52154 return function (d, b) {
52155 extendStatics(d, b);
52156 function __() { this.constructor = d; }
52157 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
52158 };
52159})();
52160var UndoRedoAction = /** @class */ (function () {
52161 function UndoRedoAction(cellValueChanges) {
52162 this.cellValueChanges = cellValueChanges;
52163 }
52164 return UndoRedoAction;
52165}());
52166
52167var FillUndoRedoAction = /** @class */ (function (_super) {
52168 __extends(FillUndoRedoAction, _super);
52169 function FillUndoRedoAction(cellValueChanges, initialRange, finalRange) {
52170 var _this = _super.call(this, cellValueChanges) || this;
52171 _this.initialRange = initialRange;
52172 _this.finalRange = finalRange;
52173 return _this;
52174 }
52175 return FillUndoRedoAction;
52176}(UndoRedoAction));
52177
52178var UndoRedoStack = /** @class */ (function () {
52179 function UndoRedoStack(maxStackSize) {
52180 this.actionStack = [];
52181 this.maxStackSize = maxStackSize ? maxStackSize : UndoRedoStack.DEFAULT_STACK_SIZE;
52182 this.actionStack = new Array(this.maxStackSize);
52183 }
52184 UndoRedoStack.prototype.pop = function () {
52185 return this.actionStack.pop();
52186 };
52187 UndoRedoStack.prototype.push = function (item) {
52188 var shouldAddActions = item.cellValueChanges && item.cellValueChanges.length > 0;
52189 if (!shouldAddActions) {
52190 return;
52191 }
52192 if (this.actionStack.length === this.maxStackSize) {
52193 this.actionStack.shift();
52194 }
52195 this.actionStack.push(item);
52196 };
52197 UndoRedoStack.prototype.clear = function () {
52198 this.actionStack = [];
52199 };
52200 UndoRedoStack.prototype.getCurrentStackSize = function () {
52201 return this.actionStack.length;
52202 };
52203 UndoRedoStack.DEFAULT_STACK_SIZE = 10;
52204 return UndoRedoStack;
52205}());
52206
52207
52208
52209
52210
52211/***/ }),
52212/* 238 */
52213/***/ (function(module, __webpack_exports__, __webpack_require__) {
52214
52215"use strict";
52216__webpack_require__.r(__webpack_exports__);
52217/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "HeaderPositionUtils", function() { return HeaderPositionUtils; });
52218/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
52219/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
52220/* harmony import */ var _entities_columnGroup__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(9);
52221/* harmony import */ var _row_headerRowComp__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(149);
52222/**
52223 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
52224 * @version v27.3.0
52225 * @link https://www.ag-grid.com/
52226 * @license MIT
52227 */
52228var __extends = (undefined && undefined.__extends) || (function () {
52229 var extendStatics = function (d, b) {
52230 extendStatics = Object.setPrototypeOf ||
52231 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
52232 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
52233 return extendStatics(d, b);
52234 };
52235 return function (d, b) {
52236 extendStatics(d, b);
52237 function __() { this.constructor = d; }
52238 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
52239 };
52240})();
52241var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
52242 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
52243 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
52244 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
52245 return c > 3 && r && Object.defineProperty(target, key, r), r;
52246};
52247
52248
52249
52250
52251var HeaderPositionUtils = /** @class */ (function (_super) {
52252 __extends(HeaderPositionUtils, _super);
52253 function HeaderPositionUtils() {
52254 return _super !== null && _super.apply(this, arguments) || this;
52255 }
52256 HeaderPositionUtils.prototype.findHeader = function (focusedHeader, direction) {
52257 var nextColumn;
52258 var getGroupMethod;
52259 var getColMethod;
52260 if (focusedHeader.column instanceof _entities_columnGroup__WEBPACK_IMPORTED_MODULE_2__["ColumnGroup"]) {
52261 getGroupMethod = "getDisplayedGroup" + direction;
52262 nextColumn = this.columnModel[getGroupMethod](focusedHeader.column);
52263 }
52264 else {
52265 getColMethod = "getDisplayedCol" + direction;
52266 nextColumn = this.columnModel[getColMethod](focusedHeader.column);
52267 }
52268 if (nextColumn) {
52269 return {
52270 column: nextColumn,
52271 headerRowIndex: focusedHeader.headerRowIndex
52272 };
52273 }
52274 };
52275 HeaderPositionUtils.prototype.findColAtEdgeForHeaderRow = function (level, position) {
52276 var displayedColumns = this.columnModel.getAllDisplayedColumns();
52277 var column = displayedColumns[position === 'start' ? 0 : displayedColumns.length - 1];
52278 if (!column) {
52279 return;
52280 }
52281 var childContainer = this.ctrlsService.getHeaderRowContainerCtrl(column.getPinned());
52282 var type = childContainer.getRowType(level);
52283 if (type == _row_headerRowComp__WEBPACK_IMPORTED_MODULE_3__["HeaderRowType"].COLUMN_GROUP) {
52284 var columnGroup = this.columnModel.getColumnGroupAtLevel(column, level);
52285 return {
52286 headerRowIndex: level,
52287 column: columnGroup
52288 };
52289 }
52290 return {
52291 // if type==null, means the header level didn't exist
52292 headerRowIndex: type == null ? -1 : level,
52293 column: column
52294 };
52295 };
52296 __decorate([
52297 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
52298 ], HeaderPositionUtils.prototype, "columnModel", void 0);
52299 __decorate([
52300 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('ctrlsService')
52301 ], HeaderPositionUtils.prototype, "ctrlsService", void 0);
52302 HeaderPositionUtils = __decorate([
52303 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('headerPositionUtils')
52304 ], HeaderPositionUtils);
52305 return HeaderPositionUtils;
52306}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
52307
52308
52309
52310
52311
52312/***/ }),
52313/* 239 */
52314/***/ (function(module, __webpack_exports__, __webpack_require__) {
52315
52316"use strict";
52317__webpack_require__.r(__webpack_exports__);
52318/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ColumnDefFactory", function() { return ColumnDefFactory; });
52319/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
52320/* harmony import */ var _utils_object__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(13);
52321/**
52322 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
52323 * @version v27.3.0
52324 * @link https://www.ag-grid.com/
52325 * @license MIT
52326 */
52327var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
52328 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
52329 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
52330 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
52331 return c > 3 && r && Object.defineProperty(target, key, r), r;
52332};
52333
52334
52335var ColumnDefFactory = /** @class */ (function () {
52336 function ColumnDefFactory() {
52337 }
52338 ColumnDefFactory.prototype.buildColumnDefs = function (cols, rowGroupColumns, pivotColumns) {
52339 var _this = this;
52340 var res = [];
52341 var colGroupDefs = {};
52342 cols.forEach(function (col) {
52343 var colDef = _this.createDefFromColumn(col, rowGroupColumns, pivotColumns);
52344 var addToResult = true;
52345 var childDef = colDef;
52346 var pointer = col.getOriginalParent();
52347 while (pointer) {
52348 var parentDef = null;
52349 // we don't include padding groups, as the column groups provided
52350 // by application didn't have these. the whole point of padding groups
52351 // is to balance the column tree that the user provided.
52352 if (pointer.isPadding()) {
52353 pointer = pointer.getOriginalParent();
52354 continue;
52355 }
52356 // if colDef for this group already exists, use it
52357 var existingParentDef = colGroupDefs[pointer.getGroupId()];
52358 if (existingParentDef) {
52359 existingParentDef.children.push(childDef);
52360 // if we added to result, it would be the second time we did it
52361 addToResult = false;
52362 // we don't want to continue up the tree, as it has already been
52363 // done for this group
52364 break;
52365 }
52366 parentDef = _this.createDefFromGroup(pointer);
52367 if (parentDef) {
52368 parentDef.children = [childDef];
52369 colGroupDefs[parentDef.groupId] = parentDef;
52370 childDef = parentDef;
52371 pointer = pointer.getOriginalParent();
52372 }
52373 }
52374 if (addToResult) {
52375 res.push(childDef);
52376 }
52377 });
52378 return res;
52379 };
52380 ColumnDefFactory.prototype.createDefFromGroup = function (group) {
52381 var defCloned = Object(_utils_object__WEBPACK_IMPORTED_MODULE_1__["deepCloneDefinition"])(group.getColGroupDef(), ['children']);
52382 if (defCloned) {
52383 defCloned.groupId = group.getGroupId();
52384 }
52385 return defCloned;
52386 };
52387 ColumnDefFactory.prototype.createDefFromColumn = function (col, rowGroupColumns, pivotColumns) {
52388 var colDefCloned = Object(_utils_object__WEBPACK_IMPORTED_MODULE_1__["deepCloneDefinition"])(col.getColDef());
52389 colDefCloned.colId = col.getColId();
52390 colDefCloned.width = col.getActualWidth();
52391 colDefCloned.rowGroup = col.isRowGroupActive();
52392 colDefCloned.rowGroupIndex = col.isRowGroupActive() ? rowGroupColumns.indexOf(col) : null;
52393 colDefCloned.pivot = col.isPivotActive();
52394 colDefCloned.pivotIndex = col.isPivotActive() ? pivotColumns.indexOf(col) : null;
52395 colDefCloned.aggFunc = col.isValueActive() ? col.getAggFunc() : null;
52396 colDefCloned.hide = col.isVisible() ? undefined : true;
52397 colDefCloned.pinned = col.isPinned() ? col.getPinned() : null;
52398 colDefCloned.sort = col.getSort() ? col.getSort() : null;
52399 colDefCloned.sortIndex = col.getSortIndex() != null ? col.getSortIndex() : null;
52400 return colDefCloned;
52401 };
52402 ColumnDefFactory = __decorate([
52403 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('columnDefFactory')
52404 ], ColumnDefFactory);
52405 return ColumnDefFactory;
52406}());
52407
52408
52409
52410
52411
52412/***/ }),
52413/* 240 */
52414/***/ (function(module, __webpack_exports__, __webpack_require__) {
52415
52416"use strict";
52417__webpack_require__.r(__webpack_exports__);
52418/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowCssClassCalculator", function() { return RowCssClassCalculator; });
52419/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
52420/* harmony import */ var _utils_array__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(18);
52421/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
52422/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(15);
52423/**
52424 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
52425 * @version v27.3.0
52426 * @link https://www.ag-grid.com/
52427 * @license MIT
52428 */
52429var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
52430 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
52431 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
52432 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
52433 return c > 3 && r && Object.defineProperty(target, key, r), r;
52434};
52435
52436
52437
52438
52439var RowCssClassCalculator = /** @class */ (function () {
52440 function RowCssClassCalculator() {
52441 }
52442 RowCssClassCalculator.prototype.getInitialRowClasses = function (params) {
52443 var classes = [];
52444 if (Object(_utils_generic__WEBPACK_IMPORTED_MODULE_0__["exists"])(params.extraCssClass)) {
52445 classes.push(params.extraCssClass);
52446 }
52447 classes.push('ag-row');
52448 classes.push(params.rowFocused ? 'ag-row-focus' : 'ag-row-no-focus');
52449 if (params.fadeRowIn) {
52450 classes.push('ag-opacity-zero');
52451 }
52452 classes.push(params.rowIsEven ? 'ag-row-even' : 'ag-row-odd');
52453 if (params.rowNode.isRowPinned()) {
52454 classes.push('ag-row-pinned');
52455 }
52456 if (params.rowNode.isSelected()) {
52457 classes.push('ag-row-selected');
52458 }
52459 if (params.rowNode.footer) {
52460 classes.push('ag-row-footer');
52461 }
52462 classes.push('ag-row-level-' + params.rowLevel);
52463 if (params.rowNode.stub) {
52464 classes.push('ag-row-loading');
52465 }
52466 if (params.fullWidthRow) {
52467 classes.push('ag-full-width-row');
52468 }
52469 if (params.expandable) {
52470 classes.push('ag-row-group');
52471 classes.push(params.rowNode.expanded ? 'ag-row-group-expanded' : 'ag-row-group-contracted');
52472 }
52473 if (params.rowNode.dragging) {
52474 classes.push('ag-row-dragging');
52475 }
52476 Object(_utils_array__WEBPACK_IMPORTED_MODULE_1__["pushAll"])(classes, this.processClassesFromGridOptions(params.rowNode));
52477 Object(_utils_array__WEBPACK_IMPORTED_MODULE_1__["pushAll"])(classes, this.preProcessRowClassRules(params.rowNode));
52478 // we use absolute position unless we are doing print layout
52479 classes.push(params.printLayout ? 'ag-row-position-relative' : 'ag-row-position-absolute');
52480 if (params.firstRowOnPage) {
52481 classes.push('ag-row-first');
52482 }
52483 if (params.lastRowOnPage) {
52484 classes.push('ag-row-last');
52485 }
52486 if (params.fullWidthRow) {
52487 if (params.pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].PINNED_LEFT) {
52488 classes.push('ag-cell-last-left-pinned');
52489 }
52490 if (params.pinned === _constants_constants__WEBPACK_IMPORTED_MODULE_3__["Constants"].PINNED_RIGHT) {
52491 classes.push('ag-cell-first-right-pinned');
52492 }
52493 }
52494 return classes;
52495 };
52496 RowCssClassCalculator.prototype.processClassesFromGridOptions = function (rowNode) {
52497 var res = [];
52498 var process = function (rowCls) {
52499 if (typeof rowCls === 'string') {
52500 res.push(rowCls);
52501 }
52502 else if (Array.isArray(rowCls)) {
52503 rowCls.forEach(function (e) { return res.push(e); });
52504 }
52505 };
52506 // part 1 - rowClass
52507 var rowClass = this.gridOptionsWrapper.getRowClass();
52508 if (rowClass) {
52509 if (typeof rowClass === 'function') {
52510 console.warn('AG Grid: rowClass should not be a function, please use getRowClass instead');
52511 return [];
52512 }
52513 process(rowClass);
52514 }
52515 // part 2 - rowClassFunc
52516 var rowClassFunc = this.gridOptionsWrapper.getRowClassFunc();
52517 if (rowClassFunc) {
52518 var params = {
52519 data: rowNode.data,
52520 node: rowNode,
52521 rowIndex: rowNode.rowIndex
52522 };
52523 var rowClassFuncResult = rowClassFunc(params);
52524 process(rowClassFuncResult);
52525 }
52526 return res;
52527 };
52528 RowCssClassCalculator.prototype.preProcessRowClassRules = function (rowNode) {
52529 var res = [];
52530 this.processRowClassRules(rowNode, function (className) {
52531 res.push(className);
52532 }, function (className) {
52533 // not catered for, if creating, no need
52534 // to remove class as it was never there
52535 });
52536 return res;
52537 };
52538 RowCssClassCalculator.prototype.processRowClassRules = function (rowNode, onApplicableClass, onNotApplicableClass) {
52539 var rowClassParams = {
52540 data: rowNode.data,
52541 node: rowNode,
52542 rowIndex: rowNode.rowIndex,
52543 api: this.gridOptionsWrapper.getApi(),
52544 columnApi: this.gridOptionsWrapper.getColumnApi(),
52545 context: this.gridOptionsWrapper.getContext()
52546 };
52547 this.stylingService.processClassRules(this.gridOptionsWrapper.rowClassRules(), rowClassParams, onApplicableClass, onNotApplicableClass);
52548 };
52549 RowCssClassCalculator.prototype.calculateRowLevel = function (rowNode) {
52550 if (rowNode.group) {
52551 return rowNode.level;
52552 }
52553 // if a leaf, and a parent exists, put a level of the parent, else put level of 0 for top level item
52554 return rowNode.parent ? (rowNode.parent.level + 1) : 0;
52555 };
52556 __decorate([
52557 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('stylingService')
52558 ], RowCssClassCalculator.prototype, "stylingService", void 0);
52559 __decorate([
52560 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('gridOptionsWrapper')
52561 ], RowCssClassCalculator.prototype, "gridOptionsWrapper", void 0);
52562 RowCssClassCalculator = __decorate([
52563 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Bean"])('rowCssClassCalculator')
52564 ], RowCssClassCalculator);
52565 return RowCssClassCalculator;
52566}());
52567
52568
52569
52570
52571
52572/***/ }),
52573/* 241 */
52574/***/ (function(module, __webpack_exports__, __webpack_require__) {
52575
52576"use strict";
52577__webpack_require__.r(__webpack_exports__);
52578/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowNodeSorter", function() { return RowNodeSorter; });
52579/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
52580/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(37);
52581/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
52582/**
52583 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
52584 * @version v27.3.0
52585 * @link https://www.ag-grid.com/
52586 * @license MIT
52587 */
52588var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
52589 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
52590 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
52591 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
52592 return c > 3 && r && Object.defineProperty(target, key, r), r;
52593};
52594
52595
52596
52597// this logic is used by both SSRM and CSRM
52598var RowNodeSorter = /** @class */ (function () {
52599 function RowNodeSorter() {
52600 }
52601 RowNodeSorter.prototype.doFullSort = function (rowNodes, sortOptions) {
52602 var mapper = function (rowNode, pos) { return ({ currentPos: pos, rowNode: rowNode }); };
52603 var sortedRowNodes = rowNodes.map(mapper);
52604 sortedRowNodes.sort(this.compareRowNodes.bind(this, sortOptions));
52605 return sortedRowNodes.map(function (item) { return item.rowNode; });
52606 };
52607 RowNodeSorter.prototype.compareRowNodes = function (sortOptions, sortedNodeA, sortedNodeB) {
52608 var nodeA = sortedNodeA.rowNode;
52609 var nodeB = sortedNodeB.rowNode;
52610 // Iterate columns, return the first that doesn't match
52611 for (var i = 0, len = sortOptions.length; i < len; i++) {
52612 var sortOption = sortOptions[i];
52613 var isInverted = sortOption.sort === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].SORT_DESC;
52614 var valueA = this.getValue(nodeA, sortOption.column);
52615 var valueB = this.getValue(nodeB, sortOption.column);
52616 var comparatorResult = void 0;
52617 var providedComparator = this.getComparator(sortOption, nodeA);
52618 if (providedComparator) {
52619 //if comparator provided, use it
52620 comparatorResult = providedComparator(valueA, valueB, nodeA, nodeB, isInverted);
52621 }
52622 else {
52623 //otherwise do our own comparison
52624 comparatorResult = _utils__WEBPACK_IMPORTED_MODULE_1__["_"].defaultComparator(valueA, valueB, this.gridOptionsWrapper.isAccentedSort());
52625 }
52626 // user provided comparators can return 'NaN' if they don't correctly handle 'undefined' values, this
52627 // typically occurs when the comparator is used on a group row
52628 var validResult = !isNaN(comparatorResult);
52629 if (validResult && comparatorResult !== 0) {
52630 return sortOption.sort === _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].SORT_ASC ? comparatorResult : comparatorResult * -1;
52631 }
52632 }
52633 // All matched, we make is so that the original sort order is kept:
52634 return sortedNodeA.currentPos - sortedNodeB.currentPos;
52635 };
52636 RowNodeSorter.prototype.getComparator = function (sortOption, rowNode) {
52637 var column = sortOption.column;
52638 // comparator on col get preference over everything else
52639 var comparatorOnCol = column.getColDef().comparator;
52640 if (comparatorOnCol != null) {
52641 return comparatorOnCol;
52642 }
52643 // if no comparator on col, see if we are showing a group, and if we are, get comparator from row group col
52644 if (rowNode.rowGroupColumn) {
52645 return rowNode.rowGroupColumn.getColDef().comparator;
52646 }
52647 if (!column.getColDef().showRowGroup) {
52648 return;
52649 }
52650 // if a 'field' is supplied on the autoGroupColumnDef we need to use the associated column comparator
52651 var groupLeafField = !rowNode.group && column.getColDef().field;
52652 if (!groupLeafField) {
52653 return;
52654 }
52655 var primaryColumn = this.columnModel.getPrimaryColumn(groupLeafField);
52656 if (!primaryColumn) {
52657 return;
52658 }
52659 return primaryColumn.getColDef().comparator;
52660 };
52661 RowNodeSorter.prototype.getValue = function (nodeA, column) {
52662 return this.valueService.getValue(column, nodeA, false, false);
52663 };
52664 __decorate([
52665 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridOptionsWrapper')
52666 ], RowNodeSorter.prototype, "gridOptionsWrapper", void 0);
52667 __decorate([
52668 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('valueService')
52669 ], RowNodeSorter.prototype, "valueService", void 0);
52670 __decorate([
52671 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
52672 ], RowNodeSorter.prototype, "columnModel", void 0);
52673 RowNodeSorter = __decorate([
52674 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])('rowNodeSorter')
52675 ], RowNodeSorter);
52676 return RowNodeSorter;
52677}());
52678
52679
52680
52681
52682
52683/***/ }),
52684/* 242 */
52685/***/ (function(module, __webpack_exports__, __webpack_require__) {
52686
52687"use strict";
52688__webpack_require__.r(__webpack_exports__);
52689/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CtrlsService", function() { return CtrlsService; });
52690/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(12);
52691/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
52692/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(15);
52693/**
52694 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
52695 * @version v27.3.0
52696 * @link https://www.ag-grid.com/
52697 * @license MIT
52698 */
52699var __extends = (undefined && undefined.__extends) || (function () {
52700 var extendStatics = function (d, b) {
52701 extendStatics = Object.setPrototypeOf ||
52702 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
52703 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
52704 return extendStatics(d, b);
52705 };
52706 return function (d, b) {
52707 extendStatics(d, b);
52708 function __() { this.constructor = d; }
52709 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
52710 };
52711})();
52712var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
52713 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
52714 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
52715 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
52716 return c > 3 && r && Object.defineProperty(target, key, r), r;
52717};
52718
52719
52720
52721var CtrlsService = /** @class */ (function (_super) {
52722 __extends(CtrlsService, _super);
52723 function CtrlsService() {
52724 var _this = _super !== null && _super.apply(this, arguments) || this;
52725 _this.ready = false;
52726 _this.readyCallbacks = [];
52727 return _this;
52728 }
52729 CtrlsService_1 = CtrlsService;
52730 CtrlsService.prototype.checkReady = function () {
52731 this.ready =
52732 this.gridCtrl != null
52733 && this.gridBodyCtrl != null
52734 && this.centerRowContainerCtrl != null
52735 && this.leftRowContainerCtrl != null
52736 && this.rightRowContainerCtrl != null
52737 && this.bottomCenterRowContainerCtrl != null
52738 && this.bottomLeftRowContainerCtrl != null
52739 && this.bottomRightRowContainerCtrl != null
52740 && this.topCenterRowContainerCtrl != null
52741 && this.topLeftRowContainerCtrl != null
52742 && this.topRightRowContainerCtrl != null
52743 && this.centerHeaderRowContainerCtrl != null
52744 && this.leftHeaderRowContainerCtrl != null
52745 && this.rightHeaderRowContainerCtrl != null
52746 && this.fakeHScrollCtrl != null
52747 && this.gridHeaderCtrl != null;
52748 if (this.ready) {
52749 var p_1 = this.createReadyParams();
52750 this.readyCallbacks.forEach(function (c) { return c(p_1); });
52751 this.readyCallbacks.length = 0;
52752 }
52753 };
52754 CtrlsService.prototype.whenReady = function (callback) {
52755 if (this.ready) {
52756 callback(this.createReadyParams());
52757 }
52758 else {
52759 this.readyCallbacks.push(callback);
52760 }
52761 };
52762 CtrlsService.prototype.createReadyParams = function () {
52763 return {
52764 centerRowContainerCtrl: this.centerRowContainerCtrl,
52765 leftRowContainerCtrl: this.leftRowContainerCtrl,
52766 rightRowContainerCtrl: this.rightRowContainerCtrl,
52767 bottomCenterRowContainerCtrl: this.bottomCenterRowContainerCtrl,
52768 bottomLeftRowContainerCtrl: this.bottomLeftRowContainerCtrl,
52769 bottomRightRowContainerCtrl: this.bottomRightRowContainerCtrl,
52770 topCenterRowContainerCtrl: this.topCenterRowContainerCtrl,
52771 topLeftRowContainerCtrl: this.topLeftRowContainerCtrl,
52772 topRightRowContainerCtrl: this.topRightRowContainerCtrl,
52773 centerHeaderRowContainerCtrl: this.centerHeaderRowContainerCtrl,
52774 leftHeaderRowContainerCtrl: this.leftHeaderRowContainerCtrl,
52775 rightHeaderRowContainerCtrl: this.rightHeaderRowContainerCtrl,
52776 fakeHScrollCtrl: this.fakeHScrollCtrl,
52777 gridBodyCtrl: this.gridBodyCtrl,
52778 gridCtrl: this.gridCtrl,
52779 gridHeaderCtrl: this.gridHeaderCtrl,
52780 };
52781 };
52782 CtrlsService.prototype.registerFakeHScrollCtrl = function (ctrl) {
52783 this.fakeHScrollCtrl = ctrl;
52784 this.checkReady();
52785 };
52786 CtrlsService.prototype.registerGridHeaderCtrl = function (gridHeaderCtrl) {
52787 this.gridHeaderCtrl = gridHeaderCtrl;
52788 this.checkReady();
52789 };
52790 CtrlsService.prototype.registerCenterRowContainerCtrl = function (ctrl) {
52791 this.centerRowContainerCtrl = ctrl;
52792 this.checkReady();
52793 };
52794 CtrlsService.prototype.registerLeftRowContainerCtrl = function (ctrl) {
52795 this.leftRowContainerCtrl = ctrl;
52796 this.checkReady();
52797 };
52798 CtrlsService.prototype.registerRightRowContainerCtrl = function (ctrl) {
52799 this.rightRowContainerCtrl = ctrl;
52800 this.checkReady();
52801 };
52802 CtrlsService.prototype.registerTopCenterRowContainerCtrl = function (ctrl) {
52803 this.topCenterRowContainerCtrl = ctrl;
52804 this.checkReady();
52805 };
52806 CtrlsService.prototype.registerTopLeftRowContainerCon = function (ctrl) {
52807 this.topLeftRowContainerCtrl = ctrl;
52808 this.checkReady();
52809 };
52810 CtrlsService.prototype.registerTopRightRowContainerCtrl = function (ctrl) {
52811 this.topRightRowContainerCtrl = ctrl;
52812 this.checkReady();
52813 };
52814 CtrlsService.prototype.registerBottomCenterRowContainerCtrl = function (ctrl) {
52815 this.bottomCenterRowContainerCtrl = ctrl;
52816 this.checkReady();
52817 };
52818 CtrlsService.prototype.registerBottomLeftRowContainerCtrl = function (ctrl) {
52819 this.bottomLeftRowContainerCtrl = ctrl;
52820 this.checkReady();
52821 };
52822 CtrlsService.prototype.registerBottomRightRowContainerCtrl = function (ctrl) {
52823 this.bottomRightRowContainerCtrl = ctrl;
52824 this.checkReady();
52825 };
52826 CtrlsService.prototype.registerHeaderContainer = function (ctrl, pinned) {
52827 switch (pinned) {
52828 case _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_LEFT:
52829 this.leftHeaderRowContainerCtrl = ctrl;
52830 break;
52831 case _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_RIGHT:
52832 this.rightHeaderRowContainerCtrl = ctrl;
52833 break;
52834 default:
52835 this.centerHeaderRowContainerCtrl = ctrl;
52836 break;
52837 }
52838 this.checkReady();
52839 };
52840 CtrlsService.prototype.registerGridBodyCtrl = function (ctrl) {
52841 this.gridBodyCtrl = ctrl;
52842 this.checkReady();
52843 };
52844 CtrlsService.prototype.registerGridCtrl = function (ctrl) {
52845 this.gridCtrl = ctrl;
52846 this.checkReady();
52847 };
52848 CtrlsService.prototype.getFakeHScrollCtrl = function () {
52849 return this.fakeHScrollCtrl;
52850 };
52851 CtrlsService.prototype.getGridHeaderCtrl = function () {
52852 return this.gridHeaderCtrl;
52853 };
52854 CtrlsService.prototype.getGridCtrl = function () {
52855 return this.gridCtrl;
52856 };
52857 CtrlsService.prototype.getCenterRowContainerCtrl = function () {
52858 return this.centerRowContainerCtrl;
52859 };
52860 CtrlsService.prototype.getTopCenterRowContainerCtrl = function () {
52861 return this.topCenterRowContainerCtrl;
52862 };
52863 CtrlsService.prototype.getBottomCenterRowContainerCtrl = function () {
52864 return this.bottomCenterRowContainerCtrl;
52865 };
52866 CtrlsService.prototype.getGridBodyCtrl = function () {
52867 return this.gridBodyCtrl;
52868 };
52869 CtrlsService.prototype.getHeaderRowContainerCtrls = function () {
52870 return [this.leftHeaderRowContainerCtrl, this.rightHeaderRowContainerCtrl, this.centerHeaderRowContainerCtrl];
52871 };
52872 CtrlsService.prototype.getHeaderRowContainerCtrl = function (pinned) {
52873 switch (pinned) {
52874 case _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_LEFT: return this.leftHeaderRowContainerCtrl;
52875 case _constants_constants__WEBPACK_IMPORTED_MODULE_2__["Constants"].PINNED_RIGHT: return this.rightHeaderRowContainerCtrl;
52876 default: return this.centerHeaderRowContainerCtrl;
52877 }
52878 };
52879 var CtrlsService_1;
52880 CtrlsService.NAME = 'ctrlsService';
52881 CtrlsService = CtrlsService_1 = __decorate([
52882 Object(_context_context__WEBPACK_IMPORTED_MODULE_0__["Bean"])(CtrlsService_1.NAME)
52883 ], CtrlsService);
52884 return CtrlsService;
52885}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
52886
52887
52888
52889
52890
52891/***/ }),
52892/* 243 */
52893/***/ (function(module, __webpack_exports__, __webpack_require__) {
52894
52895"use strict";
52896__webpack_require__.r(__webpack_exports__);
52897/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CtrlsFactory", function() { return CtrlsFactory; });
52898/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
52899/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
52900/**
52901 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
52902 * @version v27.3.0
52903 * @link https://www.ag-grid.com/
52904 * @license MIT
52905 */
52906var __extends = (undefined && undefined.__extends) || (function () {
52907 var extendStatics = function (d, b) {
52908 extendStatics = Object.setPrototypeOf ||
52909 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
52910 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
52911 return extendStatics(d, b);
52912 };
52913 return function (d, b) {
52914 extendStatics(d, b);
52915 function __() { this.constructor = d; }
52916 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
52917 };
52918})();
52919var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
52920 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
52921 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
52922 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
52923 return c > 3 && r && Object.defineProperty(target, key, r), r;
52924};
52925
52926
52927var CtrlsFactory = /** @class */ (function (_super) {
52928 __extends(CtrlsFactory, _super);
52929 function CtrlsFactory() {
52930 var _this = _super !== null && _super.apply(this, arguments) || this;
52931 _this.registry = {};
52932 return _this;
52933 }
52934 CtrlsFactory.prototype.register = function (meta) {
52935 this.registry[meta.controllerName] = meta.controllerClass;
52936 };
52937 CtrlsFactory.prototype.getInstance = function (name) {
52938 var ControllerClass = this.registry[name];
52939 if (ControllerClass == null) {
52940 return undefined;
52941 }
52942 return new ControllerClass();
52943 };
52944 CtrlsFactory = __decorate([
52945 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('ctrlsFactory')
52946 ], CtrlsFactory);
52947 return CtrlsFactory;
52948}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
52949
52950
52951
52952
52953
52954/***/ }),
52955/* 244 */
52956/***/ (function(module, __webpack_exports__, __webpack_require__) {
52957
52958"use strict";
52959__webpack_require__.r(__webpack_exports__);
52960/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FakeHScrollComp", function() { return FakeHScrollComp; });
52961/* harmony import */ var _widgets_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(36);
52962/* harmony import */ var _widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57);
52963/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
52964/* harmony import */ var _fakeHScrollCtrl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(245);
52965/* harmony import */ var _utils_dom__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(42);
52966/* harmony import */ var _centerWidthFeature__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(136);
52967/**
52968 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
52969 * @version v27.3.0
52970 * @link https://www.ag-grid.com/
52971 * @license MIT
52972 */
52973var __extends = (undefined && undefined.__extends) || (function () {
52974 var extendStatics = function (d, b) {
52975 extendStatics = Object.setPrototypeOf ||
52976 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
52977 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
52978 return extendStatics(d, b);
52979 };
52980 return function (d, b) {
52981 extendStatics(d, b);
52982 function __() { this.constructor = d; }
52983 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
52984 };
52985})();
52986var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
52987 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
52988 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
52989 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
52990 return c > 3 && r && Object.defineProperty(target, key, r), r;
52991};
52992
52993
52994
52995
52996
52997
52998var FakeHScrollComp = /** @class */ (function (_super) {
52999 __extends(FakeHScrollComp, _super);
53000 function FakeHScrollComp() {
53001 return _super.call(this, FakeHScrollComp.TEMPLATE) || this;
53002 }
53003 FakeHScrollComp.prototype.postConstruct = function () {
53004 var _this = this;
53005 var compProxy = {
53006 addOrRemoveCssClass: function (cssClassName, on) { return _this.addOrRemoveCssClass(cssClassName, on); },
53007 setHeight: function (height) { return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["setFixedHeight"])(_this.getGui(), height); },
53008 setContainerHeight: function (height) { return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["setFixedHeight"])(_this.eContainer, height); },
53009 setViewportHeight: function (height) { return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["setFixedHeight"])(_this.eViewport, height); },
53010 setRightSpacerFixedWidth: function (width) { return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["setFixedWidth"])(_this.eRightSpacer, width); },
53011 setLeftSpacerFixedWidth: function (width) { return Object(_utils_dom__WEBPACK_IMPORTED_MODULE_4__["setFixedWidth"])(_this.eLeftSpacer, width); },
53012 includeLeftSpacerScrollerCss: function (cssClass, include) {
53013 return _this.eLeftSpacer.classList.toggle(cssClass, include);
53014 },
53015 includeRightSpacerScrollerCss: function (cssClass, include) {
53016 return _this.eRightSpacer.classList.toggle(cssClass, include);
53017 },
53018 };
53019 var ctrl = this.createManagedBean(new _fakeHScrollCtrl__WEBPACK_IMPORTED_MODULE_3__["FakeHScrollCtrl"]());
53020 ctrl.setComp(compProxy, this.getGui(), this.eViewport, this.eContainer);
53021 this.createManagedBean(new _centerWidthFeature__WEBPACK_IMPORTED_MODULE_5__["CenterWidthFeature"](function (width) { return _this.eContainer.style.width = width + "px"; }));
53022 };
53023 FakeHScrollComp.TEMPLATE = "<div class=\"ag-body-horizontal-scroll\" aria-hidden=\"true\">\n <div class=\"ag-horizontal-left-spacer\" ref=\"eLeftSpacer\"></div>\n <div class=\"ag-body-horizontal-scroll-viewport\" ref=\"eViewport\">\n <div class=\"ag-body-horizontal-scroll-container\" ref=\"eContainer\"></div>\n </div>\n <div class=\"ag-horizontal-right-spacer\" ref=\"eRightSpacer\"></div>\n </div>";
53024 __decorate([
53025 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eLeftSpacer')
53026 ], FakeHScrollComp.prototype, "eLeftSpacer", void 0);
53027 __decorate([
53028 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eRightSpacer')
53029 ], FakeHScrollComp.prototype, "eRightSpacer", void 0);
53030 __decorate([
53031 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eViewport')
53032 ], FakeHScrollComp.prototype, "eViewport", void 0);
53033 __decorate([
53034 Object(_widgets_componentAnnotations__WEBPACK_IMPORTED_MODULE_1__["RefSelector"])('eContainer')
53035 ], FakeHScrollComp.prototype, "eContainer", void 0);
53036 __decorate([
53037 _context_context__WEBPACK_IMPORTED_MODULE_2__["PostConstruct"]
53038 ], FakeHScrollComp.prototype, "postConstruct", null);
53039 return FakeHScrollComp;
53040}(_widgets_component__WEBPACK_IMPORTED_MODULE_0__["Component"]));
53041
53042
53043
53044
53045
53046/***/ }),
53047/* 245 */
53048/***/ (function(module, __webpack_exports__, __webpack_require__) {
53049
53050"use strict";
53051__webpack_require__.r(__webpack_exports__);
53052/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FakeHScrollCtrl", function() { return FakeHScrollCtrl; });
53053/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
53054/* harmony import */ var _utils_browser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(43);
53055/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
53056/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(24);
53057/* harmony import */ var _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(112);
53058/**
53059 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
53060 * @version v27.3.0
53061 * @link https://www.ag-grid.com/
53062 * @license MIT
53063 */
53064var __extends = (undefined && undefined.__extends) || (function () {
53065 var extendStatics = function (d, b) {
53066 extendStatics = Object.setPrototypeOf ||
53067 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
53068 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
53069 return extendStatics(d, b);
53070 };
53071 return function (d, b) {
53072 extendStatics(d, b);
53073 function __() { this.constructor = d; }
53074 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
53075 };
53076})();
53077var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
53078 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
53079 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
53080 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
53081 return c > 3 && r && Object.defineProperty(target, key, r), r;
53082};
53083
53084
53085
53086
53087
53088var FakeHScrollCtrl = /** @class */ (function (_super) {
53089 __extends(FakeHScrollCtrl, _super);
53090 function FakeHScrollCtrl() {
53091 return _super.call(this) || this;
53092 }
53093 FakeHScrollCtrl.prototype.setComp = function (view, eGui, eViewport, eContainer) {
53094 this.view = view;
53095 this.eViewport = eViewport;
53096 this.eContainer = eContainer;
53097 this.eGui = eGui;
53098 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_SCROLL_VISIBILITY_CHANGED, this.onScrollVisibilityChanged.bind(this));
53099 this.onScrollVisibilityChanged();
53100 // When doing printing, this changes whether cols are pinned or not
53101 var spacerWidthsListener = this.setFakeHScrollSpacerWidths.bind(this);
53102 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED, spacerWidthsListener);
53103 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, spacerWidthsListener);
53104 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_4__["GridOptionsWrapper"].PROP_DOM_LAYOUT, spacerWidthsListener);
53105 this.setFakeHScrollSpacerWidths();
53106 if (this.invisibleScrollbar) {
53107 this.hideAndShowInvisibleScrollAsNeeded();
53108 this.addActiveListenerToggles();
53109 }
53110 this.ctrlsService.registerFakeHScrollCtrl(this);
53111 };
53112 FakeHScrollCtrl.prototype.addActiveListenerToggles = function () {
53113 var _this = this;
53114 var activateEvents = ['mouseenter', 'mousedown', 'touchstart'];
53115 var deactivateEvents = ['mouseleave', 'mouseup', 'touchend'];
53116 activateEvents.forEach(function (eventName) { return _this.addManagedListener(_this.eGui, eventName, function () { return _this.view.addOrRemoveCssClass('ag-scrollbar-active', true); }); });
53117 deactivateEvents.forEach(function (eventName) { return _this.addManagedListener(_this.eGui, eventName, function () { return _this.view.addOrRemoveCssClass('ag-scrollbar-active', false); }); });
53118 };
53119 FakeHScrollCtrl.prototype.postConstruct = function () {
53120 this.enableRtl = this.gridOptionsWrapper.isEnableRtl();
53121 this.invisibleScrollbar = Object(_utils_browser__WEBPACK_IMPORTED_MODULE_1__["isInvisibleScrollbar"])();
53122 };
53123 FakeHScrollCtrl.prototype.onScrollVisibilityChanged = function () {
53124 this.setScrollVisible();
53125 this.setFakeHScrollSpacerWidths();
53126 };
53127 FakeHScrollCtrl.prototype.hideAndShowInvisibleScrollAsNeeded = function () {
53128 var _this = this;
53129 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_BODY_SCROLL, function (params) {
53130 if (params.direction === 'horizontal') {
53131 _this.view.addOrRemoveCssClass('ag-scrollbar-scrolling', true);
53132 }
53133 });
53134 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_BODY_SCROLL_END, function () { return _this.view.addOrRemoveCssClass('ag-scrollbar-scrolling', false); });
53135 };
53136 FakeHScrollCtrl.prototype.setFakeHScrollSpacerWidths = function () {
53137 var vScrollShowing = this.scrollVisibleService.isVerticalScrollShowing();
53138 // we pad the right based on a) if cols are pinned to the right and
53139 // b) if v scroll is showing on the right (normal position of scroll)
53140 var rightSpacing = this.columnModel.getDisplayedColumnsRightWidth();
53141 var scrollOnRight = !this.enableRtl && vScrollShowing;
53142 var scrollbarWidth = this.gridOptionsWrapper.getScrollbarWidth();
53143 if (scrollOnRight) {
53144 rightSpacing += scrollbarWidth;
53145 }
53146 this.view.setRightSpacerFixedWidth(rightSpacing);
53147 this.view.includeRightSpacerScrollerCss('ag-scroller-corner', rightSpacing <= scrollbarWidth);
53148 // we pad the left based on a) if cols are pinned to the left and
53149 // b) if v scroll is showing on the left (happens in LTR layout only)
53150 var leftSpacing = this.columnModel.getDisplayedColumnsLeftWidth();
53151 var scrollOnLeft = this.enableRtl && vScrollShowing;
53152 if (scrollOnLeft) {
53153 leftSpacing += scrollbarWidth;
53154 }
53155 this.view.setLeftSpacerFixedWidth(leftSpacing);
53156 this.view.includeLeftSpacerScrollerCss('ag-scroller-corner', leftSpacing <= scrollbarWidth);
53157 };
53158 FakeHScrollCtrl.prototype.setScrollVisible = function () {
53159 var hScrollShowing = this.scrollVisibleService.isHorizontalScrollShowing();
53160 var invisibleScrollbar = this.invisibleScrollbar;
53161 var isSuppressHorizontalScroll = this.gridOptionsWrapper.isSuppressHorizontalScroll();
53162 var scrollbarWidth = hScrollShowing ? (this.gridOptionsWrapper.getScrollbarWidth() || 0) : 0;
53163 var adjustedScrollbarWidth = (scrollbarWidth === 0 && invisibleScrollbar) ? 15 : scrollbarWidth;
53164 var scrollContainerSize = !isSuppressHorizontalScroll ? adjustedScrollbarWidth : 0;
53165 this.view.addOrRemoveCssClass('ag-scrollbar-invisible', invisibleScrollbar);
53166 this.view.setHeight(scrollContainerSize);
53167 this.view.setViewportHeight(scrollContainerSize);
53168 this.view.setContainerHeight(scrollContainerSize);
53169 };
53170 FakeHScrollCtrl.prototype.getViewport = function () {
53171 return this.eViewport;
53172 };
53173 FakeHScrollCtrl.prototype.getContainer = function () {
53174 return this.eContainer;
53175 };
53176 __decorate([
53177 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('scrollVisibleService')
53178 ], FakeHScrollCtrl.prototype, "scrollVisibleService", void 0);
53179 __decorate([
53180 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('columnModel')
53181 ], FakeHScrollCtrl.prototype, "columnModel", void 0);
53182 __decorate([
53183 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('ctrlsService')
53184 ], FakeHScrollCtrl.prototype, "ctrlsService", void 0);
53185 __decorate([
53186 _context_context__WEBPACK_IMPORTED_MODULE_2__["PostConstruct"]
53187 ], FakeHScrollCtrl.prototype, "postConstruct", null);
53188 return FakeHScrollCtrl;
53189}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
53190
53191
53192
53193
53194
53195/***/ }),
53196/* 246 */
53197/***/ (function(module, __webpack_exports__, __webpack_require__) {
53198
53199"use strict";
53200__webpack_require__.r(__webpack_exports__);
53201/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PinnedWidthService", function() { return PinnedWidthService; });
53202/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(20);
53203/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(12);
53204/* harmony import */ var _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(112);
53205/* harmony import */ var _eventKeys__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(24);
53206/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(15);
53207/**
53208 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
53209 * @version v27.3.0
53210 * @link https://www.ag-grid.com/
53211 * @license MIT
53212 */
53213var __extends = (undefined && undefined.__extends) || (function () {
53214 var extendStatics = function (d, b) {
53215 extendStatics = Object.setPrototypeOf ||
53216 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
53217 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
53218 return extendStatics(d, b);
53219 };
53220 return function (d, b) {
53221 extendStatics(d, b);
53222 function __() { this.constructor = d; }
53223 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
53224 };
53225})();
53226var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
53227 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
53228 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
53229 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
53230 return c > 3 && r && Object.defineProperty(target, key, r), r;
53231};
53232
53233
53234
53235
53236
53237var PinnedWidthService = /** @class */ (function (_super) {
53238 __extends(PinnedWidthService, _super);
53239 function PinnedWidthService() {
53240 return _super !== null && _super.apply(this, arguments) || this;
53241 }
53242 PinnedWidthService.prototype.postConstruct = function () {
53243 var listener = this.checkContainerWidths.bind(this);
53244 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_DISPLAYED_COLUMNS_CHANGED, listener);
53245 this.addManagedListener(this.eventService, _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_DISPLAYED_COLUMNS_WIDTH_CHANGED, listener);
53246 this.addManagedListener(this.gridOptionsWrapper, _gridOptionsWrapper__WEBPACK_IMPORTED_MODULE_2__["GridOptionsWrapper"].PROP_DOM_LAYOUT, listener);
53247 };
53248 PinnedWidthService.prototype.checkContainerWidths = function () {
53249 var printLayout = this.gridOptionsWrapper.getDomLayout() === _constants_constants__WEBPACK_IMPORTED_MODULE_4__["Constants"].DOM_LAYOUT_PRINT;
53250 var newLeftWidth = printLayout ? 0 : this.columnModel.getDisplayedColumnsLeftWidth();
53251 var newRightWidth = printLayout ? 0 : this.columnModel.getDisplayedColumnsRightWidth();
53252 if (newLeftWidth != this.leftWidth) {
53253 this.leftWidth = newLeftWidth;
53254 this.eventService.dispatchEvent({ type: _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_LEFT_PINNED_WIDTH_CHANGED });
53255 }
53256 if (newRightWidth != this.rightWidth) {
53257 this.rightWidth = newRightWidth;
53258 this.eventService.dispatchEvent({ type: _eventKeys__WEBPACK_IMPORTED_MODULE_3__["Events"].EVENT_RIGHT_PINNED_WIDTH_CHANGED });
53259 }
53260 };
53261 PinnedWidthService.prototype.getPinnedRightWidth = function () {
53262 return this.rightWidth;
53263 };
53264 PinnedWidthService.prototype.getPinnedLeftWidth = function () {
53265 return this.leftWidth;
53266 };
53267 __decorate([
53268 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Autowired"])('columnModel')
53269 ], PinnedWidthService.prototype, "columnModel", void 0);
53270 __decorate([
53271 _context_context__WEBPACK_IMPORTED_MODULE_1__["PostConstruct"]
53272 ], PinnedWidthService.prototype, "postConstruct", null);
53273 PinnedWidthService = __decorate([
53274 Object(_context_context__WEBPACK_IMPORTED_MODULE_1__["Bean"])('pinnedWidthService')
53275 ], PinnedWidthService);
53276 return PinnedWidthService;
53277}(_context_beanStub__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
53278
53279
53280
53281
53282
53283/***/ }),
53284/* 247 */
53285/***/ (function(module, __webpack_exports__, __webpack_require__) {
53286
53287"use strict";
53288__webpack_require__.r(__webpack_exports__);
53289/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowNodeEventThrottle", function() { return RowNodeEventThrottle; });
53290/* harmony import */ var _constants_constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(15);
53291/* harmony import */ var _context_beanStub__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(20);
53292/* harmony import */ var _context_context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(12);
53293/**
53294 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
53295 * @version v27.3.0
53296 * @link https://www.ag-grid.com/
53297 * @license MIT
53298 */
53299var __extends = (undefined && undefined.__extends) || (function () {
53300 var extendStatics = function (d, b) {
53301 extendStatics = Object.setPrototypeOf ||
53302 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
53303 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
53304 return extendStatics(d, b);
53305 };
53306 return function (d, b) {
53307 extendStatics(d, b);
53308 function __() { this.constructor = d; }
53309 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
53310 };
53311})();
53312var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
53313 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
53314 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
53315 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
53316 return c > 3 && r && Object.defineProperty(target, key, r), r;
53317};
53318
53319
53320
53321var RowNodeEventThrottle = /** @class */ (function (_super) {
53322 __extends(RowNodeEventThrottle, _super);
53323 function RowNodeEventThrottle() {
53324 var _this = _super !== null && _super.apply(this, arguments) || this;
53325 _this.events = [];
53326 return _this;
53327 }
53328 RowNodeEventThrottle.prototype.postConstruct = function () {
53329 if (this.rowModel.getType() == _constants_constants__WEBPACK_IMPORTED_MODULE_0__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE) {
53330 this.clientSideRowModel = this.rowModel;
53331 }
53332 };
53333 // because the user can call rowNode.setExpanded() many times in one VM turn,
53334 // we throttle the calls to ClientSideRowModel using animationFrameService. this means for 100
53335 // row nodes getting expanded, we only update the CSRM once, and then we fire all events after
53336 // CSRM has updated.
53337 //
53338 // if we did not do this, then the user could call setExpanded on 100+ rows, causing the grid
53339 // to re-render 100+ times, which would be a performance lag.
53340 //
53341 // we use animationFrameService
53342 // rather than _.debounce() so this will get done if anyone flushes the animationFrameService
53343 // (eg user calls api.ensureRowVisible(), which in turn flushes ).
53344 RowNodeEventThrottle.prototype.dispatchExpanded = function (event) {
53345 var _this = this;
53346 // if not using CSRM, we don't debounce. otherwise this breaks the SSRM.
53347 if (this.clientSideRowModel == null) {
53348 this.eventService.dispatchEvent(event);
53349 return;
53350 }
53351 this.events.push(event);
53352 var func = function () {
53353 if (_this.clientSideRowModel) {
53354 _this.clientSideRowModel.onRowGroupOpened();
53355 }
53356 _this.events.forEach(function (e) { return _this.eventService.dispatchEvent(e); });
53357 _this.events = [];
53358 };
53359 if (this.dispatchExpandedDebounced == null) {
53360 this.dispatchExpandedDebounced = this.animationFrameService.debounce(func);
53361 }
53362 this.dispatchExpandedDebounced();
53363 };
53364 __decorate([
53365 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('animationFrameService')
53366 ], RowNodeEventThrottle.prototype, "animationFrameService", void 0);
53367 __decorate([
53368 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Autowired"])('rowModel')
53369 ], RowNodeEventThrottle.prototype, "rowModel", void 0);
53370 __decorate([
53371 _context_context__WEBPACK_IMPORTED_MODULE_2__["PostConstruct"]
53372 ], RowNodeEventThrottle.prototype, "postConstruct", null);
53373 RowNodeEventThrottle = __decorate([
53374 Object(_context_context__WEBPACK_IMPORTED_MODULE_2__["Bean"])('rowNodeEventThrottle')
53375 ], RowNodeEventThrottle);
53376 return RowNodeEventThrottle;
53377}(_context_beanStub__WEBPACK_IMPORTED_MODULE_1__["BeanStub"]));
53378
53379
53380
53381
53382
53383/***/ }),
53384/* 248 */
53385/***/ (function(module, __webpack_exports__, __webpack_require__) {
53386
53387"use strict";
53388__webpack_require__.r(__webpack_exports__);
53389/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defaultGroupComparator", function() { return defaultGroupComparator; });
53390/* harmony import */ var _utils_generic__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
53391/**
53392 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
53393 * @version v27.3.0
53394 * @link https://www.ag-grid.com/
53395 * @license MIT
53396 */
53397
53398function defaultGroupComparator(valueA, valueB, nodeA, nodeB, accentedCompare) {
53399 if (accentedCompare === void 0) { accentedCompare = false; }
53400 console.warn('AG Grid: Since ag-grid 11.0.0 defaultGroupComparator is not necessary. You can remove this from your colDef');
53401 var nodeAIsGroup = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_0__["exists"])(nodeA) && nodeA.group;
53402 var nodeBIsGroup = Object(_utils_generic__WEBPACK_IMPORTED_MODULE_0__["exists"])(nodeB) && nodeB.group;
53403 var bothAreGroups = nodeAIsGroup && nodeBIsGroup;
53404 var bothAreNormal = !nodeAIsGroup && !nodeBIsGroup;
53405 if (bothAreGroups) {
53406 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_0__["defaultComparator"])(nodeA.key, nodeB.key, accentedCompare);
53407 }
53408 if (bothAreNormal) {
53409 return Object(_utils_generic__WEBPACK_IMPORTED_MODULE_0__["defaultComparator"])(valueA, valueB, accentedCompare);
53410 }
53411 if (nodeAIsGroup) {
53412 return 1;
53413 }
53414 return -1;
53415}
53416
53417
53418
53419
53420/***/ }),
53421/* 249 */
53422/***/ (function(module, __webpack_exports__, __webpack_require__) {
53423
53424"use strict";
53425__webpack_require__.r(__webpack_exports__);
53426/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BaseComponentWrapper", function() { return BaseComponentWrapper; });
53427/**
53428 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
53429 * @version v27.3.0
53430 * @link https://www.ag-grid.com/
53431 * @license MIT
53432 */
53433var BaseComponentWrapper = /** @class */ (function () {
53434 function BaseComponentWrapper() {
53435 }
53436 BaseComponentWrapper.prototype.wrap = function (OriginalConstructor, mandatoryMethodList, optionalMethodList, componentType) {
53437 var _this = this;
53438 if (optionalMethodList === void 0) { optionalMethodList = []; }
53439 var wrapper = this.createWrapper(OriginalConstructor, componentType);
53440 mandatoryMethodList.forEach((function (methodName) {
53441 _this.createMethod(wrapper, methodName, true);
53442 }));
53443 optionalMethodList.forEach((function (methodName) {
53444 _this.createMethod(wrapper, methodName, false);
53445 }));
53446 return wrapper;
53447 };
53448 BaseComponentWrapper.prototype.unwrap = function (comp) {
53449 return comp;
53450 };
53451 BaseComponentWrapper.prototype.createMethod = function (wrapper, methodName, mandatory) {
53452 wrapper.addMethod(methodName, this.createMethodProxy(wrapper, methodName, mandatory));
53453 };
53454 BaseComponentWrapper.prototype.createMethodProxy = function (wrapper, methodName, mandatory) {
53455 return function () {
53456 if (wrapper.hasMethod(methodName)) {
53457 return wrapper.callMethod(methodName, arguments);
53458 }
53459 if (mandatory) {
53460 console.warn('AG Grid: Framework component is missing the method ' + methodName + '()');
53461 }
53462 return null;
53463 };
53464 };
53465 return BaseComponentWrapper;
53466}());
53467
53468
53469
53470
53471
53472/***/ }),
53473/* 250 */
53474/***/ (function(module, __webpack_exports__, __webpack_require__) {
53475
53476"use strict";
53477__webpack_require__.r(__webpack_exports__);
53478/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BarColumnLabelPlacement", function() { return BarColumnLabelPlacement; });
53479/**
53480 * @ag-grid-community/core - Advanced Data Grid / Data Table supporting Javascript / Typescript / React / Angular / Vue
53481 * @version v27.3.0
53482 * @link https://www.ag-grid.com/
53483 * @license MIT
53484 */
53485var BarColumnLabelPlacement;
53486(function (BarColumnLabelPlacement) {
53487 BarColumnLabelPlacement["InsideBase"] = "insideBase";
53488 BarColumnLabelPlacement["InsideEnd"] = "insideEnd";
53489 BarColumnLabelPlacement["Center"] = "center";
53490 BarColumnLabelPlacement["OutsideEnd"] = "outsideEnd";
53491})(BarColumnLabelPlacement || (BarColumnLabelPlacement = {}));
53492
53493
53494
53495
53496/***/ }),
53497/* 251 */
53498/***/ (function(module, __webpack_exports__, __webpack_require__) {
53499
53500"use strict";
53501__webpack_require__.r(__webpack_exports__);
53502/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ClientSideRowModel", function() { return ClientSideRowModel; });
53503/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
53504/* harmony import */ var _clientSideNodeManager__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(252);
53505var __extends = (undefined && undefined.__extends) || (function () {
53506 var extendStatics = function (d, b) {
53507 extendStatics = Object.setPrototypeOf ||
53508 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
53509 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
53510 return extendStatics(d, b);
53511 };
53512 return function (d, b) {
53513 extendStatics(d, b);
53514 function __() { this.constructor = d; }
53515 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
53516 };
53517})();
53518var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
53519 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
53520 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
53521 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
53522 return c > 3 && r && Object.defineProperty(target, key, r), r;
53523};
53524
53525
53526var RecursionType;
53527(function (RecursionType) {
53528 RecursionType[RecursionType["Normal"] = 0] = "Normal";
53529 RecursionType[RecursionType["AfterFilter"] = 1] = "AfterFilter";
53530 RecursionType[RecursionType["AfterFilterAndSort"] = 2] = "AfterFilterAndSort";
53531 RecursionType[RecursionType["PivotNodes"] = 3] = "PivotNodes";
53532})(RecursionType || (RecursionType = {}));
53533var ClientSideRowModel = /** @class */ (function (_super) {
53534 __extends(ClientSideRowModel, _super);
53535 function ClientSideRowModel() {
53536 return _super !== null && _super.apply(this, arguments) || this;
53537 }
53538 ClientSideRowModel.prototype.init = function () {
53539 var refreshEverythingFunc = this.refreshModel.bind(this, { step: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].EVERYTHING });
53540 var animate = !this.gridOptionsWrapper.isSuppressAnimationFrame();
53541 var refreshEverythingAfterColsChangedFunc = this.refreshModel.bind(this, {
53542 step: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].EVERYTHING,
53543 afterColumnsChanged: true,
53544 keepRenderedRows: true,
53545 animate: animate
53546 });
53547 this.addManagedListener(this.eventService, _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_NEW_COLUMNS_LOADED, refreshEverythingAfterColsChangedFunc);
53548 this.addManagedListener(this.eventService, _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_ROW_GROUP_CHANGED, refreshEverythingFunc);
53549 this.addManagedListener(this.eventService, _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_VALUE_CHANGED, this.onValueChanged.bind(this));
53550 this.addManagedListener(this.eventService, _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_PIVOT_CHANGED, this.refreshModel.bind(this, { step: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].PIVOT }));
53551 this.addManagedListener(this.eventService, _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));
53552 this.addManagedListener(this.eventService, _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_SORT_CHANGED, this.onSortChanged.bind(this));
53553 this.addManagedListener(this.eventService, _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_COLUMN_PIVOT_MODE_CHANGED, refreshEverythingFunc);
53554 var refreshMapListener = this.refreshModel.bind(this, {
53555 step: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].MAP,
53556 keepRenderedRows: true,
53557 animate: animate
53558 });
53559 this.addManagedListener(this.gridOptionsWrapper, _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["GridOptionsWrapper"].PROP_GROUP_REMOVE_SINGLE_CHILDREN, refreshMapListener);
53560 this.addManagedListener(this.gridOptionsWrapper, _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["GridOptionsWrapper"].PROP_GROUP_REMOVE_LOWEST_SINGLE_CHILDREN, refreshMapListener);
53561 this.rootNode = new _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["RowNode"](this.beans);
53562 this.nodeManager = new _clientSideNodeManager__WEBPACK_IMPORTED_MODULE_1__["ClientSideNodeManager"](this.rootNode, this.gridOptionsWrapper, this.eventService, this.columnModel, this.gridApi, this.columnApi, this.selectionService, this.beans);
53563 };
53564 ClientSideRowModel.prototype.start = function () {
53565 var rowData = this.gridOptionsWrapper.getRowData();
53566 if (rowData) {
53567 this.setRowData(rowData);
53568 }
53569 };
53570 ClientSideRowModel.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {
53571 var atLeastOneChange;
53572 var res = false;
53573 // we do this multiple times as changing the row heights can also change the first and last rows,
53574 // so the first pass can make lots of rows smaller, which means the second pass we end up changing
53575 // more rows.
53576 do {
53577 atLeastOneChange = false;
53578 var rowAtStartPixel = this.getRowIndexAtPixel(startPixel);
53579 var rowAtEndPixel = this.getRowIndexAtPixel(endPixel);
53580 // keep check to current page if doing pagination
53581 var firstRow = Math.max(rowAtStartPixel, startLimitIndex);
53582 var lastRow = Math.min(rowAtEndPixel, endLimitIndex);
53583 for (var rowIndex = firstRow; rowIndex <= lastRow; rowIndex++) {
53584 var rowNode = this.getRow(rowIndex);
53585 if (rowNode.rowHeightEstimated) {
53586 var rowHeight = this.gridOptionsWrapper.getRowHeightForNode(rowNode);
53587 rowNode.setRowHeight(rowHeight.height);
53588 atLeastOneChange = true;
53589 res = true;
53590 }
53591 }
53592 if (atLeastOneChange) {
53593 this.setRowTopAndRowIndex();
53594 }
53595 } while (atLeastOneChange);
53596 return res;
53597 };
53598 ClientSideRowModel.prototype.setRowTopAndRowIndex = function () {
53599 var defaultRowHeight = this.gridOptionsWrapper.getDefaultRowHeight();
53600 var nextRowTop = 0;
53601 // mapping displayed rows is not needed for this method, however it's used in
53602 // clearRowTopAndRowIndex(), and given we are looping through this.rowsToDisplay here,
53603 // we create the map here for performance reasons, so we don't loop a second time
53604 // in clearRowTopAndRowIndex()
53605 var displayedRowsMapped = new Set();
53606 // we don't estimate if doing fullHeight or autoHeight, as all rows get rendered all the time
53607 // with these two layouts.
53608 var allowEstimate = this.gridOptionsWrapper.getDomLayout() === _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Constants"].DOM_LAYOUT_NORMAL;
53609 for (var i = 0; i < this.rowsToDisplay.length; i++) {
53610 var rowNode = this.rowsToDisplay[i];
53611 if (rowNode.id != null) {
53612 displayedRowsMapped.add(rowNode.id);
53613 }
53614 if (rowNode.rowHeight == null) {
53615 var rowHeight = this.gridOptionsWrapper.getRowHeightForNode(rowNode, allowEstimate, defaultRowHeight);
53616 rowNode.setRowHeight(rowHeight.height, rowHeight.estimated);
53617 }
53618 rowNode.setRowTop(nextRowTop);
53619 rowNode.setRowIndex(i);
53620 nextRowTop += rowNode.rowHeight;
53621 }
53622 return displayedRowsMapped;
53623 };
53624 ClientSideRowModel.prototype.clearRowTopAndRowIndex = function (changedPath, displayedRowsMapped) {
53625 var changedPathActive = changedPath.isActive();
53626 var clearIfNotDisplayed = function (rowNode) {
53627 if (rowNode && rowNode.id != null && !displayedRowsMapped.has(rowNode.id)) {
53628 rowNode.clearRowTopAndRowIndex();
53629 }
53630 };
53631 var recurse = function (rowNode) {
53632 clearIfNotDisplayed(rowNode);
53633 clearIfNotDisplayed(rowNode.detailNode);
53634 clearIfNotDisplayed(rowNode.sibling);
53635 if (rowNode.hasChildren()) {
53636 if (rowNode.childrenAfterGroup) {
53637 // if a changedPath is active, it means we are here because of a transaction update or
53638 // a change detection. neither of these impacts the open/closed state of groups. so if
53639 // a group is not open this time, it was not open last time. so we know all closed groups
53640 // already have their top positions cleared. so there is no need to traverse all the way
53641 // when changedPath is active and the rowNode is not expanded.
53642 var isRootNode = rowNode.level == -1; // we need to give special consideration for root node,
53643 // as expanded=undefined for root node
53644 var skipChildren = changedPathActive && !isRootNode && !rowNode.expanded;
53645 if (!skipChildren) {
53646 rowNode.childrenAfterGroup.forEach(recurse);
53647 }
53648 }
53649 }
53650 };
53651 recurse(this.rootNode);
53652 };
53653 // returns false if row was moved, otherwise true
53654 ClientSideRowModel.prototype.ensureRowsAtPixel = function (rowNodes, pixel, increment) {
53655 var _this = this;
53656 if (increment === void 0) { increment = 0; }
53657 var indexAtPixelNow = this.getRowIndexAtPixel(pixel);
53658 var rowNodeAtPixelNow = this.getRow(indexAtPixelNow);
53659 var animate = !this.gridOptionsWrapper.isSuppressAnimationFrame();
53660 if (rowNodeAtPixelNow === rowNodes[0]) {
53661 return false;
53662 }
53663 rowNodes.forEach(function (rowNode) {
53664 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].removeFromArray(_this.rootNode.allLeafChildren, rowNode);
53665 });
53666 rowNodes.forEach(function (rowNode, idx) {
53667 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].insertIntoArray(_this.rootNode.allLeafChildren, rowNode, Math.max(indexAtPixelNow + increment, 0) + idx);
53668 });
53669 this.refreshModel({
53670 step: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].EVERYTHING,
53671 keepRenderedRows: true,
53672 keepEditingRows: true,
53673 animate: animate
53674 });
53675 return true;
53676 };
53677 ClientSideRowModel.prototype.highlightRowAtPixel = function (rowNode, pixel) {
53678 var indexAtPixelNow = pixel != null ? this.getRowIndexAtPixel(pixel) : null;
53679 var rowNodeAtPixelNow = indexAtPixelNow != null ? this.getRow(indexAtPixelNow) : null;
53680 if (!rowNodeAtPixelNow || !rowNode || rowNodeAtPixelNow === rowNode || pixel == null) {
53681 if (this.lastHighlightedRow) {
53682 this.lastHighlightedRow.setHighlighted(null);
53683 this.lastHighlightedRow = null;
53684 }
53685 return;
53686 }
53687 var highlight = this.getHighlightPosition(pixel, rowNodeAtPixelNow);
53688 if (this.lastHighlightedRow && this.lastHighlightedRow !== rowNodeAtPixelNow) {
53689 this.lastHighlightedRow.setHighlighted(null);
53690 this.lastHighlightedRow = null;
53691 }
53692 rowNodeAtPixelNow.setHighlighted(highlight);
53693 this.lastHighlightedRow = rowNodeAtPixelNow;
53694 };
53695 ClientSideRowModel.prototype.getHighlightPosition = function (pixel, rowNode) {
53696 if (!rowNode) {
53697 var index = this.getRowIndexAtPixel(pixel);
53698 rowNode = this.getRow(index || 0);
53699 if (!rowNode) {
53700 return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["RowHighlightPosition"].Below;
53701 }
53702 }
53703 var rowTop = rowNode.rowTop, rowHeight = rowNode.rowHeight;
53704 return pixel - rowTop < rowHeight / 2 ? _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["RowHighlightPosition"].Above : _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["RowHighlightPosition"].Below;
53705 };
53706 ClientSideRowModel.prototype.getLastHighlightedRowNode = function () {
53707 return this.lastHighlightedRow;
53708 };
53709 ClientSideRowModel.prototype.isLastRowIndexKnown = function () {
53710 return true;
53711 };
53712 ClientSideRowModel.prototype.getRowCount = function () {
53713 if (this.rowsToDisplay) {
53714 return this.rowsToDisplay.length;
53715 }
53716 return 0;
53717 };
53718 ClientSideRowModel.prototype.getTopLevelRowCount = function () {
53719 var showingRootNode = this.rowsToDisplay && this.rowsToDisplay[0] === this.rootNode;
53720 if (showingRootNode) {
53721 return 1;
53722 }
53723 var filteredChildren = this.rootNode.childrenAfterAggFilter;
53724 return filteredChildren ? filteredChildren.length : 0;
53725 };
53726 ClientSideRowModel.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {
53727 var showingRootNode = this.rowsToDisplay && this.rowsToDisplay[0] === this.rootNode;
53728 if (showingRootNode) {
53729 return topLevelIndex;
53730 }
53731 var rowNode = this.rootNode.childrenAfterSort[topLevelIndex];
53732 if (this.gridOptionsWrapper.isGroupHideOpenParents()) {
53733 // if hideOpenParents, and this row open, then this row is now displayed at this index, first child is
53734 while (rowNode.expanded && rowNode.childrenAfterSort && rowNode.childrenAfterSort.length > 0) {
53735 rowNode = rowNode.childrenAfterSort[0];
53736 }
53737 }
53738 return rowNode.rowIndex;
53739 };
53740 ClientSideRowModel.prototype.getRowBounds = function (index) {
53741 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].missing(this.rowsToDisplay)) {
53742 return null;
53743 }
53744 var rowNode = this.rowsToDisplay[index];
53745 if (rowNode) {
53746 return {
53747 rowTop: rowNode.rowTop,
53748 rowHeight: rowNode.rowHeight
53749 };
53750 }
53751 return null;
53752 };
53753 ClientSideRowModel.prototype.onRowGroupOpened = function () {
53754 var animate = this.gridOptionsWrapper.isAnimateRows();
53755 this.refreshModel({ step: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].MAP, keepRenderedRows: true, animate: animate });
53756 };
53757 ClientSideRowModel.prototype.onFilterChanged = function (event) {
53758 if (event.afterDataChange) {
53759 return;
53760 }
53761 var animate = this.gridOptionsWrapper.isAnimateRows();
53762 var primaryOrQuickFilterChanged = event.columns.length === 0 || event.columns.some(function (col) { return col.isPrimary(); });
53763 var step = primaryOrQuickFilterChanged ? _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].FILTER : _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].FILTER_AGGREGATES;
53764 this.refreshModel({ step: step, keepRenderedRows: true, animate: animate });
53765 };
53766 ClientSideRowModel.prototype.onSortChanged = function () {
53767 var animate = this.gridOptionsWrapper.isAnimateRows();
53768 this.refreshModel({ step: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].SORT, keepRenderedRows: true, animate: animate, keepEditingRows: true });
53769 };
53770 ClientSideRowModel.prototype.getType = function () {
53771 return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE;
53772 };
53773 ClientSideRowModel.prototype.onValueChanged = function () {
53774 if (this.columnModel.isPivotActive()) {
53775 this.refreshModel({ step: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].PIVOT });
53776 }
53777 else {
53778 this.refreshModel({ step: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].AGGREGATE });
53779 }
53780 };
53781 ClientSideRowModel.prototype.createChangePath = function (rowNodeTransactions) {
53782 // for updates, if the row is updated at all, then we re-calc all the values
53783 // in that row. we could compare each value to each old value, however if we
53784 // did this, we would be calling the valueService twice, once on the old value
53785 // and once on the new value. so it's less valueGetter calls if we just assume
53786 // each column is different. that way the changedPath is used so that only
53787 // the impacted parent rows are recalculated, parents who's children have
53788 // not changed are not impacted.
53789 var noTransactions = _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].missingOrEmpty(rowNodeTransactions);
53790 var changedPath = new _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ChangedPath"](false, this.rootNode);
53791 if (noTransactions || this.gridOptionsWrapper.isTreeData()) {
53792 changedPath.setInactive();
53793 }
53794 return changedPath;
53795 };
53796 ClientSideRowModel.prototype.isSuppressModelUpdateAfterUpdateTransaction = function (params) {
53797 if (!this.gridOptionsWrapper.isSuppressModelUpdateAfterUpdateTransaction()) {
53798 return false;
53799 }
53800 // return true if we are only doing update transactions
53801 if (params.rowNodeTransactions == null) {
53802 return false;
53803 }
53804 var transWithAddsOrDeletes = params.rowNodeTransactions.filter(function (tx) {
53805 return (tx.add != null && tx.add.length > 0) || (tx.remove != null && tx.remove.length > 0);
53806 });
53807 var transactionsContainUpdatesOnly = transWithAddsOrDeletes == null || transWithAddsOrDeletes.length == 0;
53808 return transactionsContainUpdatesOnly;
53809 };
53810 ClientSideRowModel.prototype.refreshModel = function (params) {
53811 if (this.isSuppressModelUpdateAfterUpdateTransaction(params)) {
53812 return;
53813 }
53814 // this goes through the pipeline of stages. what's in my head is similar
53815 // to the diagram on this page:
53816 // http://commons.apache.org/sandbox/commons-pipeline/pipeline_basics.html
53817 // however we want to keep the results of each stage, hence we manually call
53818 // each step rather than have them chain each other.
53819 // fallthrough in below switch is on purpose,
53820 // eg if STEP_FILTER, then all steps below this
53821 // step get done
53822 // let start: number;
53823 // console.log('======= start =======');
53824 var changedPath = this.createChangePath(params.rowNodeTransactions);
53825 switch (params.step) {
53826 case _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].EVERYTHING:
53827 this.doRowGrouping(params.groupState, params.rowNodeTransactions, params.rowNodeOrder, changedPath, !!params.afterColumnsChanged);
53828 case _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].FILTER:
53829 this.doFilter(changedPath);
53830 case _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].PIVOT:
53831 this.doPivot(changedPath);
53832 case _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].AGGREGATE: // depends on agg fields
53833 this.doAggregate(changedPath);
53834 case _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].FILTER_AGGREGATES:
53835 this.doFilterAggregates(changedPath);
53836 case _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].SORT:
53837 this.doSort(params.rowNodeTransactions, changedPath);
53838 case _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].MAP:
53839 this.doRowsToDisplay();
53840 }
53841 // set all row tops to null, then set row tops on all visible rows. if we don't
53842 // do this, then the algorithm below only sets row tops, old row tops from old rows
53843 // will still lie around
53844 var displayedNodesMapped = this.setRowTopAndRowIndex();
53845 this.clearRowTopAndRowIndex(changedPath, displayedNodesMapped);
53846 var event = {
53847 type: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_MODEL_UPDATED,
53848 api: this.gridApi,
53849 columnApi: this.columnApi,
53850 animate: params.animate,
53851 keepRenderedRows: params.keepRenderedRows,
53852 newData: params.newData,
53853 newPage: false
53854 };
53855 this.eventService.dispatchEvent(event);
53856 };
53857 ClientSideRowModel.prototype.isEmpty = function () {
53858 var rowsMissing = _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].missing(this.rootNode.allLeafChildren) || this.rootNode.allLeafChildren.length === 0;
53859 return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].missing(this.rootNode) || rowsMissing || !this.columnModel.isReady();
53860 };
53861 ClientSideRowModel.prototype.isRowsToRender = function () {
53862 return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].exists(this.rowsToDisplay) && this.rowsToDisplay.length > 0;
53863 };
53864 ClientSideRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {
53865 // if lastSelectedNode is missing, we start at the first row
53866 var firstRowHit = !lastInRange;
53867 var lastRowHit = false;
53868 var lastRow;
53869 var result = [];
53870 var groupsSelectChildren = this.gridOptionsWrapper.isGroupSelectsChildren();
53871 this.forEachNodeAfterFilterAndSort(function (rowNode) {
53872 var lookingForLastRow = firstRowHit && !lastRowHit;
53873 // check if we need to flip the select switch
53874 if (!firstRowHit) {
53875 if (rowNode === lastInRange || rowNode === firstInRange) {
53876 firstRowHit = true;
53877 }
53878 }
53879 var skipThisGroupNode = rowNode.group && groupsSelectChildren;
53880 if (!skipThisGroupNode) {
53881 var inRange = firstRowHit && !lastRowHit;
53882 var childOfLastRow = rowNode.isParentOfNode(lastRow);
53883 if (inRange || childOfLastRow) {
53884 result.push(rowNode);
53885 }
53886 }
53887 if (lookingForLastRow) {
53888 if (rowNode === lastInRange || rowNode === firstInRange) {
53889 lastRowHit = true;
53890 if (rowNode === lastInRange) {
53891 lastRow = lastInRange;
53892 }
53893 else {
53894 lastRow = firstInRange;
53895 }
53896 }
53897 }
53898 });
53899 return result;
53900 };
53901 ClientSideRowModel.prototype.setDatasource = function (datasource) {
53902 console.error('AG Grid: should never call setDatasource on clientSideRowController');
53903 };
53904 ClientSideRowModel.prototype.getTopLevelNodes = function () {
53905 return this.rootNode ? this.rootNode.childrenAfterGroup : null;
53906 };
53907 ClientSideRowModel.prototype.getRootNode = function () {
53908 return this.rootNode;
53909 };
53910 ClientSideRowModel.prototype.getRow = function (index) {
53911 return this.rowsToDisplay[index];
53912 };
53913 ClientSideRowModel.prototype.isRowPresent = function (rowNode) {
53914 return this.rowsToDisplay.indexOf(rowNode) >= 0;
53915 };
53916 ClientSideRowModel.prototype.getRowIndexAtPixel = function (pixelToMatch) {
53917 if (this.isEmpty()) {
53918 return -1;
53919 }
53920 // do binary search of tree
53921 // http://oli.me.uk/2013/06/08/searching-javascript-arrays-with-a-binary-search/
53922 var bottomPointer = 0;
53923 var topPointer = this.rowsToDisplay.length - 1;
53924 // quick check, if the pixel is out of bounds, then return last row
53925 if (pixelToMatch <= 0) {
53926 // if pixel is less than or equal zero, it's always the first row
53927 return 0;
53928 }
53929 var lastNode = _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].last(this.rowsToDisplay);
53930 if (lastNode.rowTop <= pixelToMatch) {
53931 return this.rowsToDisplay.length - 1;
53932 }
53933 while (true) {
53934 var midPointer = Math.floor((bottomPointer + topPointer) / 2);
53935 var currentRowNode = this.rowsToDisplay[midPointer];
53936 if (this.isRowInPixel(currentRowNode, pixelToMatch)) {
53937 return midPointer;
53938 }
53939 if (currentRowNode.rowTop < pixelToMatch) {
53940 bottomPointer = midPointer + 1;
53941 }
53942 else if (currentRowNode.rowTop > pixelToMatch) {
53943 topPointer = midPointer - 1;
53944 }
53945 }
53946 };
53947 ClientSideRowModel.prototype.isRowInPixel = function (rowNode, pixelToMatch) {
53948 var topPixel = rowNode.rowTop;
53949 var bottomPixel = rowNode.rowTop + rowNode.rowHeight;
53950 var pixelInRow = topPixel <= pixelToMatch && bottomPixel > pixelToMatch;
53951 return pixelInRow;
53952 };
53953 ClientSideRowModel.prototype.forEachLeafNode = function (callback) {
53954 if (this.rootNode.allLeafChildren) {
53955 this.rootNode.allLeafChildren.forEach(function (rowNode, index) { return callback(rowNode, index); });
53956 }
53957 };
53958 ClientSideRowModel.prototype.forEachNode = function (callback) {
53959 this.recursivelyWalkNodesAndCallback(this.rootNode.childrenAfterGroup, callback, RecursionType.Normal, 0);
53960 };
53961 ClientSideRowModel.prototype.forEachNodeAfterFilter = function (callback) {
53962 this.recursivelyWalkNodesAndCallback(this.rootNode.childrenAfterAggFilter, callback, RecursionType.AfterFilter, 0);
53963 };
53964 ClientSideRowModel.prototype.forEachNodeAfterFilterAndSort = function (callback) {
53965 this.recursivelyWalkNodesAndCallback(this.rootNode.childrenAfterSort, callback, RecursionType.AfterFilterAndSort, 0);
53966 };
53967 ClientSideRowModel.prototype.forEachPivotNode = function (callback) {
53968 this.recursivelyWalkNodesAndCallback([this.rootNode], callback, RecursionType.PivotNodes, 0);
53969 };
53970 // iterates through each item in memory, and calls the callback function
53971 // nodes - the rowNodes to traverse
53972 // callback - the user provided callback
53973 // recursion type - need this to know what child nodes to recurse, eg if looking at all nodes, or filtered notes etc
53974 // index - works similar to the index in forEach in javascript's array function
53975 ClientSideRowModel.prototype.recursivelyWalkNodesAndCallback = function (nodes, callback, recursionType, index) {
53976 if (!nodes) {
53977 return index;
53978 }
53979 for (var i = 0; i < nodes.length; i++) {
53980 var node = nodes[i];
53981 callback(node, index++);
53982 // go to the next level if it is a group
53983 if (node.hasChildren()) {
53984 // depending on the recursion type, we pick a difference set of children
53985 var nodeChildren = null;
53986 switch (recursionType) {
53987 case RecursionType.Normal:
53988 nodeChildren = node.childrenAfterGroup;
53989 break;
53990 case RecursionType.AfterFilter:
53991 nodeChildren = node.childrenAfterAggFilter;
53992 break;
53993 case RecursionType.AfterFilterAndSort:
53994 nodeChildren = node.childrenAfterSort;
53995 break;
53996 case RecursionType.PivotNodes:
53997 // for pivot, we don't go below leafGroup levels
53998 nodeChildren = !node.leafGroup ? node.childrenAfterSort : null;
53999 break;
54000 }
54001 if (nodeChildren) {
54002 index = this.recursivelyWalkNodesAndCallback(nodeChildren, callback, recursionType, index);
54003 }
54004 }
54005 }
54006 return index;
54007 };
54008 // it's possible to recompute the aggregate without doing the other parts
54009 // + gridApi.recomputeAggregates()
54010 ClientSideRowModel.prototype.doAggregate = function (changedPath) {
54011 if (this.aggregationStage) {
54012 this.aggregationStage.execute({ rowNode: this.rootNode, changedPath: changedPath });
54013 }
54014 };
54015 ClientSideRowModel.prototype.doFilterAggregates = function (changedPath) {
54016 if (this.filterAggregatesStage) {
54017 this.filterAggregatesStage.execute({ rowNode: this.rootNode, changedPath: changedPath });
54018 }
54019 else {
54020 // If filterAggregatesStage is undefined, then so is the grouping stage, so all children should be on the rootNode.
54021 this.rootNode.childrenAfterAggFilter = this.rootNode.childrenAfterFilter;
54022 }
54023 };
54024 // + gridApi.expandAll()
54025 // + gridApi.collapseAll()
54026 ClientSideRowModel.prototype.expandOrCollapseAll = function (expand) {
54027 var usingTreeData = this.gridOptionsWrapper.isTreeData();
54028 var usingPivotMode = this.columnModel.isPivotActive();
54029 var recursiveExpandOrCollapse = function (rowNodes) {
54030 if (!rowNodes) {
54031 return;
54032 }
54033 rowNodes.forEach(function (rowNode) {
54034 var actionRow = function () {
54035 rowNode.expanded = expand;
54036 recursiveExpandOrCollapse(rowNode.childrenAfterGroup);
54037 };
54038 if (usingTreeData) {
54039 var hasChildren = _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].exists(rowNode.childrenAfterGroup);
54040 if (hasChildren) {
54041 actionRow();
54042 }
54043 return;
54044 }
54045 if (usingPivotMode) {
54046 var notLeafGroup = !rowNode.leafGroup;
54047 if (notLeafGroup) {
54048 actionRow();
54049 }
54050 return;
54051 }
54052 var isRowGroup = rowNode.group;
54053 if (isRowGroup) {
54054 actionRow();
54055 }
54056 });
54057 };
54058 if (this.rootNode) {
54059 recursiveExpandOrCollapse(this.rootNode.childrenAfterGroup);
54060 }
54061 this.refreshModel({ step: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].MAP });
54062 var eventSource = expand ? 'expandAll' : 'collapseAll';
54063 var event = {
54064 api: this.gridApi,
54065 columnApi: this.columnApi,
54066 type: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_EXPAND_COLLAPSE_ALL,
54067 source: eventSource
54068 };
54069 this.eventService.dispatchEvent(event);
54070 };
54071 ClientSideRowModel.prototype.doSort = function (rowNodeTransactions, changedPath) {
54072 this.sortStage.execute({
54073 rowNode: this.rootNode,
54074 rowNodeTransactions: rowNodeTransactions,
54075 changedPath: changedPath
54076 });
54077 };
54078 ClientSideRowModel.prototype.doRowGrouping = function (groupState, rowNodeTransactions, rowNodeOrder, changedPath, afterColumnsChanged) {
54079 if (this.groupStage) {
54080 if (rowNodeTransactions) {
54081 this.groupStage.execute({
54082 rowNode: this.rootNode,
54083 rowNodeTransactions: rowNodeTransactions,
54084 rowNodeOrder: rowNodeOrder,
54085 changedPath: changedPath
54086 });
54087 }
54088 else {
54089 this.groupStage.execute({
54090 rowNode: this.rootNode,
54091 changedPath: changedPath,
54092 afterColumnsChanged: afterColumnsChanged
54093 });
54094 // set open/closed state on groups
54095 this.restoreGroupState(groupState);
54096 }
54097 if (this.gridOptionsWrapper.isGroupSelectsChildren()) {
54098 this.selectionService.updateGroupsFromChildrenSelections(changedPath);
54099 }
54100 }
54101 else {
54102 this.rootNode.childrenAfterGroup = this.rootNode.allLeafChildren;
54103 if (this.rootNode.sibling) {
54104 this.rootNode.sibling.childrenAfterGroup = this.rootNode.childrenAfterGroup;
54105 }
54106 this.rootNode.updateHasChildren();
54107 }
54108 };
54109 ClientSideRowModel.prototype.restoreGroupState = function (groupState) {
54110 if (!groupState) {
54111 return;
54112 }
54113 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].traverseNodesWithKey(this.rootNode.childrenAfterGroup, function (node, key) {
54114 // if the group was open last time, then open it this time. however
54115 // if was not open last time, then don't touch the group, so the 'groupDefaultExpanded'
54116 // setting will take effect.
54117 if (typeof groupState[key] === 'boolean') {
54118 node.expanded = groupState[key];
54119 }
54120 });
54121 };
54122 ClientSideRowModel.prototype.doFilter = function (changedPath) {
54123 this.filterStage.execute({ rowNode: this.rootNode, changedPath: changedPath });
54124 };
54125 ClientSideRowModel.prototype.doPivot = function (changedPath) {
54126 if (this.pivotStage) {
54127 this.pivotStage.execute({ rowNode: this.rootNode, changedPath: changedPath });
54128 }
54129 };
54130 ClientSideRowModel.prototype.getGroupState = function () {
54131 if (!this.rootNode.childrenAfterGroup || !this.gridOptionsWrapper.isRememberGroupStateWhenNewData()) {
54132 return null;
54133 }
54134 var result = {};
54135 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].traverseNodesWithKey(this.rootNode.childrenAfterGroup, function (node, key) { return result[key] = node.expanded; });
54136 return result;
54137 };
54138 ClientSideRowModel.prototype.getCopyOfNodesMap = function () {
54139 return this.nodeManager.getCopyOfNodesMap();
54140 };
54141 ClientSideRowModel.prototype.getRowNode = function (id) {
54142 // although id is typed a string, this could be called by the user, and they could have passed a number
54143 var idIsGroup = typeof id == 'string' && id.indexOf(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["RowNode"].ID_PREFIX_ROW_GROUP) == 0;
54144 if (idIsGroup) {
54145 // only one users complained about getRowNode not working for groups, after years of
54146 // this working for normal rows. so have done quick implementation. if users complain
54147 // about performance, then GroupStage should store / manage created groups in a map,
54148 // which is a chunk of work.
54149 var res_1 = undefined;
54150 this.forEachNode(function (node) {
54151 if (node.id === id) {
54152 res_1 = node;
54153 }
54154 });
54155 return res_1;
54156 }
54157 return this.nodeManager.getRowNode(id);
54158 };
54159 // rows: the rows to put into the model
54160 ClientSideRowModel.prototype.setRowData = function (rowData) {
54161 // no need to invalidate cache, as the cache is stored on the rowNode,
54162 // so new rowNodes means the cache is wiped anyway.
54163 // remember group state, so we can expand groups that should be expanded
54164 var groupState = this.getGroupState();
54165 this.nodeManager.setRowData(rowData);
54166 // - clears selection
54167 this.selectionService.reset();
54168 // - updates filters
54169 this.filterManager.onNewRowsLoaded('rowDataUpdated');
54170 // this event kicks off:
54171 // - shows 'no rows' overlay if needed
54172 var rowDataChangedEvent = {
54173 type: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_ROW_DATA_CHANGED,
54174 api: this.gridApi,
54175 columnApi: this.columnApi
54176 };
54177 this.eventService.dispatchEvent(rowDataChangedEvent);
54178 this.refreshModel({
54179 step: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].EVERYTHING,
54180 groupState: groupState,
54181 newData: true
54182 });
54183 };
54184 ClientSideRowModel.prototype.batchUpdateRowData = function (rowDataTransaction, callback) {
54185 var _this = this;
54186 if (this.applyAsyncTransactionsTimeout == null) {
54187 this.rowDataTransactionBatch = [];
54188 var waitMillis = this.gridOptionsWrapper.getAsyncTransactionWaitMillis();
54189 this.applyAsyncTransactionsTimeout = window.setTimeout(function () {
54190 _this.executeBatchUpdateRowData();
54191 }, waitMillis);
54192 }
54193 this.rowDataTransactionBatch.push({ rowDataTransaction: rowDataTransaction, callback: callback });
54194 };
54195 ClientSideRowModel.prototype.flushAsyncTransactions = function () {
54196 if (this.applyAsyncTransactionsTimeout != null) {
54197 clearTimeout(this.applyAsyncTransactionsTimeout);
54198 this.executeBatchUpdateRowData();
54199 }
54200 };
54201 ClientSideRowModel.prototype.executeBatchUpdateRowData = function () {
54202 var _this = this;
54203 this.valueCache.onDataChanged();
54204 var callbackFuncsBound = [];
54205 var rowNodeTrans = [];
54206 // The rowGroup stage uses rowNodeOrder if order was provided. if we didn't pass 'true' to
54207 // commonUpdateRowData, using addIndex would have no effect when grouping.
54208 var forceRowNodeOrder = false;
54209 if (this.rowDataTransactionBatch) {
54210 this.rowDataTransactionBatch.forEach(function (tranItem) {
54211 var rowNodeTran = _this.nodeManager.updateRowData(tranItem.rowDataTransaction, undefined);
54212 rowNodeTrans.push(rowNodeTran);
54213 if (tranItem.callback) {
54214 callbackFuncsBound.push(tranItem.callback.bind(null, rowNodeTran));
54215 }
54216 if (typeof tranItem.rowDataTransaction.addIndex === 'number') {
54217 forceRowNodeOrder = true;
54218 }
54219 });
54220 }
54221 this.commonUpdateRowData(rowNodeTrans, undefined, forceRowNodeOrder);
54222 // do callbacks in next VM turn so it's async
54223 if (callbackFuncsBound.length > 0) {
54224 window.setTimeout(function () {
54225 callbackFuncsBound.forEach(function (func) { return func(); });
54226 }, 0);
54227 }
54228 if (rowNodeTrans.length > 0) {
54229 var event_1 = {
54230 api: this.gridOptionsWrapper.getApi(),
54231 columnApi: this.gridOptionsWrapper.getColumnApi(),
54232 type: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_ASYNC_TRANSACTIONS_FLUSHED,
54233 results: rowNodeTrans
54234 };
54235 this.eventService.dispatchEvent(event_1);
54236 }
54237 this.rowDataTransactionBatch = null;
54238 this.applyAsyncTransactionsTimeout = undefined;
54239 };
54240 ClientSideRowModel.prototype.updateRowData = function (rowDataTran, rowNodeOrder) {
54241 this.valueCache.onDataChanged();
54242 var rowNodeTran = this.nodeManager.updateRowData(rowDataTran, rowNodeOrder);
54243 // if doing immutableData, addIndex is never present. however if doing standard transaction, and user
54244 // provided addIndex, then this is used in updateRowData. However if doing Enterprise, then the rowGroup
54245 // stage also uses the
54246 var forceRowNodeOrder = typeof rowDataTran.addIndex === 'number';
54247 this.commonUpdateRowData([rowNodeTran], rowNodeOrder, forceRowNodeOrder);
54248 return rowNodeTran;
54249 };
54250 ClientSideRowModel.prototype.createRowNodeOrder = function () {
54251 var suppressSortOrder = this.gridOptionsWrapper.isSuppressMaintainUnsortedOrder();
54252 if (suppressSortOrder) {
54253 return;
54254 }
54255 var orderMap = {};
54256 if (this.rootNode && this.rootNode.allLeafChildren) {
54257 for (var index = 0; index < this.rootNode.allLeafChildren.length; index++) {
54258 var node = this.rootNode.allLeafChildren[index];
54259 orderMap[node.id] = index;
54260 }
54261 }
54262 return orderMap;
54263 };
54264 // common to updateRowData and batchUpdateRowData
54265 ClientSideRowModel.prototype.commonUpdateRowData = function (rowNodeTrans, rowNodeOrder, forceRowNodeOrder) {
54266 var animate = !this.gridOptionsWrapper.isSuppressAnimationFrame();
54267 if (forceRowNodeOrder) {
54268 rowNodeOrder = this.createRowNodeOrder();
54269 }
54270 this.refreshModel({
54271 step: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].EVERYTHING,
54272 rowNodeTransactions: rowNodeTrans,
54273 rowNodeOrder: rowNodeOrder,
54274 keepRenderedRows: true,
54275 keepEditingRows: true,
54276 animate: animate
54277 });
54278 var event = {
54279 type: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_ROW_DATA_UPDATED,
54280 api: this.gridApi,
54281 columnApi: this.columnApi
54282 };
54283 this.eventService.dispatchEvent(event);
54284 };
54285 ClientSideRowModel.prototype.doRowsToDisplay = function () {
54286 this.rowsToDisplay = this.flattenStage.execute({ rowNode: this.rootNode });
54287 };
54288 ClientSideRowModel.prototype.onRowHeightChanged = function () {
54289 this.refreshModel({ step: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelSteps"].MAP, keepRenderedRows: true, keepEditingRows: true });
54290 };
54291 ClientSideRowModel.prototype.resetRowHeights = function () {
54292 var atLeastOne = false;
54293 this.forEachNode(function (rowNode) {
54294 rowNode.setRowHeight(rowNode.rowHeight, true);
54295 // we keep the height each row is at, however we set estimated=true rather than clear the height.
54296 // this means the grid will not reset the row heights back to defaults, rather it will re-calc
54297 // the height for each row as the row is displayed. otherwise the scroll will jump when heights are reset.
54298 var detailNode = rowNode.detailNode;
54299 if (detailNode) {
54300 detailNode.setRowHeight(detailNode.rowHeight, true);
54301 }
54302 atLeastOne = true;
54303 });
54304 if (atLeastOne) {
54305 this.onRowHeightChanged();
54306 }
54307 };
54308 __decorate([
54309 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
54310 ], ClientSideRowModel.prototype, "columnModel", void 0);
54311 __decorate([
54312 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('selectionService')
54313 ], ClientSideRowModel.prototype, "selectionService", void 0);
54314 __decorate([
54315 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('filterManager')
54316 ], ClientSideRowModel.prototype, "filterManager", void 0);
54317 __decorate([
54318 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('valueCache')
54319 ], ClientSideRowModel.prototype, "valueCache", void 0);
54320 __decorate([
54321 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
54322 ], ClientSideRowModel.prototype, "columnApi", void 0);
54323 __decorate([
54324 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
54325 ], ClientSideRowModel.prototype, "gridApi", void 0);
54326 __decorate([
54327 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('animationFrameService')
54328 ], ClientSideRowModel.prototype, "animationFrameService", void 0);
54329 __decorate([
54330 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('beans')
54331 ], ClientSideRowModel.prototype, "beans", void 0);
54332 __decorate([
54333 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('filterStage')
54334 ], ClientSideRowModel.prototype, "filterStage", void 0);
54335 __decorate([
54336 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('sortStage')
54337 ], ClientSideRowModel.prototype, "sortStage", void 0);
54338 __decorate([
54339 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('flattenStage')
54340 ], ClientSideRowModel.prototype, "flattenStage", void 0);
54341 __decorate([
54342 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Optional"])('groupStage')
54343 ], ClientSideRowModel.prototype, "groupStage", void 0);
54344 __decorate([
54345 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Optional"])('aggregationStage')
54346 ], ClientSideRowModel.prototype, "aggregationStage", void 0);
54347 __decorate([
54348 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Optional"])('pivotStage')
54349 ], ClientSideRowModel.prototype, "pivotStage", void 0);
54350 __decorate([
54351 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Optional"])('filterAggregatesStage')
54352 ], ClientSideRowModel.prototype, "filterAggregatesStage", void 0);
54353 __decorate([
54354 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
54355 ], ClientSideRowModel.prototype, "init", null);
54356 ClientSideRowModel = __decorate([
54357 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Bean"])('rowModel')
54358 ], ClientSideRowModel);
54359 return ClientSideRowModel;
54360}(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
54361
54362
54363
54364/***/ }),
54365/* 252 */
54366/***/ (function(module, __webpack_exports__, __webpack_require__) {
54367
54368"use strict";
54369__webpack_require__.r(__webpack_exports__);
54370/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ClientSideNodeManager", function() { return ClientSideNodeManager; });
54371/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
54372var __read = (undefined && undefined.__read) || function (o, n) {
54373 var m = typeof Symbol === "function" && o[Symbol.iterator];
54374 if (!m) return o;
54375 var i = m.call(o), r, ar = [], e;
54376 try {
54377 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
54378 }
54379 catch (error) { e = { error: error }; }
54380 finally {
54381 try {
54382 if (r && !r.done && (m = i["return"])) m.call(i);
54383 }
54384 finally { if (e) throw e.error; }
54385 }
54386 return ar;
54387};
54388var __spread = (undefined && undefined.__spread) || function () {
54389 for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
54390 return ar;
54391};
54392
54393var ClientSideNodeManager = /** @class */ (function () {
54394 function ClientSideNodeManager(rootNode, gridOptionsWrapper, eventService, columnModel, gridApi, columnApi, selectionService, beans) {
54395 this.nextId = 0;
54396 // when user is provide the id's, we also keep a map of ids to row nodes for convenience
54397 this.allNodesMap = {};
54398 this.rootNode = rootNode;
54399 this.gridOptionsWrapper = gridOptionsWrapper;
54400 this.eventService = eventService;
54401 this.columnModel = columnModel;
54402 this.gridApi = gridApi;
54403 this.columnApi = columnApi;
54404 this.beans = beans;
54405 this.selectionService = selectionService;
54406 this.rootNode.group = true;
54407 this.rootNode.level = -1;
54408 this.rootNode.id = ClientSideNodeManager.ROOT_NODE_ID;
54409 this.rootNode.allLeafChildren = [];
54410 this.rootNode.childrenAfterGroup = [];
54411 this.rootNode.childrenAfterSort = [];
54412 this.rootNode.childrenAfterAggFilter = [];
54413 this.rootNode.childrenAfterFilter = [];
54414 // if we make this class a bean, then can annotate postConstruct
54415 this.postConstruct();
54416 }
54417 // @PostConstruct - this is not a bean, so postConstruct called by constructor
54418 ClientSideNodeManager.prototype.postConstruct = function () {
54419 // func below doesn't have 'this' pointer, so need to pull out these bits
54420 this.suppressParentsInRowNodes = this.gridOptionsWrapper.isSuppressParentsInRowNodes();
54421 this.isRowMasterFunc = this.gridOptionsWrapper.getIsRowMasterFunc();
54422 this.doingTreeData = this.gridOptionsWrapper.isTreeData();
54423 this.doingMasterDetail = this.gridOptionsWrapper.isMasterDetail();
54424 };
54425 ClientSideNodeManager.prototype.getCopyOfNodesMap = function () {
54426 return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].cloneObject(this.allNodesMap);
54427 };
54428 ClientSideNodeManager.prototype.getRowNode = function (id) {
54429 return this.allNodesMap[id];
54430 };
54431 ClientSideNodeManager.prototype.setRowData = function (rowData) {
54432 var _this = this;
54433 if (typeof rowData === 'string') {
54434 console.warn('AG Grid: rowData must be an array, however you passed in a string. If you are loading JSON, make sure you convert the JSON string to JavaScript objects first');
54435 return;
54436 }
54437 var rootNode = this.rootNode;
54438 var sibling = this.rootNode.sibling;
54439 rootNode.childrenAfterFilter = null;
54440 rootNode.childrenAfterGroup = null;
54441 rootNode.childrenAfterAggFilter = null;
54442 rootNode.childrenAfterSort = null;
54443 rootNode.childrenMapped = null;
54444 rootNode.updateHasChildren();
54445 this.nextId = 0;
54446 this.allNodesMap = {};
54447 if (rowData) {
54448 // we use rootNode as the parent, however if using ag-grid-enterprise, the grouping stage
54449 // sets the parent node on each row (even if we are not grouping). so setting parent node
54450 // here is for benefit of ag-grid-community users
54451 rootNode.allLeafChildren = rowData.map(function (dataItem) { return _this.createNode(dataItem, _this.rootNode, ClientSideNodeManager.TOP_LEVEL); });
54452 }
54453 else {
54454 rootNode.allLeafChildren = [];
54455 rootNode.childrenAfterGroup = [];
54456 }
54457 if (sibling) {
54458 sibling.childrenAfterFilter = rootNode.childrenAfterFilter;
54459 sibling.childrenAfterGroup = rootNode.childrenAfterGroup;
54460 sibling.childrenAfterAggFilter = rootNode.childrenAfterAggFilter;
54461 sibling.childrenAfterSort = rootNode.childrenAfterSort;
54462 sibling.childrenMapped = rootNode.childrenMapped;
54463 sibling.allLeafChildren = rootNode.allLeafChildren;
54464 }
54465 };
54466 ClientSideNodeManager.prototype.updateRowData = function (rowDataTran, rowNodeOrder) {
54467 var rowNodeTransaction = {
54468 remove: [],
54469 update: [],
54470 add: []
54471 };
54472 var nodesToUnselect = [];
54473 this.executeRemove(rowDataTran, rowNodeTransaction, nodesToUnselect);
54474 this.executeUpdate(rowDataTran, rowNodeTransaction, nodesToUnselect);
54475 this.executeAdd(rowDataTran, rowNodeTransaction);
54476 this.updateSelection(nodesToUnselect);
54477 if (rowNodeOrder) {
54478 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].sortRowNodesByOrder(this.rootNode.allLeafChildren, rowNodeOrder);
54479 }
54480 return rowNodeTransaction;
54481 };
54482 ClientSideNodeManager.prototype.updateSelection = function (nodesToUnselect) {
54483 var selectionChanged = nodesToUnselect.length > 0;
54484 if (selectionChanged) {
54485 nodesToUnselect.forEach(function (rowNode) {
54486 rowNode.setSelected(false, false, true);
54487 });
54488 }
54489 // we do this regardless of nodes to unselect or not, as it's possible
54490 // a new node was inserted, so a parent that was previously selected (as all
54491 // children were selected) should not be tri-state (as new one unselected against
54492 // all other selected children).
54493 this.selectionService.updateGroupsFromChildrenSelections();
54494 if (selectionChanged) {
54495 var event_1 = {
54496 type: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_SELECTION_CHANGED,
54497 api: this.gridApi,
54498 columnApi: this.columnApi
54499 };
54500 this.eventService.dispatchEvent(event_1);
54501 }
54502 };
54503 ClientSideNodeManager.prototype.executeAdd = function (rowDataTran, rowNodeTransaction) {
54504 var _this = this;
54505 var add = rowDataTran.add, addIndex = rowDataTran.addIndex;
54506 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].missingOrEmpty(add)) {
54507 return;
54508 }
54509 // create new row nodes for each data item
54510 var newNodes = add.map(function (item) { return _this.createNode(item, _this.rootNode, ClientSideNodeManager.TOP_LEVEL); });
54511 // add new row nodes to the root nodes 'allLeafChildren'
54512 var useIndex = typeof addIndex === 'number' && addIndex >= 0;
54513 var nodesBeforeIndex;
54514 var nodesAfterIndex;
54515 if (useIndex) {
54516 // new rows are inserted in one go by concatenating them in between the existing rows at the desired index.
54517 // this is much faster than splicing them individually into 'allLeafChildren' when there are large inserts.
54518 // allLeafChildren can be out of order, so we loop over all the Nodes to find the correct index that
54519 // represents the position `addIndex` intended to be.
54520 var allLeafChildren_1 = this.rootNode.allLeafChildren;
54521 // if addIndex is 0, it should always be added at the start of the array
54522 // there is no need to verify the order of node by nodeIndex.
54523 var normalizedAddIndex = addIndex === 0 ? 0 : (allLeafChildren_1.reduce(function (prevIdx, currNode, currIdx) {
54524 var _a;
54525 var rowIndex = currNode.rowIndex;
54526 var prevValueAtIndex = (_a = allLeafChildren_1[prevIdx]) === null || _a === void 0 ? void 0 : _a.rowIndex;
54527 var shouldUpdateIndex = rowIndex != null && prevValueAtIndex != null && rowIndex < addIndex && rowIndex > prevValueAtIndex;
54528 return shouldUpdateIndex ? currIdx : prevIdx;
54529 }, 0) + 1);
54530 nodesBeforeIndex = allLeafChildren_1.slice(0, normalizedAddIndex);
54531 nodesAfterIndex = allLeafChildren_1.slice(normalizedAddIndex, allLeafChildren_1.length);
54532 }
54533 else {
54534 nodesBeforeIndex = this.rootNode.allLeafChildren;
54535 nodesAfterIndex = [];
54536 }
54537 this.rootNode.allLeafChildren = __spread(nodesBeforeIndex, newNodes, nodesAfterIndex);
54538 if (this.rootNode.sibling) {
54539 this.rootNode.sibling.allLeafChildren = this.rootNode.allLeafChildren;
54540 }
54541 // add new row nodes to the transaction add items
54542 rowNodeTransaction.add = newNodes;
54543 };
54544 ClientSideNodeManager.prototype.executeRemove = function (rowDataTran, rowNodeTransaction, nodesToUnselect) {
54545 var _this = this;
54546 var remove = rowDataTran.remove;
54547 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].missingOrEmpty(remove)) {
54548 return;
54549 }
54550 var rowIdsRemoved = {};
54551 remove.forEach(function (item) {
54552 var rowNode = _this.lookupRowNode(item);
54553 if (!rowNode) {
54554 return;
54555 }
54556 // do delete - setting 'suppressFinishActions = true' to ensure EVENT_SELECTION_CHANGED is not raised for
54557 // each row node updated, instead it is raised once by the calling code if any selected nodes exist.
54558 if (rowNode.isSelected()) {
54559 nodesToUnselect.push(rowNode);
54560 }
54561 // so row renderer knows to fade row out (and not reposition it)
54562 rowNode.clearRowTopAndRowIndex();
54563 // NOTE: were we could remove from allLeaveChildren, however _.removeFromArray() is expensive, especially
54564 // if called multiple times (eg deleting lots of rows) and if allLeafChildren is a large list
54565 rowIdsRemoved[rowNode.id] = true;
54566 // _.removeFromArray(this.rootNode.allLeafChildren, rowNode);
54567 delete _this.allNodesMap[rowNode.id];
54568 rowNodeTransaction.remove.push(rowNode);
54569 });
54570 this.rootNode.allLeafChildren = this.rootNode.allLeafChildren.filter(function (rowNode) { return !rowIdsRemoved[rowNode.id]; });
54571 if (this.rootNode.sibling) {
54572 this.rootNode.sibling.allLeafChildren = this.rootNode.allLeafChildren;
54573 }
54574 };
54575 ClientSideNodeManager.prototype.executeUpdate = function (rowDataTran, rowNodeTransaction, nodesToUnselect) {
54576 var _this = this;
54577 var update = rowDataTran.update;
54578 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].missingOrEmpty(update)) {
54579 return;
54580 }
54581 update.forEach(function (item) {
54582 var rowNode = _this.lookupRowNode(item);
54583 if (!rowNode) {
54584 return;
54585 }
54586 rowNode.updateData(item);
54587 if (!rowNode.selectable && rowNode.isSelected()) {
54588 nodesToUnselect.push(rowNode);
54589 }
54590 _this.setMasterForRow(rowNode, item, ClientSideNodeManager.TOP_LEVEL, false);
54591 rowNodeTransaction.update.push(rowNode);
54592 });
54593 };
54594 ClientSideNodeManager.prototype.lookupRowNode = function (data) {
54595 var getRowIdFunc = this.gridOptionsWrapper.getRowIdFunc();
54596 var rowNode;
54597 if (getRowIdFunc) {
54598 // find rowNode using id
54599 var id = getRowIdFunc({ data: data, level: 0 });
54600 rowNode = this.allNodesMap[id];
54601 if (!rowNode) {
54602 console.error("AG Grid: could not find row id=" + id + ", data item was not found for this id");
54603 return null;
54604 }
54605 }
54606 else {
54607 // find rowNode using object references
54608 rowNode = this.rootNode.allLeafChildren.find(function (node) { return node.data === data; });
54609 if (!rowNode) {
54610 console.error("AG Grid: could not find data item as object was not found", data);
54611 console.error("Consider using getRowId to help the Grid find matching row data");
54612 return null;
54613 }
54614 }
54615 return rowNode || null;
54616 };
54617 ClientSideNodeManager.prototype.createNode = function (dataItem, parent, level) {
54618 var node = new _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["RowNode"](this.beans);
54619 node.group = false;
54620 this.setMasterForRow(node, dataItem, level, true);
54621 if (parent && !this.suppressParentsInRowNodes) {
54622 node.parent = parent;
54623 }
54624 node.level = level;
54625 node.setDataAndId(dataItem, this.nextId.toString());
54626 if (this.allNodesMap[node.id]) {
54627 console.warn("AG Grid: duplicate node id '" + node.id + "' detected from getRowId callback, this could cause issues in your grid.");
54628 }
54629 this.allNodesMap[node.id] = node;
54630 this.nextId++;
54631 return node;
54632 };
54633 ClientSideNodeManager.prototype.setMasterForRow = function (rowNode, data, level, setExpanded) {
54634 if (this.doingTreeData) {
54635 rowNode.setMaster(false);
54636 if (setExpanded) {
54637 rowNode.expanded = false;
54638 }
54639 }
54640 else {
54641 // this is the default, for when doing grid data
54642 if (this.doingMasterDetail) {
54643 // if we are doing master detail, then the
54644 // default is that everything can be a Master Row.
54645 if (this.isRowMasterFunc) {
54646 rowNode.setMaster(this.isRowMasterFunc(data));
54647 }
54648 else {
54649 rowNode.setMaster(true);
54650 }
54651 }
54652 else {
54653 rowNode.setMaster(false);
54654 }
54655 if (setExpanded) {
54656 var rowGroupColumns = this.columnModel.getRowGroupColumns();
54657 var numRowGroupColumns = rowGroupColumns ? rowGroupColumns.length : 0;
54658 // need to take row group into account when determining level
54659 var masterRowLevel = level + numRowGroupColumns;
54660 rowNode.expanded = rowNode.master ? this.isExpanded(masterRowLevel) : false;
54661 }
54662 }
54663 };
54664 ClientSideNodeManager.prototype.isExpanded = function (level) {
54665 var expandByDefault = this.gridOptionsWrapper.getGroupDefaultExpanded();
54666 if (expandByDefault === -1) {
54667 return true;
54668 }
54669 return level < expandByDefault;
54670 };
54671 ClientSideNodeManager.TOP_LEVEL = 0;
54672 ClientSideNodeManager.ROOT_NODE_ID = 'ROOT_NODE_ID';
54673 return ClientSideNodeManager;
54674}());
54675
54676
54677
54678/***/ }),
54679/* 253 */
54680/***/ (function(module, __webpack_exports__, __webpack_require__) {
54681
54682"use strict";
54683__webpack_require__.r(__webpack_exports__);
54684/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FilterStage", function() { return FilterStage; });
54685/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
54686var __extends = (undefined && undefined.__extends) || (function () {
54687 var extendStatics = function (d, b) {
54688 extendStatics = Object.setPrototypeOf ||
54689 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
54690 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
54691 return extendStatics(d, b);
54692 };
54693 return function (d, b) {
54694 extendStatics(d, b);
54695 function __() { this.constructor = d; }
54696 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
54697 };
54698})();
54699var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
54700 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
54701 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
54702 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
54703 return c > 3 && r && Object.defineProperty(target, key, r), r;
54704};
54705
54706var FilterStage = /** @class */ (function (_super) {
54707 __extends(FilterStage, _super);
54708 function FilterStage() {
54709 return _super !== null && _super.apply(this, arguments) || this;
54710 }
54711 FilterStage.prototype.execute = function (params) {
54712 var changedPath = params.changedPath;
54713 this.filterService.filter(changedPath);
54714 };
54715 __decorate([
54716 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('filterService')
54717 ], FilterStage.prototype, "filterService", void 0);
54718 FilterStage = __decorate([
54719 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Bean"])('filterStage')
54720 ], FilterStage);
54721 return FilterStage;
54722}(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
54723
54724
54725
54726/***/ }),
54727/* 254 */
54728/***/ (function(module, __webpack_exports__, __webpack_require__) {
54729
54730"use strict";
54731__webpack_require__.r(__webpack_exports__);
54732/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SortStage", function() { return SortStage; });
54733/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
54734var __extends = (undefined && undefined.__extends) || (function () {
54735 var extendStatics = function (d, b) {
54736 extendStatics = Object.setPrototypeOf ||
54737 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
54738 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
54739 return extendStatics(d, b);
54740 };
54741 return function (d, b) {
54742 extendStatics(d, b);
54743 function __() { this.constructor = d; }
54744 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
54745 };
54746})();
54747var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
54748 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
54749 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
54750 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
54751 return c > 3 && r && Object.defineProperty(target, key, r), r;
54752};
54753
54754var SortStage = /** @class */ (function (_super) {
54755 __extends(SortStage, _super);
54756 function SortStage() {
54757 return _super !== null && _super.apply(this, arguments) || this;
54758 }
54759 SortStage.prototype.execute = function (params) {
54760 var sortOptions = this.sortController.getSortOptions();
54761 var sortActive = _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].exists(sortOptions) && sortOptions.length > 0;
54762 var deltaSort = sortActive
54763 && _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].exists(params.rowNodeTransactions)
54764 // in time we can remove this check, so that delta sort is always
54765 // on if transactions are present. it's off for now so that we can
54766 // selectively turn it on and test it with some select users before
54767 // rolling out to everyone.
54768 && this.gridOptionsWrapper.isDeltaSort();
54769 var sortContainsGroupColumns = sortOptions.some(function (opt) { return !!opt.column.getColDef().showRowGroup; });
54770 this.sortService.sort(sortOptions, sortActive, deltaSort, params.rowNodeTransactions, params.changedPath, sortContainsGroupColumns);
54771 };
54772 __decorate([
54773 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('sortService')
54774 ], SortStage.prototype, "sortService", void 0);
54775 __decorate([
54776 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('sortController')
54777 ], SortStage.prototype, "sortController", void 0);
54778 __decorate([
54779 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
54780 ], SortStage.prototype, "columnModel", void 0);
54781 SortStage = __decorate([
54782 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Bean"])('sortStage')
54783 ], SortStage);
54784 return SortStage;
54785}(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
54786
54787
54788
54789/***/ }),
54790/* 255 */
54791/***/ (function(module, __webpack_exports__, __webpack_require__) {
54792
54793"use strict";
54794__webpack_require__.r(__webpack_exports__);
54795/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FlattenStage", function() { return FlattenStage; });
54796/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
54797var __extends = (undefined && undefined.__extends) || (function () {
54798 var extendStatics = function (d, b) {
54799 extendStatics = Object.setPrototypeOf ||
54800 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
54801 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
54802 return extendStatics(d, b);
54803 };
54804 return function (d, b) {
54805 extendStatics(d, b);
54806 function __() { this.constructor = d; }
54807 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
54808 };
54809})();
54810var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
54811 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
54812 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
54813 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
54814 return c > 3 && r && Object.defineProperty(target, key, r), r;
54815};
54816
54817var FlattenStage = /** @class */ (function (_super) {
54818 __extends(FlattenStage, _super);
54819 function FlattenStage() {
54820 return _super !== null && _super.apply(this, arguments) || this;
54821 }
54822 FlattenStage.prototype.execute = function (params) {
54823 var rootNode = params.rowNode;
54824 // even if not doing grouping, we do the mapping, as the client might
54825 // of passed in data that already has a grouping in it somewhere
54826 var result = [];
54827 // putting value into a wrapper so it's passed by reference
54828 var nextRowTop = { value: 0 };
54829 var skipLeafNodes = this.columnModel.isPivotMode();
54830 // if we are reducing, and not grouping, then we want to show the root node, as that
54831 // is where the pivot values are
54832 var showRootNode = skipLeafNodes && rootNode.leafGroup;
54833 var topList = showRootNode ? [rootNode] : rootNode.childrenAfterSort;
54834 this.recursivelyAddToRowsToDisplay(topList, result, nextRowTop, skipLeafNodes, 0);
54835 // we do not want the footer total if the gris is empty
54836 var atLeastOneRowPresent = result.length > 0;
54837 var includeGroupTotalFooter = !showRootNode
54838 // don't show total footer when showRootNode is true (i.e. in pivot mode and no groups)
54839 && atLeastOneRowPresent
54840 && this.gridOptionsWrapper.isGroupIncludeTotalFooter();
54841 if (includeGroupTotalFooter) {
54842 this.ensureFooterNodeExists(rootNode);
54843 this.addRowNodeToRowsToDisplay(rootNode.sibling, result, nextRowTop, 0);
54844 }
54845 return result;
54846 };
54847 FlattenStage.prototype.recursivelyAddToRowsToDisplay = function (rowsToFlatten, result, nextRowTop, skipLeafNodes, uiLevel) {
54848 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].missingOrEmpty(rowsToFlatten)) {
54849 return;
54850 }
54851 var hideOpenParents = this.gridOptionsWrapper.isGroupHideOpenParents();
54852 // these two are mutually exclusive, so if first set, we don't set the second
54853 var groupRemoveSingleChildren = this.gridOptionsWrapper.isGroupRemoveSingleChildren();
54854 var groupRemoveLowestSingleChildren = !groupRemoveSingleChildren && this.gridOptionsWrapper.isGroupRemoveLowestSingleChildren();
54855 for (var i = 0; i < rowsToFlatten.length; i++) {
54856 var rowNode = rowsToFlatten[i];
54857 // check all these cases, for working out if this row should be included in the final mapped list
54858 var isParent = rowNode.hasChildren();
54859 var isSkippedLeafNode = skipLeafNodes && !isParent;
54860 var isRemovedSingleChildrenGroup = groupRemoveSingleChildren &&
54861 isParent &&
54862 rowNode.childrenAfterGroup.length === 1;
54863 var isRemovedLowestSingleChildrenGroup = groupRemoveLowestSingleChildren &&
54864 isParent &&
54865 rowNode.leafGroup &&
54866 rowNode.childrenAfterGroup.length === 1;
54867 // hide open parents means when group is open, we don't show it. we also need to make sure the
54868 // group is expandable in the first place (as leaf groups are not expandable if pivot mode is on).
54869 // the UI will never allow expanding leaf groups, however the user might via the API (or menu option 'expand all')
54870 var neverAllowToExpand = skipLeafNodes && rowNode.leafGroup;
54871 var isHiddenOpenParent = hideOpenParents && rowNode.expanded && !rowNode.master && (!neverAllowToExpand);
54872 var thisRowShouldBeRendered = !isSkippedLeafNode && !isHiddenOpenParent &&
54873 !isRemovedSingleChildrenGroup && !isRemovedLowestSingleChildrenGroup;
54874 if (thisRowShouldBeRendered) {
54875 this.addRowNodeToRowsToDisplay(rowNode, result, nextRowTop, uiLevel);
54876 }
54877 // if we are pivoting, we never map below the leaf group
54878 if (skipLeafNodes && rowNode.leafGroup) {
54879 continue;
54880 }
54881 if (isParent) {
54882 var excludedParent = isRemovedSingleChildrenGroup || isRemovedLowestSingleChildrenGroup;
54883 // we traverse the group if it is expended, however we always traverse if the parent node
54884 // was removed (as the group will never be opened if it is not displayed, we show the children instead)
54885 if (rowNode.expanded || excludedParent) {
54886 // if the parent was excluded, then ui level is that of the parent
54887 var uiLevelForChildren = excludedParent ? uiLevel : uiLevel + 1;
54888 this.recursivelyAddToRowsToDisplay(rowNode.childrenAfterSort, result, nextRowTop, skipLeafNodes, uiLevelForChildren);
54889 // put a footer in if user is looking for it
54890 if (this.gridOptionsWrapper.isGroupIncludeFooter()) {
54891 this.ensureFooterNodeExists(rowNode);
54892 this.addRowNodeToRowsToDisplay(rowNode.sibling, result, nextRowTop, uiLevel);
54893 }
54894 }
54895 }
54896 else if (rowNode.master && rowNode.expanded) {
54897 var detailNode = this.createDetailNode(rowNode);
54898 this.addRowNodeToRowsToDisplay(detailNode, result, nextRowTop, uiLevel);
54899 }
54900 }
54901 };
54902 // duplicated method, it's also in floatingRowModel
54903 FlattenStage.prototype.addRowNodeToRowsToDisplay = function (rowNode, result, nextRowTop, uiLevel) {
54904 var isGroupMultiAutoColumn = this.gridOptionsWrapper.isGroupMultiAutoColumn();
54905 result.push(rowNode);
54906 rowNode.setUiLevel(isGroupMultiAutoColumn ? 0 : uiLevel);
54907 };
54908 FlattenStage.prototype.ensureFooterNodeExists = function (groupNode) {
54909 // only create footer node once, otherwise we have daemons and
54910 // the animate screws up with the daemons hanging around
54911 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].exists(groupNode.sibling)) {
54912 return;
54913 }
54914 var footerNode = new _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["RowNode"](this.beans);
54915 Object.keys(groupNode).forEach(function (key) {
54916 footerNode[key] = groupNode[key];
54917 });
54918 footerNode.footer = true;
54919 footerNode.setRowTop(null);
54920 footerNode.setRowIndex(null);
54921 // manually set oldRowTop to null so we discard any
54922 // previous information about its position.
54923 footerNode.oldRowTop = null;
54924 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].exists(footerNode.id)) {
54925 footerNode.id = 'rowGroupFooter_' + footerNode.id;
54926 }
54927 // get both header and footer to reference each other as siblings. this is never undone,
54928 // only overwritten. so if a group is expanded, then contracted, it will have a ghost
54929 // sibling - but that's fine, as we can ignore this if the header is contracted.
54930 footerNode.sibling = groupNode;
54931 groupNode.sibling = footerNode;
54932 };
54933 FlattenStage.prototype.createDetailNode = function (masterNode) {
54934 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].exists(masterNode.detailNode)) {
54935 return masterNode.detailNode;
54936 }
54937 var detailNode = new _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["RowNode"](this.beans);
54938 detailNode.detail = true;
54939 detailNode.selectable = false;
54940 detailNode.parent = masterNode;
54941 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].exists(masterNode.id)) {
54942 detailNode.id = 'detail_' + masterNode.id;
54943 }
54944 detailNode.data = masterNode.data;
54945 detailNode.level = masterNode.level + 1;
54946 masterNode.detailNode = detailNode;
54947 return detailNode;
54948 };
54949 __decorate([
54950 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
54951 ], FlattenStage.prototype, "columnModel", void 0);
54952 __decorate([
54953 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('beans')
54954 ], FlattenStage.prototype, "beans", void 0);
54955 FlattenStage = __decorate([
54956 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Bean"])('flattenStage')
54957 ], FlattenStage);
54958 return FlattenStage;
54959}(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
54960
54961
54962
54963/***/ }),
54964/* 256 */
54965/***/ (function(module, __webpack_exports__, __webpack_require__) {
54966
54967"use strict";
54968__webpack_require__.r(__webpack_exports__);
54969/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SortService", function() { return SortService; });
54970/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
54971var __extends = (undefined && undefined.__extends) || (function () {
54972 var extendStatics = function (d, b) {
54973 extendStatics = Object.setPrototypeOf ||
54974 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
54975 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
54976 return extendStatics(d, b);
54977 };
54978 return function (d, b) {
54979 extendStatics(d, b);
54980 function __() { this.constructor = d; }
54981 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
54982 };
54983})();
54984var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
54985 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
54986 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
54987 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
54988 return c > 3 && r && Object.defineProperty(target, key, r), r;
54989};
54990
54991var SortService = /** @class */ (function (_super) {
54992 __extends(SortService, _super);
54993 function SortService() {
54994 return _super !== null && _super.apply(this, arguments) || this;
54995 }
54996 SortService.prototype.init = function () {
54997 this.postSortFunc = this.gridOptionsWrapper.getPostSortFunc();
54998 };
54999 SortService.prototype.sort = function (sortOptions, sortActive, useDeltaSort, rowNodeTransactions, changedPath, sortContainsGroupColumns) {
55000 var _this = this;
55001 var groupMaintainOrder = this.gridOptionsWrapper.isGroupMaintainOrder();
55002 var groupColumnsPresent = this.columnModel.getAllGridColumns().some(function (c) { return c.isRowGroupActive(); });
55003 var allDirtyNodes = {};
55004 if (useDeltaSort && rowNodeTransactions) {
55005 allDirtyNodes = this.calculateDirtyNodes(rowNodeTransactions);
55006 }
55007 var isPivotMode = this.columnModel.isPivotMode();
55008 var callback = function (rowNode) {
55009 // we clear out the 'pull down open parents' first, as the values mix up the sorting
55010 _this.pullDownGroupDataForHideOpenParents(rowNode.childrenAfterAggFilter, true);
55011 // It's pointless to sort rows which aren't being displayed. in pivot mode we don't need to sort the leaf group children.
55012 var skipSortingPivotLeafs = isPivotMode && rowNode.leafGroup;
55013 // Javascript sort is non deterministic when all the array items are equals, ie Comparator always returns 0,
55014 // so to ensure the array keeps its order, add an additional sorting condition manually, in this case we
55015 // are going to inspect the original array position. This is what sortedRowNodes is for.
55016 var skipSortingGroups = groupMaintainOrder && groupColumnsPresent && !rowNode.leafGroup && !sortContainsGroupColumns;
55017 if (!sortActive || skipSortingGroups || skipSortingPivotLeafs) {
55018 // when 'groupMaintainOrder' is enabled we skip sorting groups unless we are sorting on group columns
55019 var childrenToBeSorted = rowNode.childrenAfterAggFilter.slice(0);
55020 if (groupMaintainOrder && rowNode.childrenAfterSort) {
55021 var indexedOrders_1 = rowNode.childrenAfterSort.reduce(function (acc, row, idx) {
55022 acc[row.id] = idx;
55023 return acc;
55024 }, {});
55025 childrenToBeSorted.sort(function (row1, row2) { return (indexedOrders_1[row1.id] || 0) - (indexedOrders_1[row2.id] || 0); });
55026 }
55027 rowNode.childrenAfterSort = childrenToBeSorted;
55028 }
55029 else if (useDeltaSort) {
55030 rowNode.childrenAfterSort = _this.doDeltaSort(rowNode, allDirtyNodes, changedPath, sortOptions);
55031 }
55032 else {
55033 rowNode.childrenAfterSort = _this.rowNodeSorter.doFullSort(rowNode.childrenAfterAggFilter, sortOptions);
55034 }
55035 if (rowNode.sibling) {
55036 rowNode.sibling.childrenAfterSort = rowNode.childrenAfterSort;
55037 }
55038 _this.updateChildIndexes(rowNode);
55039 if (_this.postSortFunc) {
55040 var params = { nodes: rowNode.childrenAfterSort };
55041 _this.postSortFunc(params);
55042 }
55043 };
55044 if (changedPath) {
55045 changedPath.forEachChangedNodeDepthFirst(callback);
55046 }
55047 this.updateGroupDataForHideOpenParents(changedPath);
55048 };
55049 SortService.prototype.calculateDirtyNodes = function (rowNodeTransactions) {
55050 var dirtyNodes = {};
55051 var addNodesFunc = function (rowNodes) {
55052 if (rowNodes) {
55053 rowNodes.forEach(function (rowNode) { return dirtyNodes[rowNode.id] = true; });
55054 }
55055 };
55056 // all leaf level nodes in the transaction were impacted
55057 if (rowNodeTransactions) {
55058 rowNodeTransactions.forEach(function (tran) {
55059 addNodesFunc(tran.add);
55060 addNodesFunc(tran.update);
55061 addNodesFunc(tran.remove);
55062 });
55063 }
55064 return dirtyNodes;
55065 };
55066 SortService.prototype.doDeltaSort = function (rowNode, allTouchedNodes, changedPath, sortOptions) {
55067 var _this = this;
55068 var unsortedRows = rowNode.childrenAfterAggFilter;
55069 var oldSortedRows = rowNode.childrenAfterSort;
55070 if (!oldSortedRows) {
55071 return this.rowNodeSorter.doFullSort(unsortedRows, sortOptions);
55072 }
55073 var untouchedRowsMap = {};
55074 var touchedRows = [];
55075 unsortedRows.forEach(function (row) {
55076 if (allTouchedNodes[row.id] || !changedPath.canSkip(row)) {
55077 touchedRows.push(row);
55078 }
55079 else {
55080 untouchedRowsMap[row.id] = true;
55081 }
55082 });
55083 var sortedUntouchedRows = oldSortedRows.filter(function (child) { return untouchedRowsMap[child.id]; });
55084 var mapNodeToSortedNode = function (rowNode, pos) { return ({ currentPos: pos, rowNode: rowNode }); };
55085 var sortedChangedRows = touchedRows
55086 .map(mapNodeToSortedNode)
55087 .sort(function (a, b) { return _this.rowNodeSorter.compareRowNodes(sortOptions, a, b); });
55088 return this.mergeSortedArrays(sortOptions, sortedChangedRows, sortedUntouchedRows.map(mapNodeToSortedNode)).map(function (_a) {
55089 var rowNode = _a.rowNode;
55090 return rowNode;
55091 });
55092 };
55093 // Merge two sorted arrays into each other
55094 SortService.prototype.mergeSortedArrays = function (sortOptions, arr1, arr2) {
55095 var res = [];
55096 var i = 0;
55097 var j = 0;
55098 // Traverse both array, adding them in order
55099 while (i < arr1.length && j < arr2.length) {
55100 // Check if current element of first
55101 // array is smaller than current element
55102 // of second array. If yes, store first
55103 // array element and increment first array
55104 // index. Otherwise do same with second array
55105 var compareResult = this.rowNodeSorter.compareRowNodes(sortOptions, arr1[i], arr2[j]);
55106 if (compareResult < 0) {
55107 res.push(arr1[i++]);
55108 }
55109 else {
55110 res.push(arr2[j++]);
55111 }
55112 }
55113 // add remaining from arr1
55114 while (i < arr1.length) {
55115 res.push(arr1[i++]);
55116 }
55117 // add remaining from arr2
55118 while (j < arr2.length) {
55119 res.push(arr2[j++]);
55120 }
55121 return res;
55122 };
55123 SortService.prototype.updateChildIndexes = function (rowNode) {
55124 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].missing(rowNode.childrenAfterSort)) {
55125 return;
55126 }
55127 var listToSort = rowNode.childrenAfterSort;
55128 for (var i = 0; i < listToSort.length; i++) {
55129 var child = listToSort[i];
55130 var firstChild = i === 0;
55131 var lastChild = i === rowNode.childrenAfterSort.length - 1;
55132 child.setFirstChild(firstChild);
55133 child.setLastChild(lastChild);
55134 child.setChildIndex(i);
55135 }
55136 };
55137 SortService.prototype.updateGroupDataForHideOpenParents = function (changedPath) {
55138 var _this = this;
55139 if (!this.gridOptionsWrapper.isGroupHideOpenParents()) {
55140 return;
55141 }
55142 if (this.gridOptionsWrapper.isTreeData()) {
55143 var msg_1 = "AG Grid: The property hideOpenParents dose not work with Tree Data. This is because Tree Data has values at the group level, it doesn't make sense to hide them (as opposed to Row Grouping, which only has Aggregated Values at the group level).";
55144 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].doOnce(function () { return console.warn(msg_1); }, 'sortService.hideOpenParentsWithTreeData');
55145 return false;
55146 }
55147 // recurse breadth first over group nodes after sort to 'pull down' group data to child groups
55148 var callback = function (rowNode) {
55149 _this.pullDownGroupDataForHideOpenParents(rowNode.childrenAfterSort, false);
55150 rowNode.childrenAfterSort.forEach(function (child) {
55151 if (child.hasChildren()) {
55152 callback(child);
55153 }
55154 });
55155 };
55156 if (changedPath) {
55157 changedPath.executeFromRootNode(function (rowNode) { return callback(rowNode); });
55158 }
55159 };
55160 SortService.prototype.pullDownGroupDataForHideOpenParents = function (rowNodes, clearOperation) {
55161 var _this = this;
55162 if (!this.gridOptionsWrapper.isGroupHideOpenParents() || _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].missing(rowNodes)) {
55163 return;
55164 }
55165 rowNodes.forEach(function (childRowNode) {
55166 var groupDisplayCols = _this.columnModel.getGroupDisplayColumns();
55167 groupDisplayCols.forEach(function (groupDisplayCol) {
55168 var showRowGroup = groupDisplayCol.getColDef().showRowGroup;
55169 if (typeof showRowGroup !== 'string') {
55170 console.error('AG Grid: groupHideOpenParents only works when specifying specific columns for colDef.showRowGroup');
55171 return;
55172 }
55173 var displayingGroupKey = showRowGroup;
55174 var rowGroupColumn = _this.columnModel.getPrimaryColumn(displayingGroupKey);
55175 var thisRowNodeMatches = rowGroupColumn === childRowNode.rowGroupColumn;
55176 if (thisRowNodeMatches) {
55177 return;
55178 }
55179 if (clearOperation) {
55180 // if doing a clear operation, we clear down the value for every possible group column
55181 childRowNode.setGroupValue(groupDisplayCol.getId(), undefined);
55182 }
55183 else {
55184 // if doing a set operation, we set only where the pull down is to occur
55185 var parentToStealFrom = childRowNode.getFirstChildOfFirstChild(rowGroupColumn);
55186 if (parentToStealFrom) {
55187 childRowNode.setGroupValue(groupDisplayCol.getId(), parentToStealFrom.key);
55188 }
55189 }
55190 });
55191 });
55192 };
55193 __decorate([
55194 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
55195 ], SortService.prototype, "columnModel", void 0);
55196 __decorate([
55197 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowNodeSorter')
55198 ], SortService.prototype, "rowNodeSorter", void 0);
55199 __decorate([
55200 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
55201 ], SortService.prototype, "init", null);
55202 SortService = __decorate([
55203 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Bean"])('sortService')
55204 ], SortService);
55205 return SortService;
55206}(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
55207
55208
55209
55210/***/ }),
55211/* 257 */
55212/***/ (function(module, __webpack_exports__, __webpack_require__) {
55213
55214"use strict";
55215__webpack_require__.r(__webpack_exports__);
55216/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FilterService", function() { return FilterService; });
55217/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
55218var __extends = (undefined && undefined.__extends) || (function () {
55219 var extendStatics = function (d, b) {
55220 extendStatics = Object.setPrototypeOf ||
55221 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
55222 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
55223 return extendStatics(d, b);
55224 };
55225 return function (d, b) {
55226 extendStatics(d, b);
55227 function __() { this.constructor = d; }
55228 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
55229 };
55230})();
55231var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
55232 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
55233 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
55234 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
55235 return c > 3 && r && Object.defineProperty(target, key, r), r;
55236};
55237
55238var FilterService = /** @class */ (function (_super) {
55239 __extends(FilterService, _super);
55240 function FilterService() {
55241 return _super !== null && _super.apply(this, arguments) || this;
55242 }
55243 FilterService.prototype.filter = function (changedPath) {
55244 var filterActive = this.filterManager.isColumnFilterPresent()
55245 || this.filterManager.isQuickFilterPresent()
55246 || this.gridOptionsWrapper.isExternalFilterPresent();
55247 this.filterNodes(filterActive, changedPath);
55248 };
55249 FilterService.prototype.filterNodes = function (filterActive, changedPath) {
55250 var _this = this;
55251 var filterCallback = function (rowNode, includeChildNodes) {
55252 // recursively get all children that are groups to also filter
55253 if (rowNode.hasChildren()) {
55254 // result of filter for this node. when filtering tree data, includeChildNodes = true when parent passes
55255 if (filterActive && !includeChildNodes) {
55256 rowNode.childrenAfterFilter = rowNode.childrenAfterGroup.filter(function (childNode) {
55257 // a group is included in the result if it has any children of it's own.
55258 // by this stage, the child groups are already filtered
55259 var passBecauseChildren = childNode.childrenAfterFilter && childNode.childrenAfterFilter.length > 0;
55260 // both leaf level nodes and tree data nodes have data. these get added if
55261 // the data passes the filter
55262 var passBecauseDataPasses = childNode.data
55263 && _this.filterManager.doesRowPassFilter({ rowNode: childNode });
55264 // note - tree data nodes pass either if a) they pass themselves or b) any children of that node pass
55265 return passBecauseChildren || passBecauseDataPasses;
55266 });
55267 }
55268 else {
55269 // if not filtering, the result is the original list
55270 rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;
55271 }
55272 }
55273 else {
55274 rowNode.childrenAfterFilter = rowNode.childrenAfterGroup;
55275 }
55276 if (rowNode.sibling) {
55277 rowNode.sibling.childrenAfterFilter = rowNode.childrenAfterFilter;
55278 }
55279 };
55280 if (this.doingTreeDataFiltering()) {
55281 var treeDataDepthFirstFilter_1 = function (rowNode, alreadyFoundInParent) {
55282 // tree data filter traverses the hierarchy depth first and includes child nodes if parent passes
55283 // filter, and parent nodes will be include if any children exist.
55284 if (rowNode.childrenAfterGroup) {
55285 for (var i = 0; i < rowNode.childrenAfterGroup.length; i++) {
55286 var childNode = rowNode.childrenAfterGroup[i];
55287 // first check if current node passes filter before invoking child nodes
55288 var foundInParent = alreadyFoundInParent
55289 || _this.filterManager.doesRowPassFilter({ rowNode: childNode });
55290 if (childNode.childrenAfterGroup) {
55291 treeDataDepthFirstFilter_1(rowNode.childrenAfterGroup[i], foundInParent);
55292 }
55293 else {
55294 filterCallback(childNode, foundInParent);
55295 }
55296 }
55297 }
55298 filterCallback(rowNode, alreadyFoundInParent);
55299 };
55300 var treeDataFilterCallback = function (rowNode) { return treeDataDepthFirstFilter_1(rowNode, false); };
55301 changedPath.executeFromRootNode(treeDataFilterCallback);
55302 }
55303 else {
55304 var defaultFilterCallback = function (rowNode) { return filterCallback(rowNode, false); };
55305 changedPath.forEachChangedNodeDepthFirst(defaultFilterCallback, true);
55306 }
55307 };
55308 FilterService.prototype.doingTreeDataFiltering = function () {
55309 return this.gridOptionsWrapper.isTreeData() && !this.gridOptionsWrapper.isExcludeChildrenWhenTreeDataFiltering();
55310 };
55311 __decorate([
55312 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('filterManager')
55313 ], FilterService.prototype, "filterManager", void 0);
55314 FilterService = __decorate([
55315 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Bean"])("filterService")
55316 ], FilterService);
55317 return FilterService;
55318}(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
55319
55320
55321
55322/***/ }),
55323/* 258 */
55324/***/ (function(module, __webpack_exports__, __webpack_require__) {
55325
55326"use strict";
55327__webpack_require__.r(__webpack_exports__);
55328/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ImmutableService", function() { return ImmutableService; });
55329/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
55330var __extends = (undefined && undefined.__extends) || (function () {
55331 var extendStatics = function (d, b) {
55332 extendStatics = Object.setPrototypeOf ||
55333 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
55334 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
55335 return extendStatics(d, b);
55336 };
55337 return function (d, b) {
55338 extendStatics(d, b);
55339 function __() { this.constructor = d; }
55340 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
55341 };
55342})();
55343var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
55344 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
55345 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
55346 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
55347 return c > 3 && r && Object.defineProperty(target, key, r), r;
55348};
55349var __read = (undefined && undefined.__read) || function (o, n) {
55350 var m = typeof Symbol === "function" && o[Symbol.iterator];
55351 if (!m) return o;
55352 var i = m.call(o), r, ar = [], e;
55353 try {
55354 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
55355 }
55356 catch (error) { e = { error: error }; }
55357 finally {
55358 try {
55359 if (r && !r.done && (m = i["return"])) m.call(i);
55360 }
55361 finally { if (e) throw e.error; }
55362 }
55363 return ar;
55364};
55365
55366var ImmutableService = /** @class */ (function (_super) {
55367 __extends(ImmutableService, _super);
55368 function ImmutableService() {
55369 return _super !== null && _super.apply(this, arguments) || this;
55370 }
55371 ImmutableService.prototype.postConstruct = function () {
55372 if (this.rowModel.getType() === _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE) {
55373 this.clientSideRowModel = this.rowModel;
55374 }
55375 };
55376 ImmutableService.prototype.isActive = function () {
55377 return this.gridOptionsWrapper.isImmutableData();
55378 };
55379 ImmutableService.prototype.setRowData = function (rowData) {
55380 var transactionAndMap = this.createTransactionForRowData(rowData);
55381 if (!transactionAndMap) {
55382 return;
55383 }
55384 var _a = __read(transactionAndMap, 2), transaction = _a[0], orderIdMap = _a[1];
55385 var nodeTransaction = this.clientSideRowModel.updateRowData(transaction, orderIdMap);
55386 // need to force updating of full width rows - note this wouldn't be necessary the full width cell comp listened
55387 // to the data change event on the row node and refreshed itself.
55388 if (nodeTransaction) {
55389 this.rowRenderer.refreshFullWidthRows(nodeTransaction.update);
55390 }
55391 // - shows 'no rows' overlay if needed
55392 var rowDataChangedEvent = {
55393 type: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_ROW_DATA_CHANGED,
55394 api: this.gridApi,
55395 columnApi: this.columnApi
55396 };
55397 this.eventService.dispatchEvent(rowDataChangedEvent);
55398 };
55399 // converts the setRowData() command to a transaction
55400 ImmutableService.prototype.createTransactionForRowData = function (rowData) {
55401 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].missing(this.clientSideRowModel)) {
55402 console.error('AG Grid: ImmutableService only works with ClientSideRowModel');
55403 return;
55404 }
55405 var getRowIdFunc = this.gridOptionsWrapper.getRowIdFunc();
55406 if (getRowIdFunc == null) {
55407 console.error('AG Grid: ImmutableService requires getRowId() callback to be implemented, your row data needs IDs!');
55408 return;
55409 }
55410 // convert the data into a transaction object by working out adds, removes and updates
55411 var transaction = {
55412 remove: [],
55413 update: [],
55414 add: []
55415 };
55416 var existingNodesMap = this.clientSideRowModel.getCopyOfNodesMap();
55417 var suppressSortOrder = this.gridOptionsWrapper.isSuppressMaintainUnsortedOrder();
55418 var orderMap = suppressSortOrder ? undefined : {};
55419 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].exists(rowData)) {
55420 // split all the new data in the following:
55421 // if new, push to 'add'
55422 // if update, push to 'update'
55423 // if not changed, do not include in the transaction
55424 rowData.forEach(function (data, index) {
55425 var id = getRowIdFunc({ data: data, level: 0 });
55426 var existingNode = existingNodesMap[id];
55427 if (orderMap) {
55428 orderMap[id] = index;
55429 }
55430 if (existingNode) {
55431 var dataHasChanged = existingNode.data !== data;
55432 if (dataHasChanged) {
55433 transaction.update.push(data);
55434 }
55435 // otherwise, if data not changed, we just don't include it anywhere, as it's not a delta
55436 // remove from list, so we know the item is not to be removed
55437 existingNodesMap[id] = undefined;
55438 }
55439 else {
55440 transaction.add.push(data);
55441 }
55442 });
55443 }
55444 // at this point, all rows that are left, should be removed
55445 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].iterateObject(existingNodesMap, function (id, rowNode) {
55446 if (rowNode) {
55447 transaction.remove.push(rowNode.data);
55448 }
55449 });
55450 return [transaction, orderMap];
55451 };
55452 __decorate([
55453 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowModel')
55454 ], ImmutableService.prototype, "rowModel", void 0);
55455 __decorate([
55456 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowRenderer')
55457 ], ImmutableService.prototype, "rowRenderer", void 0);
55458 __decorate([
55459 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
55460 ], ImmutableService.prototype, "columnApi", void 0);
55461 __decorate([
55462 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
55463 ], ImmutableService.prototype, "gridApi", void 0);
55464 __decorate([
55465 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
55466 ], ImmutableService.prototype, "postConstruct", null);
55467 ImmutableService = __decorate([
55468 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Bean"])('immutableService')
55469 ], ImmutableService);
55470 return ImmutableService;
55471}(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
55472
55473
55474
55475/***/ }),
55476/* 259 */
55477/***/ (function(module, __webpack_exports__, __webpack_require__) {
55478
55479"use strict";
55480__webpack_require__.r(__webpack_exports__);
55481/* harmony import */ var _csvExport_baseCreator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(260);
55482/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BaseCreator", function() { return _csvExport_baseCreator__WEBPACK_IMPORTED_MODULE_0__["BaseCreator"]; });
55483
55484/* harmony import */ var _csvExport_sessions_baseGridSerializingSession__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(261);
55485/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BaseGridSerializingSession", function() { return _csvExport_sessions_baseGridSerializingSession__WEBPACK_IMPORTED_MODULE_1__["BaseGridSerializingSession"]; });
55486
55487/* harmony import */ var _csvExport_csvCreator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(262);
55488/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CsvCreator", function() { return _csvExport_csvCreator__WEBPACK_IMPORTED_MODULE_2__["CsvCreator"]; });
55489
55490/* harmony import */ var _csvExportModule__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(265);
55491/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CsvExportModule", function() { return _csvExportModule__WEBPACK_IMPORTED_MODULE_3__["CsvExportModule"]; });
55492
55493/* harmony import */ var _csvExport_downloader__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(263);
55494/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Downloader", function() { return _csvExport_downloader__WEBPACK_IMPORTED_MODULE_4__["Downloader"]; });
55495
55496/* harmony import */ var _csvExport_gridSerializer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(266);
55497/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridSerializer", function() { return _csvExport_gridSerializer__WEBPACK_IMPORTED_MODULE_5__["GridSerializer"]; });
55498
55499/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowType", function() { return _csvExport_gridSerializer__WEBPACK_IMPORTED_MODULE_5__["RowType"]; });
55500
55501/* harmony import */ var _csvExport_xmlFactory__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(267);
55502/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "XmlFactory", function() { return _csvExport_xmlFactory__WEBPACK_IMPORTED_MODULE_6__["XmlFactory"]; });
55503
55504/* harmony import */ var _csvExport_zipContainer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(268);
55505/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ZipContainer", function() { return _csvExport_zipContainer__WEBPACK_IMPORTED_MODULE_7__["ZipContainer"]; });
55506
55507
55508
55509
55510
55511
55512
55513
55514
55515
55516
55517/***/ }),
55518/* 260 */
55519/***/ (function(module, __webpack_exports__, __webpack_require__) {
55520
55521"use strict";
55522__webpack_require__.r(__webpack_exports__);
55523/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BaseCreator", function() { return BaseCreator; });
55524var BaseCreator = /** @class */ (function () {
55525 function BaseCreator() {
55526 }
55527 BaseCreator.prototype.setBeans = function (beans) {
55528 this.beans = beans;
55529 };
55530 BaseCreator.prototype.getFileName = function (fileName) {
55531 var extension = this.getDefaultFileExtension();
55532 if (fileName == null || !fileName.length) {
55533 fileName = this.getDefaultFileName();
55534 }
55535 return fileName.indexOf('.') === -1 ? fileName + "." + extension : fileName;
55536 };
55537 BaseCreator.prototype.getData = function (params) {
55538 var serializingSession = this.createSerializingSession(params);
55539 var data = this.beans.gridSerializer.serialize(serializingSession, params);
55540 return data;
55541 };
55542 return BaseCreator;
55543}());
55544
55545
55546
55547/***/ }),
55548/* 261 */
55549/***/ (function(module, __webpack_exports__, __webpack_require__) {
55550
55551"use strict";
55552__webpack_require__.r(__webpack_exports__);
55553/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BaseGridSerializingSession", function() { return BaseGridSerializingSession; });
55554var BaseGridSerializingSession = /** @class */ (function () {
55555 function BaseGridSerializingSession(config) {
55556 this.groupColumns = [];
55557 var columnModel = config.columnModel, valueService = config.valueService, gridOptionsWrapper = config.gridOptionsWrapper, processCellCallback = config.processCellCallback, processHeaderCallback = config.processHeaderCallback, processGroupHeaderCallback = config.processGroupHeaderCallback, processRowGroupCallback = config.processRowGroupCallback;
55558 this.columnModel = columnModel;
55559 this.valueService = valueService;
55560 this.gridOptionsWrapper = gridOptionsWrapper;
55561 this.processCellCallback = processCellCallback;
55562 this.processHeaderCallback = processHeaderCallback;
55563 this.processGroupHeaderCallback = processGroupHeaderCallback;
55564 this.processRowGroupCallback = processRowGroupCallback;
55565 }
55566 BaseGridSerializingSession.prototype.prepare = function (columnsToExport) {
55567 this.groupColumns = columnsToExport.filter(function (col) { return !!col.getColDef().showRowGroup; });
55568 };
55569 BaseGridSerializingSession.prototype.extractHeaderValue = function (column) {
55570 var value = this.getHeaderName(this.processHeaderCallback, column);
55571 return value != null ? value : '';
55572 };
55573 BaseGridSerializingSession.prototype.extractRowCellValue = function (column, index, accumulatedRowIndex, type, node) {
55574 // we render the group summary text e.g. "-> Parent -> Child"...
55575 var groupIndex = this.gridOptionsWrapper.isGroupMultiAutoColumn() ? node.rowGroupIndex : 0;
55576 var renderGroupSummaryCell =
55577 // on group rows
55578 node && node.group
55579 && (
55580 // in the group column if groups appear in regular grid cells
55581 index === groupIndex && this.groupColumns.indexOf(column) !== -1
55582 // or the first cell in the row, if we're doing full width rows
55583 || (index === 0 && this.gridOptionsWrapper.isGroupUseEntireRow(this.columnModel.isPivotMode())));
55584 var valueForCell;
55585 if (renderGroupSummaryCell) {
55586 valueForCell = this.createValueForGroupNode(node);
55587 }
55588 else {
55589 valueForCell = this.valueService.getValue(column, node);
55590 }
55591 var value = this.processCell(accumulatedRowIndex, node, column, valueForCell, this.processCellCallback, type);
55592 return value != null ? value : '';
55593 };
55594 BaseGridSerializingSession.prototype.getHeaderName = function (callback, column) {
55595 if (callback) {
55596 return callback({
55597 column: column,
55598 api: this.gridOptionsWrapper.getApi(),
55599 columnApi: this.gridOptionsWrapper.getColumnApi(),
55600 context: this.gridOptionsWrapper.getContext()
55601 });
55602 }
55603 return this.columnModel.getDisplayNameForColumn(column, 'csv', true);
55604 };
55605 BaseGridSerializingSession.prototype.createValueForGroupNode = function (node) {
55606 if (this.processRowGroupCallback) {
55607 return this.processRowGroupCallback({
55608 node: node,
55609 api: this.gridOptionsWrapper.getApi(),
55610 columnApi: this.gridOptionsWrapper.getColumnApi(),
55611 context: this.gridOptionsWrapper.getContext(),
55612 });
55613 }
55614 var keys = [node.key];
55615 if (!this.gridOptionsWrapper.isGroupMultiAutoColumn()) {
55616 while (node.parent) {
55617 node = node.parent;
55618 keys.push(node.key);
55619 }
55620 }
55621 return keys.reverse().join(' -> ');
55622 };
55623 BaseGridSerializingSession.prototype.processCell = function (accumulatedRowIndex, rowNode, column, value, processCellCallback, type) {
55624 if (processCellCallback) {
55625 return processCellCallback({
55626 accumulatedRowIndex: accumulatedRowIndex,
55627 column: column,
55628 node: rowNode,
55629 value: value,
55630 api: this.gridOptionsWrapper.getApi(),
55631 columnApi: this.gridOptionsWrapper.getColumnApi(),
55632 context: this.gridOptionsWrapper.getContext(),
55633 type: type
55634 });
55635 }
55636 return value != null ? value : '';
55637 };
55638 return BaseGridSerializingSession;
55639}());
55640
55641
55642
55643/***/ }),
55644/* 262 */
55645/***/ (function(module, __webpack_exports__, __webpack_require__) {
55646
55647"use strict";
55648__webpack_require__.r(__webpack_exports__);
55649/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CsvCreator", function() { return CsvCreator; });
55650/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
55651/* harmony import */ var _baseCreator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(260);
55652/* harmony import */ var _downloader__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(263);
55653/* harmony import */ var _sessions_csvSerializingSession__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(264);
55654var __extends = (undefined && undefined.__extends) || (function () {
55655 var extendStatics = function (d, b) {
55656 extendStatics = Object.setPrototypeOf ||
55657 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
55658 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
55659 return extendStatics(d, b);
55660 };
55661 return function (d, b) {
55662 extendStatics(d, b);
55663 function __() { this.constructor = d; }
55664 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
55665 };
55666})();
55667var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
55668 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
55669 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
55670 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
55671 return c > 3 && r && Object.defineProperty(target, key, r), r;
55672};
55673
55674
55675
55676
55677var CsvCreator = /** @class */ (function (_super) {
55678 __extends(CsvCreator, _super);
55679 function CsvCreator() {
55680 return _super !== null && _super.apply(this, arguments) || this;
55681 }
55682 CsvCreator.prototype.postConstruct = function () {
55683 this.setBeans({
55684 gridSerializer: this.gridSerializer,
55685 gridOptionsWrapper: this.gridOptionsWrapper
55686 });
55687 };
55688 CsvCreator.prototype.getMergedParams = function (params) {
55689 var baseParams = this.gridOptionsWrapper.getDefaultExportParams('csv');
55690 return Object.assign({}, baseParams, params);
55691 };
55692 CsvCreator.prototype.export = function (userParams) {
55693 if (this.isExportSuppressed()) {
55694 console.warn("AG Grid: Export cancelled. Export is not allowed as per your configuration.");
55695 return '';
55696 }
55697 var mergedParams = this.getMergedParams(userParams);
55698 var data = this.getData(mergedParams);
55699 var packagedFile = new Blob(["\ufeff", data], { type: 'text/plain' });
55700 _downloader__WEBPACK_IMPORTED_MODULE_2__["Downloader"].download(this.getFileName(mergedParams.fileName), packagedFile);
55701 return data;
55702 };
55703 CsvCreator.prototype.exportDataAsCsv = function (params) {
55704 return this.export(params);
55705 };
55706 CsvCreator.prototype.getDataAsCsv = function (params) {
55707 var mergedParams = this.getMergedParams(params);
55708 return this.getData(mergedParams);
55709 };
55710 CsvCreator.prototype.getDefaultFileName = function () {
55711 return 'export.csv';
55712 };
55713 CsvCreator.prototype.getDefaultFileExtension = function () {
55714 return 'csv';
55715 };
55716 CsvCreator.prototype.createSerializingSession = function (params) {
55717 var _a = this, columnModel = _a.columnModel, valueService = _a.valueService, gridOptionsWrapper = _a.gridOptionsWrapper;
55718 var _b = params, processCellCallback = _b.processCellCallback, processHeaderCallback = _b.processHeaderCallback, processGroupHeaderCallback = _b.processGroupHeaderCallback, processRowGroupCallback = _b.processRowGroupCallback, suppressQuotes = _b.suppressQuotes, columnSeparator = _b.columnSeparator;
55719 return new _sessions_csvSerializingSession__WEBPACK_IMPORTED_MODULE_3__["CsvSerializingSession"]({
55720 columnModel: columnModel,
55721 valueService: valueService,
55722 gridOptionsWrapper: gridOptionsWrapper,
55723 processCellCallback: processCellCallback || undefined,
55724 processHeaderCallback: processHeaderCallback || undefined,
55725 processGroupHeaderCallback: processGroupHeaderCallback || undefined,
55726 processRowGroupCallback: processRowGroupCallback || undefined,
55727 suppressQuotes: suppressQuotes || false,
55728 columnSeparator: columnSeparator || ','
55729 });
55730 };
55731 CsvCreator.prototype.isExportSuppressed = function () {
55732 return this.gridOptionsWrapper.isSuppressCsvExport();
55733 };
55734 __decorate([
55735 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
55736 ], CsvCreator.prototype, "columnModel", void 0);
55737 __decorate([
55738 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('valueService')
55739 ], CsvCreator.prototype, "valueService", void 0);
55740 __decorate([
55741 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridSerializer')
55742 ], CsvCreator.prototype, "gridSerializer", void 0);
55743 __decorate([
55744 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridOptionsWrapper')
55745 ], CsvCreator.prototype, "gridOptionsWrapper", void 0);
55746 __decorate([
55747 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
55748 ], CsvCreator.prototype, "postConstruct", null);
55749 CsvCreator = __decorate([
55750 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Bean"])('csvCreator')
55751 ], CsvCreator);
55752 return CsvCreator;
55753}(_baseCreator__WEBPACK_IMPORTED_MODULE_1__["BaseCreator"]));
55754
55755
55756
55757/***/ }),
55758/* 263 */
55759/***/ (function(module, __webpack_exports__, __webpack_require__) {
55760
55761"use strict";
55762__webpack_require__.r(__webpack_exports__);
55763/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Downloader", function() { return Downloader; });
55764var Downloader = /** @class */ (function () {
55765 function Downloader() {
55766 }
55767 Downloader.download = function (fileName, content) {
55768 var win = document.defaultView || window;
55769 if (!win) {
55770 console.warn('AG Grid: There is no `window` associated with the current `document`');
55771 return;
55772 }
55773 var element = document.createElement('a');
55774 // @ts-ignore
55775 var url = win.URL.createObjectURL(content);
55776 element.setAttribute('href', url);
55777 element.setAttribute('download', fileName);
55778 element.style.display = 'none';
55779 document.body.appendChild(element);
55780 element.dispatchEvent(new MouseEvent('click', {
55781 bubbles: false,
55782 cancelable: true,
55783 view: win
55784 }));
55785 document.body.removeChild(element);
55786 win.setTimeout(function () {
55787 // @ts-ignore
55788 win.URL.revokeObjectURL(url);
55789 }, 0);
55790 };
55791 return Downloader;
55792}());
55793
55794
55795
55796/***/ }),
55797/* 264 */
55798/***/ (function(module, __webpack_exports__, __webpack_require__) {
55799
55800"use strict";
55801__webpack_require__.r(__webpack_exports__);
55802/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CsvSerializingSession", function() { return CsvSerializingSession; });
55803/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
55804/* harmony import */ var _baseGridSerializingSession__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(261);
55805var __extends = (undefined && undefined.__extends) || (function () {
55806 var extendStatics = function (d, b) {
55807 extendStatics = Object.setPrototypeOf ||
55808 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
55809 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
55810 return extendStatics(d, b);
55811 };
55812 return function (d, b) {
55813 extendStatics(d, b);
55814 function __() { this.constructor = d; }
55815 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
55816 };
55817})();
55818
55819
55820var LINE_SEPARATOR = '\r\n';
55821var CsvSerializingSession = /** @class */ (function (_super) {
55822 __extends(CsvSerializingSession, _super);
55823 function CsvSerializingSession(config) {
55824 var _this = _super.call(this, config) || this;
55825 _this.isFirstLine = true;
55826 _this.result = '';
55827 var suppressQuotes = config.suppressQuotes, columnSeparator = config.columnSeparator;
55828 _this.suppressQuotes = suppressQuotes;
55829 _this.columnSeparator = columnSeparator;
55830 return _this;
55831 }
55832 CsvSerializingSession.prototype.addCustomContent = function (content) {
55833 var _this = this;
55834 if (!content) {
55835 return;
55836 }
55837 if (typeof content === 'string') {
55838 if (!/^\s*\n/.test(content)) {
55839 this.beginNewLine();
55840 }
55841 // replace whatever newlines are supplied with the style we're using
55842 content = content.replace(/\r?\n/g, LINE_SEPARATOR);
55843 this.result += content;
55844 }
55845 else {
55846 content.forEach(function (row) {
55847 _this.beginNewLine();
55848 row.forEach(function (cell, index) {
55849 if (index !== 0) {
55850 _this.result += _this.columnSeparator;
55851 }
55852 _this.result += _this.putInQuotes(cell.data.value || '');
55853 if (cell.mergeAcross) {
55854 _this.appendEmptyCells(cell.mergeAcross);
55855 }
55856 });
55857 });
55858 }
55859 };
55860 CsvSerializingSession.prototype.onNewHeaderGroupingRow = function () {
55861 this.beginNewLine();
55862 return {
55863 onColumn: this.onNewHeaderGroupingRowColumn.bind(this)
55864 };
55865 };
55866 CsvSerializingSession.prototype.onNewHeaderGroupingRowColumn = function (header, index, span) {
55867 if (index != 0) {
55868 this.result += this.columnSeparator;
55869 }
55870 this.result += this.putInQuotes(header);
55871 this.appendEmptyCells(span);
55872 };
55873 CsvSerializingSession.prototype.appendEmptyCells = function (count) {
55874 for (var i = 1; i <= count; i++) {
55875 this.result += this.columnSeparator + this.putInQuotes("");
55876 }
55877 };
55878 CsvSerializingSession.prototype.onNewHeaderRow = function () {
55879 this.beginNewLine();
55880 return {
55881 onColumn: this.onNewHeaderRowColumn.bind(this)
55882 };
55883 };
55884 CsvSerializingSession.prototype.onNewHeaderRowColumn = function (column, index) {
55885 if (index != 0) {
55886 this.result += this.columnSeparator;
55887 }
55888 this.result += this.putInQuotes(this.extractHeaderValue(column));
55889 };
55890 CsvSerializingSession.prototype.onNewBodyRow = function () {
55891 this.beginNewLine();
55892 return {
55893 onColumn: this.onNewBodyRowColumn.bind(this)
55894 };
55895 };
55896 CsvSerializingSession.prototype.onNewBodyRowColumn = function (column, index, node) {
55897 if (index != 0) {
55898 this.result += this.columnSeparator;
55899 }
55900 this.result += this.putInQuotes(this.extractRowCellValue(column, index, index, _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Constants"].EXPORT_TYPE_CSV, node));
55901 };
55902 CsvSerializingSession.prototype.putInQuotes = function (value) {
55903 if (this.suppressQuotes) {
55904 return value;
55905 }
55906 if (value === null || value === undefined) {
55907 return '""';
55908 }
55909 var stringValue;
55910 if (typeof value === 'string') {
55911 stringValue = value;
55912 }
55913 else if (typeof value.toString === 'function') {
55914 stringValue = value.toString();
55915 }
55916 else {
55917 console.warn('AG Grid: unknown value type during csv conversion');
55918 stringValue = '';
55919 }
55920 // replace each " with "" (ie two sets of double quotes is how to do double quotes in csv)
55921 var valueEscaped = stringValue.replace(/"/g, "\"\"");
55922 return '"' + valueEscaped + '"';
55923 };
55924 CsvSerializingSession.prototype.parse = function () {
55925 return this.result;
55926 };
55927 CsvSerializingSession.prototype.beginNewLine = function () {
55928 if (!this.isFirstLine) {
55929 this.result += LINE_SEPARATOR;
55930 }
55931 this.isFirstLine = false;
55932 };
55933 return CsvSerializingSession;
55934}(_baseGridSerializingSession__WEBPACK_IMPORTED_MODULE_1__["BaseGridSerializingSession"]));
55935
55936
55937
55938/***/ }),
55939/* 265 */
55940/***/ (function(module, __webpack_exports__, __webpack_require__) {
55941
55942"use strict";
55943__webpack_require__.r(__webpack_exports__);
55944/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CsvExportModule", function() { return CsvExportModule; });
55945/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
55946/* harmony import */ var _csvExport_csvCreator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(262);
55947/* harmony import */ var _csvExport_gridSerializer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(266);
55948
55949
55950
55951var CsvExportModule = {
55952 moduleName: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ModuleNames"].CsvExportModule,
55953 beans: [_csvExport_csvCreator__WEBPACK_IMPORTED_MODULE_1__["CsvCreator"], _csvExport_gridSerializer__WEBPACK_IMPORTED_MODULE_2__["GridSerializer"]]
55954};
55955
55956
55957/***/ }),
55958/* 266 */
55959/***/ (function(module, __webpack_exports__, __webpack_require__) {
55960
55961"use strict";
55962__webpack_require__.r(__webpack_exports__);
55963/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RowType", function() { return RowType; });
55964/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GridSerializer", function() { return GridSerializer; });
55965/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
55966var __extends = (undefined && undefined.__extends) || (function () {
55967 var extendStatics = function (d, b) {
55968 extendStatics = Object.setPrototypeOf ||
55969 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
55970 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
55971 return extendStatics(d, b);
55972 };
55973 return function (d, b) {
55974 extendStatics(d, b);
55975 function __() { this.constructor = d; }
55976 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
55977 };
55978})();
55979var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
55980 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
55981 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
55982 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
55983 return c > 3 && r && Object.defineProperty(target, key, r), r;
55984};
55985
55986var RowType;
55987(function (RowType) {
55988 RowType[RowType["HEADER_GROUPING"] = 0] = "HEADER_GROUPING";
55989 RowType[RowType["HEADER"] = 1] = "HEADER";
55990 RowType[RowType["BODY"] = 2] = "BODY";
55991})(RowType || (RowType = {}));
55992var GridSerializer = /** @class */ (function (_super) {
55993 __extends(GridSerializer, _super);
55994 function GridSerializer() {
55995 return _super !== null && _super.apply(this, arguments) || this;
55996 }
55997 GridSerializer.prototype.serialize = function (gridSerializingSession, params) {
55998 if (params === void 0) { params = {}; }
55999 var columnsToExport = this.getColumnsToExport(params.allColumns, params.columnKeys);
56000 var serializeChain = _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].compose(
56001 // first pass, put in the header names of the cols
56002 this.prepareSession(columnsToExport), this.prependContent(params), this.exportColumnGroups(params, columnsToExport), this.exportHeaders(params, columnsToExport), this.processPinnedTopRows(params, columnsToExport), this.processRows(params, columnsToExport), this.processPinnedBottomRows(params, columnsToExport), this.appendContent(params));
56003 return serializeChain(gridSerializingSession).parse();
56004 };
56005 GridSerializer.prototype.processRow = function (gridSerializingSession, params, columnsToExport, node) {
56006 var _this = this;
56007 var rowSkipper = params.shouldRowBeSkipped || (function () { return false; });
56008 var gridOptionsWrapper = this.gridOptionsWrapper;
56009 var context = gridOptionsWrapper.getContext();
56010 var api = gridOptionsWrapper.getApi();
56011 var columnApi = gridOptionsWrapper.getColumnApi();
56012 var skipSingleChildrenGroup = gridOptionsWrapper.isGroupRemoveSingleChildren();
56013 var hideOpenParents = gridOptionsWrapper.isGroupHideOpenParents();
56014 var skipLowestSingleChildrenGroup = gridOptionsWrapper.isGroupRemoveLowestSingleChildren();
56015 var isLeafNode = this.columnModel.isPivotMode() ? node.leafGroup : !node.group;
56016 var skipRowGroups = params.skipGroups || params.skipRowGroups;
56017 var shouldSkipLowestGroup = skipLowestSingleChildrenGroup && node.leafGroup;
56018 var shouldSkipCurrentGroup = node.allChildrenCount === 1 && (skipSingleChildrenGroup || shouldSkipLowestGroup);
56019 if (skipRowGroups && params.skipGroups) {
56020 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].doOnce(function () { return console.warn('AG Grid: Since v25.2 `skipGroups` has been renamed to `skipRowGroups`.'); }, 'gridSerializer-skipGroups');
56021 }
56022 var rowPosition = { rowIndex: node.rowIndex, rowPinned: node.rowPinned };
56023 if ((!isLeafNode && (params.skipRowGroups || shouldSkipCurrentGroup || hideOpenParents)) ||
56024 (params.onlySelected && !node.isSelected()) ||
56025 (params.rowNodes && !params.rowNodes.some(function (position) { return _this.rowPositionUtils.sameRow(position, rowPosition); })) ||
56026 (params.skipPinnedTop && node.rowPinned === 'top') ||
56027 (params.skipPinnedBottom && node.rowPinned === 'bottom')) {
56028 return;
56029 }
56030 // if we are in pivotMode, then the grid will show the root node only
56031 // if it's not a leaf group
56032 var nodeIsRootNode = node.level === -1;
56033 if (nodeIsRootNode && !node.leafGroup) {
56034 return;
56035 }
56036 var shouldRowBeSkipped = rowSkipper({ node: node, api: api, columnApi: columnApi, context: context });
56037 if (shouldRowBeSkipped) {
56038 return;
56039 }
56040 var rowAccumulator = gridSerializingSession.onNewBodyRow();
56041 columnsToExport.forEach(function (column, index) {
56042 rowAccumulator.onColumn(column, index, node);
56043 });
56044 if (params.getCustomContentBelowRow) {
56045 var content = params.getCustomContentBelowRow({ node: node, api: api, columnApi: columnApi, context: context });
56046 if (content) {
56047 gridSerializingSession.addCustomContent(content);
56048 }
56049 }
56050 };
56051 GridSerializer.prototype.appendContent = function (params) {
56052 return function (gridSerializingSession) {
56053 var appendContent = params.customFooter || params.appendContent;
56054 if (appendContent) {
56055 if (params.customFooter) {
56056 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].doOnce(function () { return console.warn('AG Grid: Since version 25.2.0 the `customFooter` param has been deprecated. Use `appendContent` instead.'); }, 'gridSerializer-customFooter');
56057 }
56058 gridSerializingSession.addCustomContent(appendContent);
56059 }
56060 return gridSerializingSession;
56061 };
56062 };
56063 GridSerializer.prototype.prependContent = function (params) {
56064 return function (gridSerializingSession) {
56065 var prependContent = params.customHeader || params.prependContent;
56066 if (prependContent) {
56067 if (params.customHeader) {
56068 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].doOnce(function () { return console.warn('AG Grid: Since version 25.2.0 the `customHeader` param has been deprecated. Use `prependContent` instead.'); }, 'gridSerializer-customHeader');
56069 }
56070 gridSerializingSession.addCustomContent(prependContent);
56071 }
56072 return gridSerializingSession;
56073 };
56074 };
56075 GridSerializer.prototype.prepareSession = function (columnsToExport) {
56076 return function (gridSerializingSession) {
56077 gridSerializingSession.prepare(columnsToExport);
56078 return gridSerializingSession;
56079 };
56080 };
56081 GridSerializer.prototype.exportColumnGroups = function (params, columnsToExport) {
56082 var _this = this;
56083 return function (gridSerializingSession) {
56084 if (!params.skipColumnGroupHeaders) {
56085 var groupInstanceIdCreator = new _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["GroupInstanceIdCreator"]();
56086 var displayedGroups = _this.displayedGroupCreator.createDisplayedGroups(columnsToExport, _this.columnModel.getGridBalancedTree(), groupInstanceIdCreator, null);
56087 _this.recursivelyAddHeaderGroups(displayedGroups, gridSerializingSession, params.processGroupHeaderCallback);
56088 }
56089 else if (params.columnGroups) {
56090 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].doOnce(function () { return console.warn('AG Grid: Since v25.2 the `columnGroups` param has deprecated, and groups are exported by default.'); }, 'gridSerializer-columnGroups');
56091 }
56092 return gridSerializingSession;
56093 };
56094 };
56095 GridSerializer.prototype.exportHeaders = function (params, columnsToExport) {
56096 return function (gridSerializingSession) {
56097 if (!params.skipHeader && !params.skipColumnHeaders) {
56098 var gridRowIterator_1 = gridSerializingSession.onNewHeaderRow();
56099 columnsToExport.forEach(function (column, index) {
56100 gridRowIterator_1.onColumn(column, index, undefined);
56101 });
56102 }
56103 else if (params.skipHeader) {
56104 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].doOnce(function () { return console.warn('AG Grid: Since v25.2 the `skipHeader` param has been renamed to `skipColumnHeaders`.'); }, 'gridSerializer-skipHeader');
56105 }
56106 return gridSerializingSession;
56107 };
56108 };
56109 GridSerializer.prototype.processPinnedTopRows = function (params, columnsToExport) {
56110 var _this = this;
56111 return function (gridSerializingSession) {
56112 var processRow = _this.processRow.bind(_this, gridSerializingSession, params, columnsToExport);
56113 _this.pinnedRowModel.forEachPinnedTopRow(processRow);
56114 return gridSerializingSession;
56115 };
56116 };
56117 GridSerializer.prototype.processRows = function (params, columnsToExport) {
56118 var _this = this;
56119 return function (gridSerializingSession) {
56120 // when in pivot mode, we always render cols on screen, never 'all columns'
56121 var rowModel = _this.rowModel;
56122 var rowModelType = rowModel.getType();
56123 var usingCsrm = rowModelType === _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Constants"].ROW_MODEL_TYPE_CLIENT_SIDE;
56124 var usingSsrm = rowModelType === _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Constants"].ROW_MODEL_TYPE_SERVER_SIDE;
56125 var onlySelectedNonStandardModel = !usingCsrm && params.onlySelected;
56126 var processRow = _this.processRow.bind(_this, gridSerializingSession, params, columnsToExport);
56127 if (_this.columnModel.isPivotMode()) {
56128 if (usingCsrm) {
56129 rowModel.forEachPivotNode(processRow);
56130 }
56131 else {
56132 // must be enterprise, so we can just loop through all the nodes
56133 rowModel.forEachNode(processRow);
56134 }
56135 }
56136 else {
56137 // onlySelectedAllPages: user doing pagination and wants selected items from
56138 // other pages, so cannot use the standard row model as it won't have rows from
56139 // other pages.
56140 // onlySelectedNonStandardModel: if user wants selected in non standard row model
56141 // (eg viewport) then again RowModel cannot be used, so need to use selected instead.
56142 if (params.onlySelectedAllPages || onlySelectedNonStandardModel) {
56143 var selectedNodes = _this.selectionService.getSelectedNodes();
56144 selectedNodes.forEach(processRow);
56145 }
56146 else {
56147 // here is everything else - including standard row model and selected. we don't use
56148 // the selection model even when just using selected, so that the result is the order
56149 // of the rows appearing on the screen.
56150 if (usingCsrm) {
56151 rowModel.forEachNodeAfterFilterAndSort(processRow);
56152 }
56153 else if (usingSsrm) {
56154 rowModel.forEachNodeAfterFilterAndSort(processRow);
56155 }
56156 else {
56157 rowModel.forEachNode(processRow);
56158 }
56159 }
56160 }
56161 return gridSerializingSession;
56162 };
56163 };
56164 GridSerializer.prototype.processPinnedBottomRows = function (params, columnsToExport) {
56165 var _this = this;
56166 return function (gridSerializingSession) {
56167 var processRow = _this.processRow.bind(_this, gridSerializingSession, params, columnsToExport);
56168 _this.pinnedRowModel.forEachPinnedBottomRow(processRow);
56169 return gridSerializingSession;
56170 };
56171 };
56172 GridSerializer.prototype.getColumnsToExport = function (allColumns, columnKeys) {
56173 if (allColumns === void 0) { allColumns = false; }
56174 var isPivotMode = this.columnModel.isPivotMode();
56175 if (columnKeys && columnKeys.length) {
56176 return this.columnModel.getGridColumns(columnKeys);
56177 }
56178 if (allColumns && !isPivotMode) {
56179 // add auto group column for tree data
56180 var columns = this.gridOptionsWrapper.isTreeData()
56181 ? this.columnModel.getGridColumns([_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Constants"].GROUP_AUTO_COLUMN_ID])
56182 : [];
56183 return columns.concat(this.columnModel.getAllPrimaryColumns() || []);
56184 }
56185 return this.columnModel.getAllDisplayedColumns();
56186 };
56187 GridSerializer.prototype.recursivelyAddHeaderGroups = function (displayedGroups, gridSerializingSession, processGroupHeaderCallback) {
56188 var directChildrenHeaderGroups = [];
56189 displayedGroups.forEach(function (columnGroupChild) {
56190 var columnGroup = columnGroupChild;
56191 if (!columnGroup.getChildren) {
56192 return;
56193 }
56194 columnGroup.getChildren().forEach(function (it) { return directChildrenHeaderGroups.push(it); });
56195 });
56196 if (displayedGroups.length > 0 && displayedGroups[0] instanceof _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ColumnGroup"]) {
56197 this.doAddHeaderHeader(gridSerializingSession, displayedGroups, processGroupHeaderCallback);
56198 }
56199 if (directChildrenHeaderGroups && directChildrenHeaderGroups.length > 0) {
56200 this.recursivelyAddHeaderGroups(directChildrenHeaderGroups, gridSerializingSession, processGroupHeaderCallback);
56201 }
56202 };
56203 GridSerializer.prototype.doAddHeaderHeader = function (gridSerializingSession, displayedGroups, processGroupHeaderCallback) {
56204 var _this = this;
56205 var gridRowIterator = gridSerializingSession.onNewHeaderGroupingRow();
56206 var columnIndex = 0;
56207 displayedGroups.forEach(function (columnGroupChild) {
56208 var columnGroup = columnGroupChild;
56209 var name;
56210 if (processGroupHeaderCallback) {
56211 name = processGroupHeaderCallback({
56212 columnGroup: columnGroup,
56213 api: _this.gridOptionsWrapper.getApi(),
56214 columnApi: _this.gridOptionsWrapper.getColumnApi(),
56215 context: _this.gridOptionsWrapper.getContext()
56216 });
56217 }
56218 else {
56219 name = _this.columnModel.getDisplayNameForColumnGroup(columnGroup, 'header');
56220 }
56221 var collapsibleGroupRanges = columnGroup.getLeafColumns().reduce(function (collapsibleGroups, currentColumn, currentIdx, arr) {
56222 var lastGroup = _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].last(collapsibleGroups);
56223 var groupShow = currentColumn.getColumnGroupShow() === 'open';
56224 if (!groupShow) {
56225 if (lastGroup && lastGroup[1] == null) {
56226 lastGroup[1] = currentIdx - 1;
56227 }
56228 }
56229 else if (!lastGroup || lastGroup[1] != null) {
56230 lastGroup = [currentIdx];
56231 collapsibleGroups.push(lastGroup);
56232 }
56233 if (currentIdx === arr.length - 1 && lastGroup && lastGroup[1] == null) {
56234 lastGroup[1] = currentIdx;
56235 }
56236 return collapsibleGroups;
56237 }, []);
56238 gridRowIterator.onColumn(name || '', columnIndex++, columnGroup.getLeafColumns().length - 1, collapsibleGroupRanges);
56239 });
56240 };
56241 __decorate([
56242 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('displayedGroupCreator')
56243 ], GridSerializer.prototype, "displayedGroupCreator", void 0);
56244 __decorate([
56245 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnModel')
56246 ], GridSerializer.prototype, "columnModel", void 0);
56247 __decorate([
56248 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowModel')
56249 ], GridSerializer.prototype, "rowModel", void 0);
56250 __decorate([
56251 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('pinnedRowModel')
56252 ], GridSerializer.prototype, "pinnedRowModel", void 0);
56253 __decorate([
56254 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('selectionService')
56255 ], GridSerializer.prototype, "selectionService", void 0);
56256 __decorate([
56257 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowPositionUtils')
56258 ], GridSerializer.prototype, "rowPositionUtils", void 0);
56259 GridSerializer = __decorate([
56260 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Bean"])("gridSerializer")
56261 ], GridSerializer);
56262 return GridSerializer;
56263}(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
56264
56265
56266
56267/***/ }),
56268/* 267 */
56269/***/ (function(module, __webpack_exports__, __webpack_require__) {
56270
56271"use strict";
56272__webpack_require__.r(__webpack_exports__);
56273/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "XmlFactory", function() { return XmlFactory; });
56274var LINE_SEPARATOR = '\r\n';
56275var XmlFactory = /** @class */ (function () {
56276 function XmlFactory() {
56277 }
56278 XmlFactory.createHeader = function (headerElement) {
56279 if (headerElement === void 0) { headerElement = {}; }
56280 var headerStart = '<?';
56281 var headerEnd = '?>';
56282 var keys = ['version'];
56283 if (!headerElement.version) {
56284 headerElement.version = "1.0";
56285 }
56286 if (headerElement.encoding) {
56287 keys.push('encoding');
56288 }
56289 if (headerElement.standalone) {
56290 keys.push('standalone');
56291 }
56292 var att = keys.map(function (key) { return key + "=\"" + headerElement[key] + "\""; }).join(' ');
56293 return headerStart + "xml " + att + " " + headerEnd;
56294 };
56295 XmlFactory.createXml = function (xmlElement, booleanTransformer) {
56296 var _this = this;
56297 var props = '';
56298 if (xmlElement.properties) {
56299 if (xmlElement.properties.prefixedAttributes) {
56300 xmlElement.properties.prefixedAttributes.forEach(function (prefixedSet) {
56301 Object.keys(prefixedSet.map).forEach(function (key) {
56302 props += _this.returnAttributeIfPopulated(prefixedSet.prefix + key, prefixedSet.map[key], booleanTransformer);
56303 });
56304 });
56305 }
56306 if (xmlElement.properties.rawMap) {
56307 Object.keys(xmlElement.properties.rawMap).forEach(function (key) {
56308 props += _this.returnAttributeIfPopulated(key, xmlElement.properties.rawMap[key], booleanTransformer);
56309 });
56310 }
56311 }
56312 var result = '<' + xmlElement.name + props;
56313 if (!xmlElement.children && xmlElement.textNode == null) {
56314 return result + '/>' + LINE_SEPARATOR;
56315 }
56316 if (xmlElement.textNode != null) {
56317 return result + '>' + xmlElement.textNode + '</' + xmlElement.name + '>' + LINE_SEPARATOR;
56318 }
56319 result += '>' + LINE_SEPARATOR;
56320 if (xmlElement.children) {
56321 xmlElement.children.forEach(function (it) {
56322 result += _this.createXml(it, booleanTransformer);
56323 });
56324 }
56325 return result + '</' + xmlElement.name + '>' + LINE_SEPARATOR;
56326 };
56327 XmlFactory.returnAttributeIfPopulated = function (key, value, booleanTransformer) {
56328 if (!value && value !== '' && value !== 0) {
56329 return '';
56330 }
56331 var xmlValue = value;
56332 if ((typeof (value) === 'boolean')) {
56333 if (booleanTransformer) {
56334 xmlValue = booleanTransformer(value);
56335 }
56336 }
56337 return " " + key + "=\"" + xmlValue + "\"";
56338 };
56339 return XmlFactory;
56340}());
56341
56342
56343
56344/***/ }),
56345/* 268 */
56346/***/ (function(module, __webpack_exports__, __webpack_require__) {
56347
56348"use strict";
56349__webpack_require__.r(__webpack_exports__);
56350/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ZipContainer", function() { return ZipContainer; });
56351/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
56352var __values = (undefined && undefined.__values) || function(o) {
56353 var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
56354 if (m) return m.call(o);
56355 if (o && typeof o.length === "number") return {
56356 next: function () {
56357 if (o && i >= o.length) o = void 0;
56358 return { value: o && o[i++], done: !o };
56359 }
56360 };
56361 throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
56362};
56363
56364// table for crc calculation
56365// from: https://referencesource.microsoft.com/#System/sys/System/IO/compression/Crc32Helper.cs,3b31978c7d7f7246,references
56366var crcTable = new Uint32Array([
56367 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
56368 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
56369 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
56370 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
56371 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
56372 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
56373 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,
56374 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
56375 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
56376 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
56377 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
56378 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
56379 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
56380 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
56381 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
56382 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
56383 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
56384 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
56385 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
56386 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
56387 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
56388 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
56389 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
56390 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
56391 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
56392 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
56393 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
56394 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
56395 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
56396 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
56397 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
56398 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
56399 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
56400 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
56401 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
56402 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
56403 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
56404 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
56405 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
56406 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
56407 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
56408 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
56409 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
56410]);
56411var ZipContainer = /** @class */ (function () {
56412 function ZipContainer() {
56413 }
56414 ZipContainer.addFolders = function (paths) {
56415 paths.forEach(this.addFolder.bind(this));
56416 };
56417 ZipContainer.addFolder = function (path) {
56418 this.folders.push({
56419 path: path,
56420 created: new Date(),
56421 isBase64: false
56422 });
56423 };
56424 ZipContainer.addFile = function (path, content, isBase64) {
56425 if (isBase64 === void 0) { isBase64 = false; }
56426 this.files.push({
56427 path: path,
56428 created: new Date(),
56429 content: content,
56430 isBase64: isBase64
56431 });
56432 };
56433 ZipContainer.getContent = function (mimeType) {
56434 if (mimeType === void 0) { mimeType = 'application/zip'; }
56435 var textOutput = this.buildFileStream();
56436 var uInt8Output = this.buildUint8Array(textOutput);
56437 this.clearStream();
56438 return new Blob([uInt8Output], { type: mimeType });
56439 };
56440 ZipContainer.clearStream = function () {
56441 this.folders = [];
56442 this.files = [];
56443 };
56444 ZipContainer.buildFileStream = function (fData) {
56445 var e_1, _a;
56446 if (fData === void 0) { fData = ''; }
56447 var totalFiles = this.folders.concat(this.files);
56448 var len = totalFiles.length;
56449 var foData = '';
56450 var lL = 0;
56451 var cL = 0;
56452 try {
56453 for (var totalFiles_1 = __values(totalFiles), totalFiles_1_1 = totalFiles_1.next(); !totalFiles_1_1.done; totalFiles_1_1 = totalFiles_1.next()) {
56454 var currentFile = totalFiles_1_1.value;
56455 var _b = this.getHeader(currentFile, lL), fileHeader = _b.fileHeader, folderHeader = _b.folderHeader, content = _b.content;
56456 lL += fileHeader.length + content.length;
56457 cL += folderHeader.length;
56458 fData += fileHeader + content;
56459 foData += folderHeader;
56460 }
56461 }
56462 catch (e_1_1) { e_1 = { error: e_1_1 }; }
56463 finally {
56464 try {
56465 if (totalFiles_1_1 && !totalFiles_1_1.done && (_a = totalFiles_1.return)) _a.call(totalFiles_1);
56466 }
56467 finally { if (e_1) throw e_1.error; }
56468 }
56469 var foEnd = this.buildFolderEnd(len, cL, lL);
56470 return fData + foData + foEnd;
56471 };
56472 ZipContainer.getHeader = function (currentFile, offset) {
56473 var content = currentFile.content, path = currentFile.path, created = currentFile.created, isBase64 = currentFile.isBase64;
56474 var utf8_encode = _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].utf8_encode, decToHex = _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].decToHex;
56475 var utfPath = utf8_encode(path);
56476 var isUTF8 = utfPath !== path;
56477 var time = this.convertTime(created);
56478 var dt = this.convertDate(created);
56479 var extraFields = '';
56480 if (isUTF8) {
56481 var uExtraFieldPath = decToHex(1, 1) + decToHex(this.getFromCrc32Table(utfPath), 4) + utfPath;
56482 extraFields = "\x75\x70" + decToHex(uExtraFieldPath.length, 2) + uExtraFieldPath;
56483 }
56484 var _a = !content ? { size: 0, content: '' } : this.getConvertedContent(content, isBase64), size = _a.size, convertedContent = _a.content;
56485 var header = '\x0A\x00' +
56486 (isUTF8 ? '\x00\x08' : '\x00\x00') +
56487 '\x00\x00' +
56488 decToHex(time, 2) + // last modified time
56489 decToHex(dt, 2) + // last modified date
56490 decToHex(size ? this.getFromCrc32Table(convertedContent) : 0, 4) +
56491 decToHex(size, 4) + // compressed size
56492 decToHex(size, 4) + // uncompressed size
56493 decToHex(utfPath.length, 2) + // file name length
56494 decToHex(extraFields.length, 2); // extra field length
56495 var fileHeader = 'PK\x03\x04' + header + utfPath + extraFields;
56496 var folderHeader = 'PK\x01\x02' + // central header
56497 '\x14\x00' +
56498 header + // file header
56499 '\x00\x00' +
56500 '\x00\x00' +
56501 '\x00\x00' +
56502 (content ? '\x00\x00\x00\x00' : '\x10\x00\x00\x00') + // external file attributes
56503 decToHex(offset, 4) + // relative offset of local header
56504 utfPath + // file name
56505 extraFields; // extra field
56506 return { fileHeader: fileHeader, folderHeader: folderHeader, content: convertedContent || '' };
56507 };
56508 ZipContainer.getConvertedContent = function (content, isBase64) {
56509 if (isBase64 === void 0) { isBase64 = false; }
56510 if (isBase64) {
56511 content = content.split(';base64,')[1];
56512 }
56513 content = isBase64 ? atob(content) : content;
56514 return {
56515 size: content.length,
56516 content: content
56517 };
56518 };
56519 ZipContainer.buildFolderEnd = function (tLen, cLen, lLen) {
56520 var decToHex = _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].decToHex;
56521 return 'PK\x05\x06' + // central folder end
56522 '\x00\x00' +
56523 '\x00\x00' +
56524 decToHex(tLen, 2) + // total number of entries in the central folder
56525 decToHex(tLen, 2) + // total number of entries in the central folder
56526 decToHex(cLen, 4) + // size of the central folder
56527 decToHex(lLen, 4) + // central folder start offset
56528 '\x00\x00';
56529 };
56530 ZipContainer.buildUint8Array = function (content) {
56531 var uint8 = new Uint8Array(content.length);
56532 for (var i = 0; i < uint8.length; i++) {
56533 uint8[i] = content.charCodeAt(i);
56534 }
56535 return uint8;
56536 };
56537 ZipContainer.getFromCrc32Table = function (content) {
56538 if (!content.length) {
56539 return 0;
56540 }
56541 var size = content.length;
56542 var iterable = new Uint8Array(size);
56543 for (var i = 0; i < size; i++) {
56544 iterable[i] = content.charCodeAt(i);
56545 }
56546 var crc = 0 ^ (-1);
56547 var j = 0;
56548 var k = 0;
56549 var l = 0;
56550 for (var i = 0; i < size; i++) {
56551 j = iterable[i];
56552 k = (crc ^ j) & 0xFF;
56553 l = crcTable[k];
56554 crc = (crc >>> 8) ^ l;
56555 }
56556 return crc ^ (-1);
56557 };
56558 ZipContainer.convertTime = function (date) {
56559 var time = date.getHours();
56560 time <<= 6;
56561 time = time | date.getMinutes();
56562 time <<= 5;
56563 time = time | date.getSeconds() / 2;
56564 return time;
56565 };
56566 ZipContainer.convertDate = function (date) {
56567 var dt = date.getFullYear() - 1980;
56568 dt <<= 4;
56569 dt = dt | (date.getMonth() + 1);
56570 dt <<= 5;
56571 dt = dt | date.getDate();
56572 return dt;
56573 };
56574 ZipContainer.folders = [];
56575 ZipContainer.files = [];
56576 return ZipContainer;
56577}());
56578
56579
56580
56581/***/ }),
56582/* 269 */
56583/***/ (function(module, __webpack_exports__, __webpack_require__) {
56584
56585"use strict";
56586__webpack_require__.r(__webpack_exports__);
56587/* harmony import */ var _infiniteRowModelModule__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(270);
56588/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "InfiniteRowModelModule", function() { return _infiniteRowModelModule__WEBPACK_IMPORTED_MODULE_0__["InfiniteRowModelModule"]; });
56589
56590
56591
56592
56593/***/ }),
56594/* 270 */
56595/***/ (function(module, __webpack_exports__, __webpack_require__) {
56596
56597"use strict";
56598__webpack_require__.r(__webpack_exports__);
56599/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InfiniteRowModelModule", function() { return InfiniteRowModelModule; });
56600/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
56601/* harmony import */ var _infiniteRowModel_infiniteRowModel__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(271);
56602
56603
56604var InfiniteRowModelModule = {
56605 moduleName: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["ModuleNames"].InfiniteRowModelModule,
56606 rowModels: { infinite: _infiniteRowModel_infiniteRowModel__WEBPACK_IMPORTED_MODULE_1__["InfiniteRowModel"] }
56607};
56608
56609
56610/***/ }),
56611/* 271 */
56612/***/ (function(module, __webpack_exports__, __webpack_require__) {
56613
56614"use strict";
56615__webpack_require__.r(__webpack_exports__);
56616/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InfiniteRowModel", function() { return InfiniteRowModel; });
56617/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
56618/* harmony import */ var _infiniteCache__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(272);
56619var __extends = (undefined && undefined.__extends) || (function () {
56620 var extendStatics = function (d, b) {
56621 extendStatics = Object.setPrototypeOf ||
56622 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
56623 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
56624 return extendStatics(d, b);
56625 };
56626 return function (d, b) {
56627 extendStatics(d, b);
56628 function __() { this.constructor = d; }
56629 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
56630 };
56631})();
56632var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
56633 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
56634 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
56635 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
56636 return c > 3 && r && Object.defineProperty(target, key, r), r;
56637};
56638
56639
56640var InfiniteRowModel = /** @class */ (function (_super) {
56641 __extends(InfiniteRowModel, _super);
56642 function InfiniteRowModel() {
56643 return _super !== null && _super.apply(this, arguments) || this;
56644 }
56645 InfiniteRowModel.prototype.getRowBounds = function (index) {
56646 return {
56647 rowHeight: this.rowHeight,
56648 rowTop: this.rowHeight * index
56649 };
56650 };
56651 // we don't implement as lazy row heights is not supported in this row model
56652 InfiniteRowModel.prototype.ensureRowHeightsValid = function (startPixel, endPixel, startLimitIndex, endLimitIndex) {
56653 return false;
56654 };
56655 InfiniteRowModel.prototype.init = function () {
56656 var _this = this;
56657 if (!this.gridOptionsWrapper.isRowModelInfinite()) {
56658 return;
56659 }
56660 this.rowHeight = this.gridOptionsWrapper.getRowHeightAsNumber();
56661 this.addEventListeners();
56662 this.addDestroyFunc(function () { return _this.destroyCache(); });
56663 this.verifyProps();
56664 };
56665 InfiniteRowModel.prototype.verifyProps = function () {
56666 if (this.gridOptionsWrapper.getInitialGroupOrderComparator() != null) {
56667 var message_1 = "AG Grid: initialGroupOrderComparator cannot be used with Infinite Row Model. If using Infinite Row Model, then sorting is done on the server side, nothing to do with the client.";
56668 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].doOnce(function () { return console.warn(message_1); }, 'IRM.InitialGroupOrderComparator');
56669 }
56670 };
56671 InfiniteRowModel.prototype.start = function () {
56672 this.setDatasource(this.gridOptionsWrapper.getDatasource());
56673 };
56674 InfiniteRowModel.prototype.destroyDatasource = function () {
56675 if (this.datasource) {
56676 this.getContext().destroyBean(this.datasource);
56677 this.rowRenderer.datasourceChanged();
56678 this.datasource = null;
56679 }
56680 };
56681 InfiniteRowModel.prototype.addEventListeners = function () {
56682 this.addManagedListener(this.eventService, _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));
56683 this.addManagedListener(this.eventService, _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_SORT_CHANGED, this.onSortChanged.bind(this));
56684 this.addManagedListener(this.eventService, _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_NEW_COLUMNS_LOADED, this.onColumnEverything.bind(this));
56685 this.addManagedListener(this.eventService, _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_STORE_UPDATED, this.onCacheUpdated.bind(this));
56686 };
56687 InfiniteRowModel.prototype.onFilterChanged = function () {
56688 this.reset();
56689 };
56690 InfiniteRowModel.prototype.onSortChanged = function () {
56691 this.reset();
56692 };
56693 InfiniteRowModel.prototype.onColumnEverything = function () {
56694 var resetRequired;
56695 // if cache params, we require reset only if sort model has changed. we don't need to check
56696 // for filter model, as the filter manager will fire an event when columns change that result
56697 // in the filter changing.
56698 if (this.cacheParams) {
56699 resetRequired = this.isSortModelDifferent();
56700 }
56701 else {
56702 // if no cacheParams, means first time creating the cache, so always create one
56703 resetRequired = true;
56704 }
56705 if (resetRequired) {
56706 this.reset();
56707 }
56708 };
56709 InfiniteRowModel.prototype.isSortModelDifferent = function () {
56710 return !_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].jsonEquals(this.cacheParams.sortModel, this.sortController.getSortModel());
56711 };
56712 InfiniteRowModel.prototype.getType = function () {
56713 return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Constants"].ROW_MODEL_TYPE_INFINITE;
56714 };
56715 InfiniteRowModel.prototype.setDatasource = function (datasource) {
56716 this.destroyDatasource();
56717 this.datasource = datasource;
56718 // only reset if we have a valid datasource to working with
56719 if (datasource) {
56720 this.reset();
56721 }
56722 };
56723 InfiniteRowModel.prototype.isEmpty = function () {
56724 return !this.infiniteCache;
56725 };
56726 InfiniteRowModel.prototype.isRowsToRender = function () {
56727 return !!this.infiniteCache;
56728 };
56729 InfiniteRowModel.prototype.getNodesInRangeForSelection = function (firstInRange, lastInRange) {
56730 return this.infiniteCache ? this.infiniteCache.getRowNodesInRange(firstInRange, lastInRange) : [];
56731 };
56732 InfiniteRowModel.prototype.reset = function () {
56733 // important to return here, as the user could be setting filter or sort before
56734 // data-source is set
56735 if (!this.datasource) {
56736 return;
56737 }
56738 // if user is providing id's, then this means we can keep the selection between datasource hits,
56739 // as the rows will keep their unique id's even if, for example, server side sorting or filtering
56740 // is done.
56741 var getRowIdFunc = this.gridOptionsWrapper.getRowIdFunc();
56742 var userGeneratingIds = getRowIdFunc != null;
56743 if (!userGeneratingIds) {
56744 this.selectionService.reset();
56745 }
56746 this.resetCache();
56747 var event = this.createModelUpdatedEvent();
56748 this.eventService.dispatchEvent(event);
56749 };
56750 InfiniteRowModel.prototype.createModelUpdatedEvent = function () {
56751 return {
56752 type: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_MODEL_UPDATED,
56753 api: this.gridApi,
56754 columnApi: this.columnApi,
56755 // not sure if these should all be false - noticed if after implementing,
56756 // maybe they should be true?
56757 newPage: false,
56758 newData: false,
56759 keepRenderedRows: true,
56760 animate: false
56761 };
56762 };
56763 InfiniteRowModel.prototype.resetCache = function () {
56764 // if not first time creating a cache, need to destroy the old one
56765 this.destroyCache();
56766 this.cacheParams = {
56767 // the user provided datasource
56768 datasource: this.datasource,
56769 // sort and filter model
56770 filterModel: this.filterManager.getFilterModel(),
56771 sortModel: this.sortController.getSortModel(),
56772 rowNodeBlockLoader: this.rowNodeBlockLoader,
56773 // properties - this way we take a snapshot of them, so if user changes any, they will be
56774 // used next time we create a new cache, which is generally after a filter or sort change,
56775 // or a new datasource is set
56776 initialRowCount: this.defaultIfInvalid(this.gridOptionsWrapper.getInfiniteInitialRowCount(), 1),
56777 maxBlocksInCache: this.gridOptionsWrapper.getMaxBlocksInCache(),
56778 rowHeight: this.gridOptionsWrapper.getRowHeightAsNumber(),
56779 // if user doesn't provide overflow, we use default overflow of 1, so user can scroll past
56780 // the current page and request first row of next page
56781 overflowSize: this.defaultIfInvalid(this.gridOptionsWrapper.getCacheOverflowSize(), 1),
56782 // page size needs to be 1 or greater. having it at 1 would be silly, as you would be hitting the
56783 // server for one page at a time. so the default if not specified is 100.
56784 blockSize: this.defaultIfInvalid(this.gridOptionsWrapper.getCacheBlockSize(), 100),
56785 // the cache could create this, however it is also used by the pages, so handy to create it
56786 // here as the settings are also passed to the pages
56787 lastAccessedSequence: new _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["NumberSequence"]()
56788 };
56789 this.infiniteCache = this.createBean(new _infiniteCache__WEBPACK_IMPORTED_MODULE_1__["InfiniteCache"](this.cacheParams));
56790 };
56791 InfiniteRowModel.prototype.defaultIfInvalid = function (value, defaultValue) {
56792 return value > 0 ? value : defaultValue;
56793 };
56794 InfiniteRowModel.prototype.destroyCache = function () {
56795 if (this.infiniteCache) {
56796 this.infiniteCache = this.destroyBean(this.infiniteCache);
56797 }
56798 };
56799 InfiniteRowModel.prototype.onCacheUpdated = function () {
56800 var event = this.createModelUpdatedEvent();
56801 this.eventService.dispatchEvent(event);
56802 };
56803 InfiniteRowModel.prototype.getRow = function (rowIndex) {
56804 if (!this.infiniteCache) {
56805 return undefined;
56806 }
56807 if (rowIndex >= this.infiniteCache.getRowCount()) {
56808 return undefined;
56809 }
56810 return this.infiniteCache.getRow(rowIndex);
56811 };
56812 InfiniteRowModel.prototype.getRowNode = function (id) {
56813 var result;
56814 this.forEachNode(function (rowNode) {
56815 if (rowNode.id === id) {
56816 result = rowNode;
56817 }
56818 });
56819 return result;
56820 };
56821 InfiniteRowModel.prototype.forEachNode = function (callback) {
56822 if (this.infiniteCache) {
56823 this.infiniteCache.forEachNodeDeep(callback);
56824 }
56825 };
56826 InfiniteRowModel.prototype.getTopLevelRowCount = function () {
56827 return this.getRowCount();
56828 };
56829 InfiniteRowModel.prototype.getTopLevelRowDisplayedIndex = function (topLevelIndex) {
56830 return topLevelIndex;
56831 };
56832 InfiniteRowModel.prototype.getRowIndexAtPixel = function (pixel) {
56833 if (this.rowHeight !== 0) { // avoid divide by zero error
56834 var rowIndexForPixel = Math.floor(pixel / this.rowHeight);
56835 var lastRowIndex = this.getRowCount() - 1;
56836 if (rowIndexForPixel > lastRowIndex) {
56837 return lastRowIndex;
56838 }
56839 return rowIndexForPixel;
56840 }
56841 return 0;
56842 };
56843 InfiniteRowModel.prototype.getRowCount = function () {
56844 return this.infiniteCache ? this.infiniteCache.getRowCount() : 0;
56845 };
56846 InfiniteRowModel.prototype.isRowPresent = function (rowNode) {
56847 var foundRowNode = this.getRowNode(rowNode.id);
56848 return !!foundRowNode;
56849 };
56850 InfiniteRowModel.prototype.refreshCache = function () {
56851 if (this.infiniteCache) {
56852 this.infiniteCache.refreshCache();
56853 }
56854 };
56855 InfiniteRowModel.prototype.purgeCache = function () {
56856 if (this.infiniteCache) {
56857 this.infiniteCache.purgeCache();
56858 }
56859 };
56860 // for iRowModel
56861 InfiniteRowModel.prototype.isLastRowIndexKnown = function () {
56862 if (this.infiniteCache) {
56863 return this.infiniteCache.isLastRowIndexKnown();
56864 }
56865 return false;
56866 };
56867 InfiniteRowModel.prototype.setRowCount = function (rowCount, lastRowIndexKnown) {
56868 if (this.infiniteCache) {
56869 this.infiniteCache.setRowCount(rowCount, lastRowIndexKnown);
56870 }
56871 };
56872 __decorate([
56873 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('filterManager')
56874 ], InfiniteRowModel.prototype, "filterManager", void 0);
56875 __decorate([
56876 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('sortController')
56877 ], InfiniteRowModel.prototype, "sortController", void 0);
56878 __decorate([
56879 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('selectionService')
56880 ], InfiniteRowModel.prototype, "selectionService", void 0);
56881 __decorate([
56882 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('gridApi')
56883 ], InfiniteRowModel.prototype, "gridApi", void 0);
56884 __decorate([
56885 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('columnApi')
56886 ], InfiniteRowModel.prototype, "columnApi", void 0);
56887 __decorate([
56888 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowRenderer')
56889 ], InfiniteRowModel.prototype, "rowRenderer", void 0);
56890 __decorate([
56891 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowNodeBlockLoader')
56892 ], InfiniteRowModel.prototype, "rowNodeBlockLoader", void 0);
56893 __decorate([
56894 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
56895 ], InfiniteRowModel.prototype, "init", null);
56896 __decorate([
56897 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["PreDestroy"]
56898 ], InfiniteRowModel.prototype, "destroyDatasource", null);
56899 InfiniteRowModel = __decorate([
56900 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Bean"])('rowModel')
56901 ], InfiniteRowModel);
56902 return InfiniteRowModel;
56903}(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
56904
56905
56906
56907/***/ }),
56908/* 272 */
56909/***/ (function(module, __webpack_exports__, __webpack_require__) {
56910
56911"use strict";
56912__webpack_require__.r(__webpack_exports__);
56913/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InfiniteCache", function() { return InfiniteCache; });
56914/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
56915/* harmony import */ var _infiniteBlock__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(273);
56916var __extends = (undefined && undefined.__extends) || (function () {
56917 var extendStatics = function (d, b) {
56918 extendStatics = Object.setPrototypeOf ||
56919 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
56920 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
56921 return extendStatics(d, b);
56922 };
56923 return function (d, b) {
56924 extendStatics(d, b);
56925 function __() { this.constructor = d; }
56926 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
56927 };
56928})();
56929var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
56930 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
56931 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
56932 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
56933 return c > 3 && r && Object.defineProperty(target, key, r), r;
56934};
56935var __param = (undefined && undefined.__param) || function (paramIndex, decorator) {
56936 return function (target, key) { decorator(target, key, paramIndex); }
56937};
56938
56939
56940var InfiniteCache = /** @class */ (function (_super) {
56941 __extends(InfiniteCache, _super);
56942 function InfiniteCache(params) {
56943 var _this = _super.call(this) || this;
56944 _this.lastRowIndexKnown = false;
56945 _this.blocks = {};
56946 _this.blockCount = 0;
56947 _this.rowCount = params.initialRowCount;
56948 _this.params = params;
56949 return _this;
56950 }
56951 InfiniteCache.prototype.setBeans = function (loggerFactory) {
56952 this.logger = loggerFactory.create('InfiniteCache');
56953 };
56954 // the rowRenderer will not pass dontCreatePage, meaning when rendering the grid,
56955 // it will want new pages in the cache as it asks for rows. only when we are inserting /
56956 // removing rows via the api is dontCreatePage set, where we move rows between the pages.
56957 InfiniteCache.prototype.getRow = function (rowIndex, dontCreatePage) {
56958 if (dontCreatePage === void 0) { dontCreatePage = false; }
56959 var blockId = Math.floor(rowIndex / this.params.blockSize);
56960 var block = this.blocks[blockId];
56961 if (!block) {
56962 if (dontCreatePage) {
56963 return undefined;
56964 }
56965 block = this.createBlock(blockId);
56966 }
56967 return block.getRow(rowIndex);
56968 };
56969 InfiniteCache.prototype.createBlock = function (blockNumber) {
56970 var newBlock = this.createBean(new _infiniteBlock__WEBPACK_IMPORTED_MODULE_1__["InfiniteBlock"](blockNumber, this, this.params));
56971 this.blocks[newBlock.getId()] = newBlock;
56972 this.blockCount++;
56973 this.purgeBlocksIfNeeded(newBlock);
56974 this.params.rowNodeBlockLoader.addBlock(newBlock);
56975 return newBlock;
56976 };
56977 // we have this on infinite row model only, not server side row model,
56978 // because for server side, it would leave the children in inconsistent
56979 // state - eg if a node had children, but after the refresh it had data
56980 // for a different row, then the children would be with the wrong row node.
56981 InfiniteCache.prototype.refreshCache = function () {
56982 var nothingToRefresh = this.blockCount == 0;
56983 if (nothingToRefresh) {
56984 this.purgeCache();
56985 return;
56986 }
56987 this.getBlocksInOrder().forEach(function (block) { return block.setStateWaitingToLoad(); });
56988 this.params.rowNodeBlockLoader.checkBlockToLoad();
56989 };
56990 InfiniteCache.prototype.destroyAllBlocks = function () {
56991 var _this = this;
56992 this.getBlocksInOrder().forEach(function (block) { return _this.destroyBlock(block); });
56993 };
56994 InfiniteCache.prototype.getRowCount = function () {
56995 return this.rowCount;
56996 };
56997 InfiniteCache.prototype.isLastRowIndexKnown = function () {
56998 return this.lastRowIndexKnown;
56999 };
57000 // block calls this, when page loaded
57001 InfiniteCache.prototype.pageLoaded = function (block, lastRow) {
57002 // if we are not active, then we ignore all events, otherwise we could end up getting the
57003 // grid to refresh even though we are no longer the active cache
57004 if (!this.isAlive()) {
57005 return;
57006 }
57007 this.logger.log("onPageLoaded: page = " + block.getId() + ", lastRow = " + lastRow);
57008 this.checkRowCount(block, lastRow);
57009 // we fire cacheUpdated even if the row count has not changed, as some items need updating even
57010 // if no new rows to render. for example the pagination panel has '?' as the total rows when loading
57011 // is underway, which would need to get updated when loading finishes.
57012 this.onCacheUpdated();
57013 };
57014 InfiniteCache.prototype.purgeBlocksIfNeeded = function (blockToExclude) {
57015 var _this = this;
57016 // we exclude checking for the page just created, as this has yet to be accessed and hence
57017 // the lastAccessed stamp will not be updated for the first time yet
57018 var blocksForPurging = this.getBlocksInOrder().filter(function (b) { return b != blockToExclude; });
57019 var lastAccessedComparator = function (a, b) { return b.getLastAccessed() - a.getLastAccessed(); };
57020 blocksForPurging.sort(lastAccessedComparator);
57021 // we remove (maxBlocksInCache - 1) as we already excluded the 'just created' page.
57022 // in other words, after the splice operation below, we have taken out the blocks
57023 // we want to keep, which means we are left with blocks that we can potentially purge
57024 var maxBlocksProvided = this.params.maxBlocksInCache > 0;
57025 var blocksToKeep = maxBlocksProvided ? this.params.maxBlocksInCache - 1 : null;
57026 var emptyBlocksToKeep = InfiniteCache.MAX_EMPTY_BLOCKS_TO_KEEP - 1;
57027 blocksForPurging.forEach(function (block, index) {
57028 var purgeBecauseBlockEmpty = block.getState() === _infiniteBlock__WEBPACK_IMPORTED_MODULE_1__["InfiniteBlock"].STATE_WAITING_TO_LOAD && index >= emptyBlocksToKeep;
57029 var purgeBecauseCacheFull = maxBlocksProvided ? index >= blocksToKeep : false;
57030 if (purgeBecauseBlockEmpty || purgeBecauseCacheFull) {
57031 // if the block currently has rows been displayed, then don't remove it either.
57032 // this can happen if user has maxBlocks=2, and blockSize=5 (thus 10 max rows in cache)
57033 // but the screen is showing 20 rows, so at least 4 blocks are needed.
57034 if (_this.isBlockCurrentlyDisplayed(block)) {
57035 return;
57036 }
57037 // don't want to loose keyboard focus, so keyboard navigation can continue. so keep focused blocks.
57038 if (_this.isBlockFocused(block)) {
57039 return;
57040 }
57041 // at this point, block is not needed, so burn baby burn
57042 _this.removeBlockFromCache(block);
57043 }
57044 });
57045 };
57046 InfiniteCache.prototype.isBlockFocused = function (block) {
57047 var focusedCell = this.focusService.getFocusCellToUseAfterRefresh();
57048 if (!focusedCell) {
57049 return false;
57050 }
57051 if (focusedCell.rowPinned != null) {
57052 return false;
57053 }
57054 var blockIndexStart = block.getStartRow();
57055 var blockIndexEnd = block.getEndRow();
57056 var hasFocus = focusedCell.rowIndex >= blockIndexStart && focusedCell.rowIndex < blockIndexEnd;
57057 return hasFocus;
57058 };
57059 InfiniteCache.prototype.isBlockCurrentlyDisplayed = function (block) {
57060 var startIndex = block.getStartRow();
57061 var endIndex = block.getEndRow() - 1;
57062 return this.rowRenderer.isRangeInRenderedViewport(startIndex, endIndex);
57063 };
57064 InfiniteCache.prototype.removeBlockFromCache = function (blockToRemove) {
57065 if (!blockToRemove) {
57066 return;
57067 }
57068 this.destroyBlock(blockToRemove);
57069 // we do not want to remove the 'loaded' event listener, as the
57070 // concurrent loads count needs to be updated when the load is complete
57071 // if the purged page is in loading state
57072 };
57073 InfiniteCache.prototype.checkRowCount = function (block, lastRow) {
57074 // if client provided a last row, we always use it, as it could change between server calls
57075 // if user deleted data and then called refresh on the grid.
57076 if (typeof lastRow === 'number' && lastRow >= 0) {
57077 this.rowCount = lastRow;
57078 this.lastRowIndexKnown = true;
57079 }
57080 else if (!this.lastRowIndexKnown) {
57081 // otherwise, see if we need to add some virtual rows
57082 var lastRowIndex = (block.getId() + 1) * this.params.blockSize;
57083 var lastRowIndexPlusOverflow = lastRowIndex + this.params.overflowSize;
57084 if (this.rowCount < lastRowIndexPlusOverflow) {
57085 this.rowCount = lastRowIndexPlusOverflow;
57086 }
57087 }
57088 };
57089 InfiniteCache.prototype.setRowCount = function (rowCount, lastRowIndexKnown) {
57090 this.rowCount = rowCount;
57091 // if undefined is passed, we do not set this value, if one of {true,false}
57092 // is passed, we do set the value.
57093 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].exists(lastRowIndexKnown)) {
57094 this.lastRowIndexKnown = lastRowIndexKnown;
57095 }
57096 // if we are still searching, then the row count must not end at the end
57097 // of a particular page, otherwise the searching will not pop into the
57098 // next page
57099 if (!this.lastRowIndexKnown) {
57100 if (this.rowCount % this.params.blockSize === 0) {
57101 this.rowCount++;
57102 }
57103 }
57104 this.onCacheUpdated();
57105 };
57106 InfiniteCache.prototype.forEachNodeDeep = function (callback) {
57107 var _this = this;
57108 var sequence = new _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["NumberSequence"]();
57109 this.getBlocksInOrder().forEach(function (block) { return block.forEachNode(callback, sequence, _this.rowCount); });
57110 };
57111 InfiniteCache.prototype.getBlocksInOrder = function () {
57112 // get all page id's as NUMBERS (not strings, as we need to sort as numbers) and in descending order
57113 var blockComparator = function (a, b) { return a.getId() - b.getId(); };
57114 var blocks = _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].getAllValuesInObject(this.blocks).sort(blockComparator);
57115 return blocks;
57116 };
57117 InfiniteCache.prototype.destroyBlock = function (block) {
57118 delete this.blocks[block.getId()];
57119 this.destroyBean(block);
57120 this.blockCount--;
57121 this.params.rowNodeBlockLoader.removeBlock(block);
57122 };
57123 // gets called 1) row count changed 2) cache purged 3) items inserted
57124 InfiniteCache.prototype.onCacheUpdated = function () {
57125 if (this.isAlive()) {
57126 // if the virtualRowCount is shortened, then it's possible blocks exist that are no longer
57127 // in the valid range. so we must remove these. this can happen if user explicitly sets
57128 // the virtual row count, or the datasource returns a result and sets lastRow to something
57129 // less than virtualRowCount (can happen if user scrolls down, server reduces dataset size).
57130 this.destroyAllBlocksPastVirtualRowCount();
57131 // this results in both row models (infinite and server side) firing ModelUpdated,
57132 // however server side row model also updates the row indexes first
57133 var event_1 = {
57134 type: _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Events"].EVENT_STORE_UPDATED
57135 };
57136 this.eventService.dispatchEvent(event_1);
57137 }
57138 };
57139 InfiniteCache.prototype.destroyAllBlocksPastVirtualRowCount = function () {
57140 var _this = this;
57141 var blocksToDestroy = [];
57142 this.getBlocksInOrder().forEach(function (block) {
57143 var startRow = block.getId() * _this.params.blockSize;
57144 if (startRow >= _this.rowCount) {
57145 blocksToDestroy.push(block);
57146 }
57147 });
57148 if (blocksToDestroy.length > 0) {
57149 blocksToDestroy.forEach(function (block) { return _this.destroyBlock(block); });
57150 }
57151 };
57152 InfiniteCache.prototype.purgeCache = function () {
57153 var _this = this;
57154 this.getBlocksInOrder().forEach(function (block) { return _this.removeBlockFromCache(block); });
57155 this.lastRowIndexKnown = false;
57156 // if zero rows in the cache, we need to get the SSRM to start asking for rows again.
57157 // otherwise if set to zero rows last time, and we don't update the row count, then after
57158 // the purge there will still be zero rows, meaning the SSRM won't request any rows.
57159 // to kick things off, at least one row needs to be asked for.
57160 if (this.rowCount === 0) {
57161 this.rowCount = this.params.initialRowCount;
57162 }
57163 this.onCacheUpdated();
57164 };
57165 InfiniteCache.prototype.getRowNodesInRange = function (firstInRange, lastInRange) {
57166 var _this = this;
57167 var result = [];
57168 var lastBlockId = -1;
57169 var inActiveRange = false;
57170 var numberSequence = new _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["NumberSequence"]();
57171 // if only one node passed, we start the selection at the top
57172 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].missing(firstInRange)) {
57173 inActiveRange = true;
57174 }
57175 var foundGapInSelection = false;
57176 this.getBlocksInOrder().forEach(function (block) {
57177 if (foundGapInSelection) {
57178 return;
57179 }
57180 if (inActiveRange && (lastBlockId + 1 !== block.getId())) {
57181 foundGapInSelection = true;
57182 return;
57183 }
57184 lastBlockId = block.getId();
57185 block.forEachNode(function (rowNode) {
57186 var hitFirstOrLast = rowNode === firstInRange || rowNode === lastInRange;
57187 if (inActiveRange || hitFirstOrLast) {
57188 result.push(rowNode);
57189 }
57190 if (hitFirstOrLast) {
57191 inActiveRange = !inActiveRange;
57192 }
57193 }, numberSequence, _this.rowCount);
57194 });
57195 // inActiveRange will be still true if we never hit the second rowNode
57196 var invalidRange = foundGapInSelection || inActiveRange;
57197 return invalidRange ? [] : result;
57198 };
57199 // this property says how many empty blocks should be in a cache, eg if scrolls down fast and creates 10
57200 // blocks all for loading, the grid will only load the last 2 - it will assume the blocks the user quickly
57201 // scrolled over are not needed to be loaded.
57202 InfiniteCache.MAX_EMPTY_BLOCKS_TO_KEEP = 2;
57203 __decorate([
57204 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('rowRenderer')
57205 ], InfiniteCache.prototype, "rowRenderer", void 0);
57206 __decorate([
57207 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])("focusService")
57208 ], InfiniteCache.prototype, "focusService", void 0);
57209 __decorate([
57210 __param(0, Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Qualifier"])('loggerFactory'))
57211 ], InfiniteCache.prototype, "setBeans", null);
57212 __decorate([
57213 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["PreDestroy"]
57214 ], InfiniteCache.prototype, "destroyAllBlocks", null);
57215 return InfiniteCache;
57216}(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["BeanStub"]));
57217
57218
57219
57220/***/ }),
57221/* 273 */
57222/***/ (function(module, __webpack_exports__, __webpack_require__) {
57223
57224"use strict";
57225__webpack_require__.r(__webpack_exports__);
57226/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InfiniteBlock", function() { return InfiniteBlock; });
57227/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(3);
57228var __extends = (undefined && undefined.__extends) || (function () {
57229 var extendStatics = function (d, b) {
57230 extendStatics = Object.setPrototypeOf ||
57231 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
57232 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
57233 return extendStatics(d, b);
57234 };
57235 return function (d, b) {
57236 extendStatics(d, b);
57237 function __() { this.constructor = d; }
57238 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
57239 };
57240})();
57241var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
57242 var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
57243 if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
57244 else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
57245 return c > 3 && r && Object.defineProperty(target, key, r), r;
57246};
57247
57248var InfiniteBlock = /** @class */ (function (_super) {
57249 __extends(InfiniteBlock, _super);
57250 function InfiniteBlock(id, parentCache, params) {
57251 var _this = _super.call(this, id) || this;
57252 _this.parentCache = parentCache;
57253 _this.params = params;
57254 // we don't need to calculate these now, as the inputs don't change,
57255 // however it makes the code easier to read if we work them out up front
57256 _this.startRow = id * params.blockSize;
57257 _this.endRow = _this.startRow + params.blockSize;
57258 return _this;
57259 }
57260 InfiniteBlock.prototype.postConstruct = function () {
57261 this.createRowNodes();
57262 };
57263 InfiniteBlock.prototype.getBlockStateJson = function () {
57264 return {
57265 id: '' + this.getId(),
57266 state: {
57267 blockNumber: this.getId(),
57268 startRow: this.getStartRow(),
57269 endRow: this.getEndRow(),
57270 pageStatus: this.getState()
57271 }
57272 };
57273 };
57274 InfiniteBlock.prototype.setDataAndId = function (rowNode, data, index) {
57275 // if there's no id and the rowNode was rendered before, it means this
57276 // was a placeholder rowNode and should not be recycled. Setting
57277 // `alreadyRendered` to `false` forces the rowRenderer to flush it.
57278 if (!rowNode.id && rowNode.alreadyRendered) {
57279 rowNode.alreadyRendered = false;
57280 }
57281 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].exists(data)) {
57282 // this means if the user is not providing id's we just use the
57283 // index for the row. this will allow selection to work (that is based
57284 // on index) as long user is not inserting or deleting rows,
57285 // or wanting to keep selection between server side sorting or filtering
57286 rowNode.setDataAndId(data, index.toString());
57287 }
57288 else {
57289 rowNode.setDataAndId(undefined, undefined);
57290 }
57291 };
57292 InfiniteBlock.prototype.loadFromDatasource = function () {
57293 var _this = this;
57294 var params = this.createLoadParams();
57295 if (_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["_"].missing(this.params.datasource.getRows)) {
57296 console.warn("AG Grid: datasource is missing getRows method");
57297 return;
57298 }
57299 // put in timeout, to force result to be async
57300 window.setTimeout(function () {
57301 _this.params.datasource.getRows(params);
57302 }, 0);
57303 };
57304 InfiniteBlock.prototype.processServerFail = function () {
57305 // todo - this method has better handling in SSRM
57306 };
57307 InfiniteBlock.prototype.createLoadParams = function () {
57308 // PROBLEM . . . . when the user sets sort via colDef.sort, then this code
57309 // is executing before the sort is set up, so server is not getting the sort
57310 // model. need to change with regards order - so the server side request is
57311 // AFTER thus it gets the right sort model.
57312 var params = {
57313 startRow: this.getStartRow(),
57314 endRow: this.getEndRow(),
57315 successCallback: this.pageLoaded.bind(this, this.getVersion()),
57316 failCallback: this.pageLoadFailed.bind(this, this.getVersion()),
57317 sortModel: this.params.sortModel,
57318 filterModel: this.params.filterModel,
57319 context: this.gridOptionsWrapper.getContext()
57320 };
57321 return params;
57322 };
57323 InfiniteBlock.prototype.forEachNode = function (callback, sequence, rowCount) {
57324 var _this = this;
57325 this.rowNodes.forEach(function (rowNode, index) {
57326 var rowIndex = _this.startRow + index;
57327 if (rowIndex < rowCount) {
57328 callback(rowNode, sequence.next());
57329 }
57330 });
57331 };
57332 InfiniteBlock.prototype.getLastAccessed = function () {
57333 return this.lastAccessed;
57334 };
57335 InfiniteBlock.prototype.getRow = function (rowIndex, dontTouchLastAccessed) {
57336 if (dontTouchLastAccessed === void 0) { dontTouchLastAccessed = false; }
57337 if (!dontTouchLastAccessed) {
57338 this.lastAccessed = this.params.lastAccessedSequence.next();
57339 }
57340 var localIndex = rowIndex - this.startRow;
57341 return this.rowNodes[localIndex];
57342 };
57343 InfiniteBlock.prototype.getStartRow = function () {
57344 return this.startRow;
57345 };
57346 InfiniteBlock.prototype.getEndRow = function () {
57347 return this.endRow;
57348 };
57349 // creates empty row nodes, data is missing as not loaded yet
57350 InfiniteBlock.prototype.createRowNodes = function () {
57351 this.rowNodes = [];
57352 for (var i = 0; i < this.params.blockSize; i++) {
57353 var rowIndex = this.startRow + i;
57354 var rowNode = new _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["RowNode"](this.beans);
57355 rowNode.setRowHeight(this.params.rowHeight);
57356 rowNode.uiLevel = 0;
57357 rowNode.setRowIndex(rowIndex);
57358 rowNode.setRowTop(this.params.rowHeight * rowIndex);
57359 this.rowNodes.push(rowNode);
57360 }
57361 };
57362 InfiniteBlock.prototype.processServerResult = function (params) {
57363 var _this = this;
57364 this.rowNodes.forEach(function (rowNode, index) {
57365 var data = params.rowData ? params.rowData[index] : undefined;
57366 _this.setDataAndId(rowNode, data, _this.startRow + index);
57367 });
57368 var finalRowCount = params.rowCount != null && params.rowCount >= 0 ? params.rowCount : undefined;
57369 this.parentCache.pageLoaded(this, finalRowCount);
57370 };
57371 InfiniteBlock.prototype.destroyRowNodes = function () {
57372 this.rowNodes.forEach(function (rowNode) {
57373 // this is needed, so row render knows to fade out the row, otherwise it
57374 // sees row top is present, and thinks the row should be shown.
57375 rowNode.clearRowTopAndRowIndex();
57376 });
57377 };
57378 __decorate([
57379 Object(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["Autowired"])('beans')
57380 ], InfiniteBlock.prototype, "beans", void 0);
57381 __decorate([
57382 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["PostConstruct"]
57383 ], InfiniteBlock.prototype, "postConstruct", null);
57384 __decorate([
57385 _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["PreDestroy"]
57386 ], InfiniteBlock.prototype, "destroyRowNodes", null);
57387 return InfiniteBlock;
57388}(_ag_grid_community_core__WEBPACK_IMPORTED_MODULE_0__["RowNodeBlock"]));
57389
57390
57391
57392/***/ }),
57393/* 274 */
57394/***/ (function(module, __webpack_exports__, __webpack_require__) {
57395
57396"use strict";
57397__webpack_require__.r(__webpack_exports__);
57398/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AllCommunityModules", function() { return AllCommunityModules; });
57399/* harmony import */ var _ag_grid_community_client_side_row_model__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);
57400/* harmony import */ var _ag_grid_community_infinite_row_model__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(269);
57401/* harmony import */ var _ag_grid_community_csv_export__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(259);
57402/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ClientSideRowModelModule", function() { return _ag_grid_community_client_side_row_model__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelModule"]; });
57403
57404/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BaseCreator", function() { return _ag_grid_community_csv_export__WEBPACK_IMPORTED_MODULE_2__["BaseCreator"]; });
57405
57406/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BaseGridSerializingSession", function() { return _ag_grid_community_csv_export__WEBPACK_IMPORTED_MODULE_2__["BaseGridSerializingSession"]; });
57407
57408/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CsvCreator", function() { return _ag_grid_community_csv_export__WEBPACK_IMPORTED_MODULE_2__["CsvCreator"]; });
57409
57410/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CsvExportModule", function() { return _ag_grid_community_csv_export__WEBPACK_IMPORTED_MODULE_2__["CsvExportModule"]; });
57411
57412/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Downloader", function() { return _ag_grid_community_csv_export__WEBPACK_IMPORTED_MODULE_2__["Downloader"]; });
57413
57414/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridSerializer", function() { return _ag_grid_community_csv_export__WEBPACK_IMPORTED_MODULE_2__["GridSerializer"]; });
57415
57416/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowType", function() { return _ag_grid_community_csv_export__WEBPACK_IMPORTED_MODULE_2__["RowType"]; });
57417
57418/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "XmlFactory", function() { return _ag_grid_community_csv_export__WEBPACK_IMPORTED_MODULE_2__["XmlFactory"]; });
57419
57420/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ZipContainer", function() { return _ag_grid_community_csv_export__WEBPACK_IMPORTED_MODULE_2__["ZipContainer"]; });
57421
57422/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "InfiniteRowModelModule", function() { return _ag_grid_community_infinite_row_model__WEBPACK_IMPORTED_MODULE_1__["InfiniteRowModelModule"]; });
57423
57424/* harmony import */ var _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);
57425/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColumnFactory", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ColumnFactory"]; });
57426
57427/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColumnModel", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ColumnModel"]; });
57428
57429/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColumnKeyCreator", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ColumnKeyCreator"]; });
57430
57431/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColumnUtils", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ColumnUtils"]; });
57432
57433/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DisplayedGroupCreator", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["DisplayedGroupCreator"]; });
57434
57435/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GroupInstanceIdCreator", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["GroupInstanceIdCreator"]; });
57436
57437/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ComponentUtil", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ComponentUtil"]; });
57438
57439/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgStackComponentsRegistry", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgStackComponentsRegistry"]; });
57440
57441/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColDefUtil", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ColDefUtil"]; });
57442
57443/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "UserComponentRegistry", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["UserComponentRegistry"]; });
57444
57445/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "UserComponentFactory", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["UserComponentFactory"]; });
57446
57447/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BeanStub", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["BeanStub"]; });
57448
57449/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Context", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Context"]; });
57450
57451/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Autowired", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Autowired"]; });
57452
57453/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PostConstruct", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["PostConstruct"]; });
57454
57455/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PreConstruct", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["PreConstruct"]; });
57456
57457/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Optional", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Optional"]; });
57458
57459/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Bean", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Bean"]; });
57460
57461/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Qualifier", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Qualifier"]; });
57462
57463/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PreDestroy", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["PreDestroy"]; });
57464
57465/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "QuerySelector", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["QuerySelector"]; });
57466
57467/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RefSelector", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RefSelector"]; });
57468
57469/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ExcelFactoryMode", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ExcelFactoryMode"]; });
57470
57471/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragAndDropService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["DragAndDropService"]; });
57472
57473/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragSourceType", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["DragSourceType"]; });
57474
57475/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HorizontalDirection", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HorizontalDirection"]; });
57476
57477/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VerticalDirection", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["VerticalDirection"]; });
57478
57479/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DragService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["DragService"]; });
57480
57481/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Column", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Column"]; });
57482
57483/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColumnGroup", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ColumnGroup"]; });
57484
57485/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ProvidedColumnGroup", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ProvidedColumnGroup"]; });
57486
57487/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowNode", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RowNode"]; });
57488
57489/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowHighlightPosition", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RowHighlightPosition"]; });
57490
57491/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "FilterManager", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["FilterManager"]; });
57492
57493/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ProvidedFilter", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ProvidedFilter"]; });
57494
57495/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SimpleFilter", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["SimpleFilter"]; });
57496
57497/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ScalarFilter", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ScalarFilter"]; });
57498
57499/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NumberFilter", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["NumberFilter"]; });
57500
57501/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TextFilter", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["TextFilter"]; });
57502
57503/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DateFilter", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["DateFilter"]; });
57504
57505/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TextFloatingFilter", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["TextFloatingFilter"]; });
57506
57507/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderFilterCellComp", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HeaderFilterCellComp"]; });
57508
57509/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "FloatingFilterMapper", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["FloatingFilterMapper"]; });
57510
57511/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridBodyComp", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["GridBodyComp"]; });
57512
57513/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridBodyCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["GridBodyCtrl"]; });
57514
57515/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowAnimationCssClasses", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RowAnimationCssClasses"]; });
57516
57517/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ScrollVisibleService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ScrollVisibleService"]; });
57518
57519/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MouseEventService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["MouseEventService"]; });
57520
57521/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NavigationService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["NavigationService"]; });
57522
57523/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowContainerComp", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RowContainerComp"]; });
57524
57525/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowContainerName", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RowContainerName"]; });
57526
57527/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowContainerCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RowContainerCtrl"]; });
57528
57529/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowContainerType", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RowContainerType"]; });
57530
57531/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getRowContainerTypeForName", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["getRowContainerTypeForName"]; });
57532
57533/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BodyDropPivotTarget", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["BodyDropPivotTarget"]; });
57534
57535/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BodyDropTarget", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["BodyDropTarget"]; });
57536
57537/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CssClassApplier", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["CssClassApplier"]; });
57538
57539/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderRowContainerComp", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HeaderRowContainerComp"]; });
57540
57541/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridHeaderComp", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["GridHeaderComp"]; });
57542
57543/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridHeaderCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["GridHeaderCtrl"]; });
57544
57545/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderRowComp", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HeaderRowComp"]; });
57546
57547/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderRowType", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HeaderRowType"]; });
57548
57549/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderRowCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HeaderRowCtrl"]; });
57550
57551/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderCellCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HeaderCellCtrl"]; });
57552
57553/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderFilterCellCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HeaderFilterCellCtrl"]; });
57554
57555/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderGroupCellCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HeaderGroupCellCtrl"]; });
57556
57557/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AbstractHeaderCellCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AbstractHeaderCellCtrl"]; });
57558
57559/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderRowContainerCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HeaderRowContainerCtrl"]; });
57560
57561/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HorizontalResizeService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HorizontalResizeService"]; });
57562
57563/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MoveColumnFeature", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["MoveColumnFeature"]; });
57564
57565/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "StandardMenuFactory", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["StandardMenuFactory"]; });
57566
57567/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TabbedLayout", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["TabbedLayout"]; });
57568
57569/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "simpleHttpRequest", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["simpleHttpRequest"]; });
57570
57571/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ResizeObserverService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ResizeObserverService"]; });
57572
57573/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AnimationFrameService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AnimationFrameService"]; });
57574
57575/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "LargeTextCellEditor", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["LargeTextCellEditor"]; });
57576
57577/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PopupEditorWrapper", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["PopupEditorWrapper"]; });
57578
57579/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PopupSelectCellEditor", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["PopupSelectCellEditor"]; });
57580
57581/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PopupTextCellEditor", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["PopupTextCellEditor"]; });
57582
57583/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SelectCellEditor", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["SelectCellEditor"]; });
57584
57585/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TextCellEditor", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["TextCellEditor"]; });
57586
57587/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Beans", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Beans"]; });
57588
57589/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AnimateShowChangeCellRenderer", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AnimateShowChangeCellRenderer"]; });
57590
57591/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AnimateSlideCellRenderer", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AnimateSlideCellRenderer"]; });
57592
57593/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GroupCellRenderer", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["GroupCellRenderer"]; });
57594
57595/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GroupCellRendererCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["GroupCellRendererCtrl"]; });
57596
57597/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SetLeftFeature", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["SetLeftFeature"]; });
57598
57599/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PositionableFeature", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["PositionableFeature"]; });
57600
57601/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AutoWidthCalculator", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AutoWidthCalculator"]; });
57602
57603/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CheckboxSelectionComponent", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["CheckboxSelectionComponent"]; });
57604
57605/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CellComp", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["CellComp"]; });
57606
57607/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CellCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["CellCtrl"]; });
57608
57609/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RowCtrl"]; });
57610
57611/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowRenderer", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RowRenderer"]; });
57612
57613/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ValueFormatterService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ValueFormatterService"]; });
57614
57615/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PinnedRowModel", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["PinnedRowModel"]; });
57616
57617/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ServerSideTransactionResultStatus", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ServerSideTransactionResultStatus"]; });
57618
57619/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ChangedPath", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ChangedPath"]; });
57620
57621/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowNodeBlock", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RowNodeBlock"]; });
57622
57623/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowNodeBlockLoader", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RowNodeBlockLoader"]; });
57624
57625/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PaginationProxy", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["PaginationProxy"]; });
57626
57627/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ClientSideRowModelSteps", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ClientSideRowModelSteps"]; });
57628
57629/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "StylingService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["StylingService"]; });
57630
57631/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "LayoutCssClasses", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["LayoutCssClasses"]; });
57632
57633/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgAbstractField", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgAbstractField"]; });
57634
57635/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgCheckbox", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgCheckbox"]; });
57636
57637/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgRadioButton", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgRadioButton"]; });
57638
57639/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgToggleButton", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgToggleButton"]; });
57640
57641/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgInputTextField", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgInputTextField"]; });
57642
57643/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgInputTextArea", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgInputTextArea"]; });
57644
57645/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgInputNumberField", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgInputNumberField"]; });
57646
57647/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgInputRange", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgInputRange"]; });
57648
57649/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgSelect", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgSelect"]; });
57650
57651/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgSlider", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgSlider"]; });
57652
57653/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgAngleSelect", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgAngleSelect"]; });
57654
57655/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgColorPicker", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgColorPicker"]; });
57656
57657/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgGroupComponent", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgGroupComponent"]; });
57658
57659/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgMenuItemComponent", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgMenuItemComponent"]; });
57660
57661/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgMenuList", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgMenuList"]; });
57662
57663/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgMenuPanel", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgMenuPanel"]; });
57664
57665/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgDialog", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgDialog"]; });
57666
57667/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgPanel", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgPanel"]; });
57668
57669/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Component", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Component"]; });
57670
57671/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CssClassManager", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["CssClassManager"]; });
57672
57673/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ManagedFocusFeature", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ManagedFocusFeature"]; });
57674
57675/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TabGuardComp", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["TabGuardComp"]; });
57676
57677/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TabGuardCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["TabGuardCtrl"]; });
57678
57679/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PopupComponent", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["PopupComponent"]; });
57680
57681/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PopupService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["PopupService"]; });
57682
57683/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TouchListener", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["TouchListener"]; });
57684
57685/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VirtualList", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["VirtualList"]; });
57686
57687/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CellRangeType", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["CellRangeType"]; });
57688
57689/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SelectionHandleType", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["SelectionHandleType"]; });
57690
57691/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AutoScrollService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AutoScrollService"]; });
57692
57693/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VanillaFrameworkOverrides", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["VanillaFrameworkOverrides"]; });
57694
57695/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CellNavigationService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["CellNavigationService"]; });
57696
57697/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AlignedGridsService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AlignedGridsService"]; });
57698
57699/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Constants", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Constants"]; });
57700
57701/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "KeyCode", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["KeyCode"]; });
57702
57703/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Grid", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Grid"]; });
57704
57705/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridCoreCreator", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["GridCoreCreator"]; });
57706
57707/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridApi", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["GridApi"]; });
57708
57709/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Events", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Events"]; });
57710
57711/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "FocusService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["FocusService"]; });
57712
57713/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defaultGroupComparator", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["defaultGroupComparator"]; });
57714
57715/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridOptionsWrapper", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["GridOptionsWrapper"]; });
57716
57717/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EventService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["EventService"]; });
57718
57719/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SelectableService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["SelectableService"]; });
57720
57721/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowNodeSorter", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RowNodeSorter"]; });
57722
57723/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CtrlsService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["CtrlsService"]; });
57724
57725/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridComp", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["GridComp"]; });
57726
57727/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GridCtrl", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["GridCtrl"]; });
57728
57729/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Logger", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Logger"]; });
57730
57731/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "LoggerFactory", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["LoggerFactory"]; });
57732
57733/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SelectionService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["SelectionService"]; });
57734
57735/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SortController", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["SortController"]; });
57736
57737/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TemplateService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["TemplateService"]; });
57738
57739/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Color", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Color"]; });
57740
57741/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "stringToArray", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["stringToArray"]; });
57742
57743/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "_", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["_"]; });
57744
57745/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NumberSequence", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["NumberSequence"]; });
57746
57747/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgPromiseStatus", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgPromiseStatus"]; });
57748
57749/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AgPromise", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["AgPromise"]; });
57750
57751/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Timer", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Timer"]; });
57752
57753/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ValueService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ValueService"]; });
57754
57755/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ValueCache", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ValueCache"]; });
57756
57757/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ExpressionService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ExpressionService"]; });
57758
57759/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CellPositionUtils", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["CellPositionUtils"]; });
57760
57761/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RowPositionUtils", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["RowPositionUtils"]; });
57762
57763/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderPositionUtils", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HeaderPositionUtils"]; });
57764
57765/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderNavigationService", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HeaderNavigationService"]; });
57766
57767/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "HeaderNavigationDirection", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["HeaderNavigationDirection"]; });
57768
57769/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "PropertyKeys", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["PropertyKeys"]; });
57770
57771/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ColumnApi", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ColumnApi"]; });
57772
57773/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BaseComponentWrapper", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["BaseComponentWrapper"]; });
57774
57775/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Environment", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["Environment"]; });
57776
57777/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CustomTooltipFeature", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["CustomTooltipFeature"]; });
57778
57779/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BarColumnLabelPlacement", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["BarColumnLabelPlacement"]; });
57780
57781/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ModuleNames", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ModuleNames"]; });
57782
57783/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ModuleRegistry", function() { return _ag_grid_community_core__WEBPACK_IMPORTED_MODULE_3__["ModuleRegistry"]; });
57784
57785
57786
57787
57788var AllCommunityModules = [_ag_grid_community_client_side_row_model__WEBPACK_IMPORTED_MODULE_0__["ClientSideRowModelModule"], _ag_grid_community_infinite_row_model__WEBPACK_IMPORTED_MODULE_1__["InfiniteRowModelModule"], _ag_grid_community_csv_export__WEBPACK_IMPORTED_MODULE_2__["CsvExportModule"]];
57789
57790
57791
57792
57793
57794
57795/***/ }),
57796/* 275 */
57797/***/ (function(module, exports, __webpack_require__) {
57798
57799var api = __webpack_require__(276);
57800 var content = __webpack_require__(277);
57801
57802 content = content.__esModule ? content.default : content;
57803
57804 if (typeof content === 'string') {
57805 content = [[module.i, content, '']];
57806 }
57807
57808var options = {};
57809
57810options.insert = "head";
57811options.singleton = false;
57812
57813var update = api(content, options);
57814
57815
57816
57817module.exports = content.locals || {};
57818
57819/***/ }),
57820/* 276 */
57821/***/ (function(module, exports, __webpack_require__) {
57822
57823"use strict";
57824
57825
57826var isOldIE = function isOldIE() {
57827 var memo;
57828 return function memorize() {
57829 if (typeof memo === 'undefined') {
57830 // Test for IE <= 9 as proposed by Browserhacks
57831 // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805
57832 // Tests for existence of standard globals is to allow style-loader
57833 // to operate correctly into non-standard environments
57834 // @see https://github.com/webpack-contrib/style-loader/issues/177
57835 memo = Boolean(window && document && document.all && !window.atob);
57836 }
57837
57838 return memo;
57839 };
57840}();
57841
57842var getTarget = function getTarget() {
57843 var memo = {};
57844 return function memorize(target) {
57845 if (typeof memo[target] === 'undefined') {
57846 var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself
57847
57848 if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
57849 try {
57850 // This will throw an exception if access to iframe is blocked
57851 // due to cross-origin restrictions
57852 styleTarget = styleTarget.contentDocument.head;
57853 } catch (e) {
57854 // istanbul ignore next
57855 styleTarget = null;
57856 }
57857 }
57858
57859 memo[target] = styleTarget;
57860 }
57861
57862 return memo[target];
57863 };
57864}();
57865
57866var stylesInDom = [];
57867
57868function getIndexByIdentifier(identifier) {
57869 var result = -1;
57870
57871 for (var i = 0; i < stylesInDom.length; i++) {
57872 if (stylesInDom[i].identifier === identifier) {
57873 result = i;
57874 break;
57875 }
57876 }
57877
57878 return result;
57879}
57880
57881function modulesToDom(list, options) {
57882 var idCountMap = {};
57883 var identifiers = [];
57884
57885 for (var i = 0; i < list.length; i++) {
57886 var item = list[i];
57887 var id = options.base ? item[0] + options.base : item[0];
57888 var count = idCountMap[id] || 0;
57889 var identifier = "".concat(id, " ").concat(count);
57890 idCountMap[id] = count + 1;
57891 var index = getIndexByIdentifier(identifier);
57892 var obj = {
57893 css: item[1],
57894 media: item[2],
57895 sourceMap: item[3]
57896 };
57897
57898 if (index !== -1) {
57899 stylesInDom[index].references++;
57900 stylesInDom[index].updater(obj);
57901 } else {
57902 stylesInDom.push({
57903 identifier: identifier,
57904 updater: addStyle(obj, options),
57905 references: 1
57906 });
57907 }
57908
57909 identifiers.push(identifier);
57910 }
57911
57912 return identifiers;
57913}
57914
57915function insertStyleElement(options) {
57916 var style = document.createElement('style');
57917 var attributes = options.attributes || {};
57918
57919 if (typeof attributes.nonce === 'undefined') {
57920 var nonce = true ? __webpack_require__.nc : undefined;
57921
57922 if (nonce) {
57923 attributes.nonce = nonce;
57924 }
57925 }
57926
57927 Object.keys(attributes).forEach(function (key) {
57928 style.setAttribute(key, attributes[key]);
57929 });
57930
57931 if (typeof options.insert === 'function') {
57932 options.insert(style);
57933 } else {
57934 var target = getTarget(options.insert || 'head');
57935
57936 if (!target) {
57937 throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
57938 }
57939
57940 target.appendChild(style);
57941 }
57942
57943 return style;
57944}
57945
57946function removeStyleElement(style) {
57947 // istanbul ignore if
57948 if (style.parentNode === null) {
57949 return false;
57950 }
57951
57952 style.parentNode.removeChild(style);
57953}
57954/* istanbul ignore next */
57955
57956
57957var replaceText = function replaceText() {
57958 var textStore = [];
57959 return function replace(index, replacement) {
57960 textStore[index] = replacement;
57961 return textStore.filter(Boolean).join('\n');
57962 };
57963}();
57964
57965function applyToSingletonTag(style, index, remove, obj) {
57966 var css = remove ? '' : obj.media ? "@media ".concat(obj.media, " {").concat(obj.css, "}") : obj.css; // For old IE
57967
57968 /* istanbul ignore if */
57969
57970 if (style.styleSheet) {
57971 style.styleSheet.cssText = replaceText(index, css);
57972 } else {
57973 var cssNode = document.createTextNode(css);
57974 var childNodes = style.childNodes;
57975
57976 if (childNodes[index]) {
57977 style.removeChild(childNodes[index]);
57978 }
57979
57980 if (childNodes.length) {
57981 style.insertBefore(cssNode, childNodes[index]);
57982 } else {
57983 style.appendChild(cssNode);
57984 }
57985 }
57986}
57987
57988function applyToTag(style, options, obj) {
57989 var css = obj.css;
57990 var media = obj.media;
57991 var sourceMap = obj.sourceMap;
57992
57993 if (media) {
57994 style.setAttribute('media', media);
57995 } else {
57996 style.removeAttribute('media');
57997 }
57998
57999 if (sourceMap && typeof btoa !== 'undefined') {
58000 css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */");
58001 } // For old IE
58002
58003 /* istanbul ignore if */
58004
58005
58006 if (style.styleSheet) {
58007 style.styleSheet.cssText = css;
58008 } else {
58009 while (style.firstChild) {
58010 style.removeChild(style.firstChild);
58011 }
58012
58013 style.appendChild(document.createTextNode(css));
58014 }
58015}
58016
58017var singleton = null;
58018var singletonCounter = 0;
58019
58020function addStyle(obj, options) {
58021 var style;
58022 var update;
58023 var remove;
58024
58025 if (options.singleton) {
58026 var styleIndex = singletonCounter++;
58027 style = singleton || (singleton = insertStyleElement(options));
58028 update = applyToSingletonTag.bind(null, style, styleIndex, false);
58029 remove = applyToSingletonTag.bind(null, style, styleIndex, true);
58030 } else {
58031 style = insertStyleElement(options);
58032 update = applyToTag.bind(null, style, options);
58033
58034 remove = function remove() {
58035 removeStyleElement(style);
58036 };
58037 }
58038
58039 update(obj);
58040 return function updateStyle(newObj) {
58041 if (newObj) {
58042 if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {
58043 return;
58044 }
58045
58046 update(obj = newObj);
58047 } else {
58048 remove();
58049 }
58050 };
58051}
58052
58053module.exports = function (list, options) {
58054 options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
58055 // tags it will allow on a page
58056
58057 if (!options.singleton && typeof options.singleton !== 'boolean') {
58058 options.singleton = isOldIE();
58059 }
58060
58061 list = list || [];
58062 var lastIdentifiers = modulesToDom(list, options);
58063 return function update(newList) {
58064 newList = newList || [];
58065
58066 if (Object.prototype.toString.call(newList) !== '[object Array]') {
58067 return;
58068 }
58069
58070 for (var i = 0; i < lastIdentifiers.length; i++) {
58071 var identifier = lastIdentifiers[i];
58072 var index = getIndexByIdentifier(identifier);
58073 stylesInDom[index].references--;
58074 }
58075
58076 var newLastIdentifiers = modulesToDom(newList, options);
58077
58078 for (var _i = 0; _i < lastIdentifiers.length; _i++) {
58079 var _identifier = lastIdentifiers[_i];
58080
58081 var _index = getIndexByIdentifier(_identifier);
58082
58083 if (stylesInDom[_index].references === 0) {
58084 stylesInDom[_index].updater();
58085
58086 stylesInDom.splice(_index, 1);
58087 }
58088 }
58089
58090 lastIdentifiers = newLastIdentifiers;
58091 };
58092};
58093
58094/***/ }),
58095/* 277 */
58096/***/ (function(module, exports, __webpack_require__) {
58097
58098// Imports
58099var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58100exports = ___CSS_LOADER_API_IMPORT___(false);
58101// Module
58102exports.push([module.i, "/**\n ****************************\n * Generic Styles\n ****************************\n*/\nag-grid, ag-grid-angular, ag-grid-ng2, ag-grid-polymer, ag-grid-aurelia {\n display: block;\n}\n\n.ag-hidden {\n display: none !important;\n}\n\n.ag-invisible {\n visibility: hidden !important;\n}\n\n.ag-drag-handle {\n cursor: -webkit-grab;\n cursor: grab;\n}\n\n.ag-column-drop-wrapper {\n display: -webkit-box;\n display: flex;\n}\n\n.ag-column-drop-horizontal-half-width {\n display: inline-block;\n width: 50% !important;\n}\n\n.ag-unselectable {\n -moz-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n}\n\n.ag-selectable {\n -moz-user-select: text;\n -webkit-user-select: text;\n user-select: text;\n}\n\n.ag-tab {\n position: relative;\n}\n\n.ag-tab-guard {\n position: absolute;\n width: 0;\n height: 0;\n display: block;\n}\n\n.ag-select-agg-func-popup {\n position: absolute;\n}\n\n.ag-input-wrapper, .ag-picker-field-wrapper {\n display: -webkit-box;\n display: flex;\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n -webkit-box-align: center;\n align-items: center;\n line-height: normal;\n position: relative;\n}\n\n.ag-shake-left-to-right {\n -webkit-animation-direction: alternate;\n animation-direction: alternate;\n -webkit-animation-duration: 0.2s;\n animation-duration: 0.2s;\n -webkit-animation-iteration-count: infinite;\n animation-iteration-count: infinite;\n -webkit-animation-name: ag-shake-left-to-right;\n animation-name: ag-shake-left-to-right;\n}\n\n@-webkit-keyframes ag-shake-left-to-right {\n from {\n padding-left: 6px;\n padding-right: 2px;\n }\n to {\n padding-left: 2px;\n padding-right: 6px;\n }\n}\n\n@keyframes ag-shake-left-to-right {\n from {\n padding-left: 6px;\n padding-right: 2px;\n }\n to {\n padding-left: 2px;\n padding-right: 6px;\n }\n}\n.ag-root-wrapper {\n cursor: default;\n position: relative;\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n overflow: hidden;\n}\n.ag-root-wrapper.ag-layout-normal {\n height: 100%;\n}\n\n.ag-watermark {\n position: absolute;\n bottom: 20px;\n right: 25px;\n opacity: 0.5;\n -webkit-transition: opacity 1s ease-out 3s;\n transition: opacity 1s ease-out 3s;\n}\n.ag-watermark::before {\n content: \"\";\n background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDIzNSA0MCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxuczpzZXJpZj0iaHR0cDovL3d3dy5zZXJpZi5jb20vIiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjI7Ij4KICAgIDxnIHRyYW5zZm9ybT0ibWF0cml4KDAuNjM1NzIzLDAsMCwwLjYzNTcyMywtNDkyLjkyMSwtMzIzLjYwOCkiPgogICAgICAgIDxwYXRoIGQ9Ik0xMDk5LjQsNTQ5LjRMMTA5OS40LDUzNi45TDEwNzguMSw1MzYuOUwxMDY1LjYsNTQ5LjRMMTA5OS40LDU0OS40WiIgc3R5bGU9ImZpbGw6cmdiKDI0LDI5LDMxKTtmaWxsLXJ1bGU6bm9uemVybzsiLz4KICAgICAgICA8cGF0aCBkPSJNMTEyMy40LDUxOC40TDEwOTYuNyw1MTguNEwxMDg0LjEsNTMwLjlMMTEyMy40LDUzMC45TDExMjMuNCw1MTguNFoiIHN0eWxlPSJmaWxsOnJnYigyNCwyOSwzMSk7ZmlsbC1ydWxlOm5vbnplcm87Ii8+CiAgICAgICAgPHBhdGggZD0iTTEwNTMuMiw1NjEuOUwxMDU5LjYsNTU1LjVMMTA4MS4yLDU1NS41TDEwODEuMiw1NjhMMTA1My4yLDU2OEwxMDUzLjIsNTYxLjlaIiBzdHlsZT0iZmlsbDpyZ2IoMjQsMjksMzEpO2ZpbGwtcnVsZTpub256ZXJvOyIvPgogICAgICAgIDxwYXRoIGQ9Ik0xMDU3LjksNTQzLjNMMTA3MS43LDU0My4zTDEwODQuMyw1MzAuOEwxMDU3LjksNTMwLjhMMTA1Ny45LDU0My4zWiIgc3R5bGU9ImZpbGw6cmdiKDI0LDI5LDMxKTtmaWxsLXJ1bGU6bm9uemVybzsiLz4KICAgICAgICA8cGF0aCBkPSJNMTA0Mi44LDU2MS45TDEwNTMuMiw1NjEuOUwxMDY1LjYsNTQ5LjRMMTA0Mi44LDU0OS40TDEwNDIuOCw1NjEuOVoiIHN0eWxlPSJmaWxsOnJnYigyNCwyOSwzMSk7ZmlsbC1ydWxlOm5vbnplcm87Ii8+CiAgICAgICAgPHBhdGggZD0iTTEwOTYuNyw1MTguNEwxMDkwLjMsNTI0LjhMMTA0OS41LDUyNC44TDEwNDkuNSw1MTIuM0wxMDk2LjcsNTEyLjNMMTA5Ni43LDUxOC40WiIgc3R5bGU9ImZpbGw6cmdiKDI0LDI5LDMxKTtmaWxsLXJ1bGU6bm9uemVybzsiLz4KICAgICAgICA8cGF0aCBkPSJNODI4LjYsNTU5LjdMODA5LDU1OS43TDgwNS42LDU2OC4xTDc5Nyw1NjguMUw4MTUuMSw1MjUuN0w4MjIuNiw1MjUuN0w4NDAuNyw1NjguMUw4MzIsNTY4LjFMODI4LjYsNTU5LjdaTTgyNS45LDU1M0w4MTguOCw1MzUuN0w4MTEuNyw1NTNMODI1LjksNTUzWiIgc3R5bGU9ImZpbGw6cmdiKDI0LDI5LDMxKTtmaWxsLXJ1bGU6bm9uemVybzsiLz4KICAgICAgICA8cGF0aCBkPSJNOTYwLjEsNTQxLjNDOTYyLjYsNTM3LjYgOTY4LjksNTM3LjIgOTcxLjUsNTM3LjJMOTcxLjUsNTQ0LjRDOTY4LjMsNTQ0LjQgOTY1LjEsNTQ0LjUgOTYzLjIsNTQ1LjlDOTYxLjMsNTQ3LjMgOTYwLjMsNTQ5LjIgOTYwLjMsNTUxLjVMOTYwLjMsNTY4LjFMOTUyLjUsNTY4LjFMOTUyLjUsNTM3LjJMOTYwLDUzNy4yTDk2MC4xLDU0MS4zWiIgc3R5bGU9ImZpbGw6cmdiKDI0LDI5LDMxKTtmaWxsLXJ1bGU6bm9uemVybzsiLz4KICAgICAgICA8cmVjdCB4PSI5NzUuOCIgeT0iNTM3LjIiIHdpZHRoPSI3LjgiIGhlaWdodD0iMzAuOSIgc3R5bGU9ImZpbGw6cmdiKDI0LDI5LDMxKTsiLz4KICAgICAgICA8cmVjdCB4PSI5NzUuOCIgeT0iNTIzLjQiIHdpZHRoPSI3LjgiIGhlaWdodD0iOS4yIiBzdHlsZT0iZmlsbDpyZ2IoMjQsMjksMzEpOyIvPgogICAgICAgIDxwYXRoIGQ9Ik0xMDIyLjMsNTIzLjRMMTAyMi4zLDU2OC4xTDEwMTQuOCw1NjguMUwxMDE0LjYsNTYzLjRDMTAxMy41LDU2NSAxMDEyLjEsNTY2LjMgMTAxMC40LDU2Ny4zQzEwMDguNyw1NjguMiAxMDA2LjYsNTY4LjcgMTAwNC4yLDU2OC43QzEwMDIuMSw1NjguNyAxMDAwLjEsNTY4LjMgOTk4LjQsNTY3LjZDOTk2LjYsNTY2LjggOTk1LDU2NS44IDk5My43LDU2NC40Qzk5Mi40LDU2MyA5OTEuMyw1NjEuMyA5OTAuNiw1NTkuNEM5ODkuOCw1NTcuNSA5ODkuNSw1NTUuMyA5ODkuNSw1NTIuOUM5ODkuNSw1NTAuNSA5ODkuOSw1NDguMyA5OTAuNiw1NDYuM0M5OTEuNCw1NDQuMyA5OTIuNCw1NDIuNiA5OTMuNyw1NDEuMkM5OTUsNTM5LjggOTk2LjYsNTM4LjcgOTk4LjQsNTM3LjlDMTAwMC4yLDUzNy4xIDEwMDIuMSw1MzYuNyAxMDA0LjIsNTM2LjdDMTAwNi42LDUzNi43IDEwMDguNiw1MzcuMSAxMDEwLjMsNTM4QzEwMTIsNTM4LjkgMTAxMy40LDU0MC4xIDEwMTQuNSw1NDEuOEwxMDE0LjUsNTIzLjVMMTAyMi4zLDUyMy41TDEwMjIuMyw1MjMuNFpNMTAwNS45LDU2MkMxMDA4LjUsNTYyIDEwMTAuNSw1NjEuMSAxMDEyLjEsNTU5LjRDMTAxMy43LDU1Ny43IDEwMTQuNSw1NTUuNCAxMDE0LjUsNTUyLjZDMTAxNC41LDU0OS44IDEwMTMuNyw1NDcuNiAxMDEyLjEsNTQ1LjhDMTAxMC41LDU0NC4xIDEwMDguNSw1NDMuMiAxMDA1LjksNTQzLjJDMTAwMy40LDU0My4yIDEwMDEuMyw1NDQuMSA5OTkuOCw1NDUuOEM5OTguMiw1NDcuNSA5OTcuNCw1NDkuOCA5OTcuNCw1NTIuNkM5OTcuNCw1NTUuNCA5OTguMiw1NTcuNiA5OTkuOCw1NTkuM0MxMDAxLjQsNTYxLjEgMTAwMy40LDU2MiAxMDA1LjksNTYyIiBzdHlsZT0iZmlsbDpyZ2IoMjQsMjksMzEpO2ZpbGwtcnVsZTpub256ZXJvOyIvPgogICAgICAgIDxwYXRoIGQ9Ik04ODUuOCw1NDQuMkw4NjYuNSw1NDQuMkw4NjYuNSw1NTAuOUw4NzcuNSw1NTAuOUM4NzcuMiw1NTQuMyA4NzUuOSw1NTYuOSA4NzMuNyw1NTlDODcxLjUsNTYxIDg2OC43LDU2MiA4NjUuMSw1NjJDODYzLjEsNTYyIDg2MS4yLDU2MS42IDg1OS42LDU2MC45Qzg1Ny45LDU2MC4yIDg1Ni41LDU1OS4yIDg1NS4zLDU1Ny44Qzg1NC4xLDU1Ni41IDg1My4yLDU1NC45IDg1Mi41LDU1M0M4NTEuOCw1NTEuMSA4NTEuNSw1NDkuMSA4NTEuNSw1NDYuOEM4NTEuNSw1NDQuNSA4NTEuOCw1NDIuNSA4NTIuNSw1NDAuNkM4NTMuMSw1MzguNyA4NTQuMSw1MzcuMiA4NTUuMyw1MzUuOEM4NTYuNSw1MzQuNSA4NTcuOSw1MzMuNSA4NTkuNiw1MzIuN0M4NjEuMyw1MzIgODYzLjEsNTMxLjYgODY1LjIsNTMxLjZDODY5LjQsNTMxLjYgODcyLjYsNTMyLjYgODc0LjgsNTM0LjZMODgwLDUyOS40Qzg3Ni4xLDUyNi40IDg3MS4xLDUyNC44IDg2NS4yLDUyNC44Qzg2MS45LDUyNC44IDg1OC45LDUyNS4zIDg1Ni4yLDUyNi40Qzg1My41LDUyNy41IDg1MS4yLDUyOC45IDg0OS4zLDUzMC44Qzg0Ny40LDUzMi43IDg0NS45LDUzNSA4NDQuOSw1MzcuN0M4NDMuOSw1NDAuNCA4NDMuNCw1NDMuNCA4NDMuNCw1NDYuNkM4NDMuNCw1NDkuOCA4NDMuOSw1NTIuOCA4NDUsNTU1LjVDODQ2LjEsNTU4LjIgODQ3LjUsNTYwLjUgODQ5LjQsNTYyLjRDODUxLjMsNTY0LjMgODUzLjYsNTY1LjggODU2LjMsNTY2LjhDODU5LDU2Ny45IDg2Miw1NjguNCA4NjUuMiw1NjguNEM4NjguNCw1NjguNCA4NzEuMyw1NjcuOSA4NzMuOSw1NjYuOEM4NzYuNSw1NjUuNyA4NzguNyw1NjQuMyA4ODAuNSw1NjIuNEM4ODIuMyw1NjAuNSA4ODMuNyw1NTguMiA4ODQuNyw1NTUuNUM4ODUuNyw1NTIuOCA4ODYuMiw1NDkuOCA4ODYuMiw1NDYuNkw4ODYuMiw1NDUuM0M4ODUuOSw1NDUuMSA4ODUuOCw1NDQuNiA4ODUuOCw1NDQuMiIgc3R5bGU9ImZpbGw6cmdiKDI0LDI5LDMxKTtmaWxsLXJ1bGU6bm9uemVybzsiLz4KICAgICAgICA8cGF0aCBkPSJNOTQ2LjgsNTQ0LjJMOTI3LjUsNTQ0LjJMOTI3LjUsNTUwLjlMOTM4LjUsNTUwLjlDOTM4LjIsNTU0LjMgOTM2LjksNTU2LjkgOTM0LjcsNTU5QzkzMi41LDU2MSA5MjkuNyw1NjIgOTI2LjEsNTYyQzkyNC4xLDU2MiA5MjIuMiw1NjEuNiA5MjAuNiw1NjAuOUM5MTguOSw1NjAuMiA5MTcuNSw1NTkuMiA5MTYuMyw1NTcuOEM5MTUuMSw1NTYuNSA5MTQuMiw1NTQuOSA5MTMuNSw1NTNDOTEyLjgsNTUxLjEgOTEyLjUsNTQ5LjEgOTEyLjUsNTQ2LjhDOTEyLjUsNTQ0LjUgOTEyLjgsNTQyLjUgOTEzLjUsNTQwLjZDOTE0LjEsNTM4LjcgOTE1LjEsNTM3LjIgOTE2LjMsNTM1LjhDOTE3LjUsNTM0LjUgOTE4LjksNTMzLjUgOTIwLjYsNTMyLjdDOTIyLjMsNTMyIDkyNC4xLDUzMS42IDkyNi4yLDUzMS42QzkzMC40LDUzMS42IDkzMy42LDUzMi42IDkzNS44LDUzNC42TDk0MSw1MjkuNEM5MzcuMSw1MjYuNCA5MzIuMSw1MjQuOCA5MjYuMiw1MjQuOEM5MjIuOSw1MjQuOCA5MTkuOSw1MjUuMyA5MTcuMiw1MjYuNEM5MTQuNSw1MjcuNSA5MTIuMiw1MjguOSA5MTAuMyw1MzAuOEM5MDguNCw1MzIuNyA5MDYuOSw1MzUgOTA1LjksNTM3LjdDOTA0LjksNTQwLjQgOTA0LjQsNTQzLjQgOTA0LjQsNTQ2LjZDOTA0LjQsNTQ5LjggOTA0LjksNTUyLjggOTA2LDU1NS41QzkwNy4xLDU1OC4yIDkwOC41LDU2MC41IDkxMC40LDU2Mi40QzkxMi4zLDU2NC4zIDkxNC42LDU2NS44IDkxNy4zLDU2Ni44QzkyMCw1NjcuOSA5MjMsNTY4LjQgOTI2LjIsNTY4LjRDOTI5LjQsNTY4LjQgOTMyLjMsNTY3LjkgOTM0LjksNTY2LjhDOTM3LjUsNTY1LjcgOTM5LjcsNTY0LjMgOTQxLjUsNTYyLjRDOTQzLjMsNTYwLjUgOTQ0LjcsNTU4LjIgOTQ1LjcsNTU1LjVDOTQ2LjcsNTUyLjggOTQ3LjIsNTQ5LjggOTQ3LjIsNTQ2LjZMOTQ3LjIsNTQ1LjNDOTQ2LjksNTQ1LjEgOTQ2LjgsNTQ0LjYgOTQ2LjgsNTQ0LjIiIHN0eWxlPSJmaWxsOnJnYigyNCwyOSwzMSk7ZmlsbC1ydWxlOm5vbnplcm87Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=);\n background-repeat: no-repeat;\n background-size: 170px 40px;\n display: block;\n height: 40px;\n width: 170px;\n opacity: 0.5;\n}\n\n.ag-watermark-text {\n opacity: 0.5;\n font-weight: bold;\n font-family: Impact, sans-serif;\n font-size: 19px;\n padding-left: 0.7rem;\n}\n\n.ag-root-wrapper-body {\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n}\n.ag-root-wrapper-body.ag-layout-normal {\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n height: 0;\n min-height: 0;\n}\n\n.ag-root {\n position: relative;\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n}\n.ag-root.ag-layout-normal, .ag-root.ag-layout-auto-height {\n overflow: hidden;\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n width: 0;\n}\n.ag-root.ag-layout-normal {\n height: 100%;\n}\n\n/**\n ****************************\n * Viewports\n ****************************\n*/\n.ag-header-viewport,\n.ag-floating-top-viewport,\n.ag-body-viewport,\n.ag-center-cols-viewport,\n.ag-floating-bottom-viewport,\n.ag-body-horizontal-scroll-viewport,\n.ag-virtual-list-viewport {\n position: relative;\n height: 100%;\n min-width: 0px;\n overflow: hidden;\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n}\n\n.ag-body-viewport {\n display: -webkit-box;\n display: flex;\n}\n.ag-body-viewport.ag-layout-normal {\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.ag-center-cols-viewport {\n width: 100%;\n overflow-x: auto;\n}\n\n.ag-body-horizontal-scroll-viewport {\n overflow-x: scroll;\n}\n\n.ag-virtual-list-viewport {\n overflow: auto;\n width: 100%;\n}\n\n/**\n ****************************\n * Containers\n ****************************\n*/\n.ag-header-container,\n.ag-floating-top-container,\n.ag-body-container,\n.ag-pinned-right-cols-container,\n.ag-center-cols-container,\n.ag-pinned-left-cols-container,\n.ag-floating-bottom-container,\n.ag-body-horizontal-scroll-container,\n.ag-full-width-container,\n.ag-floating-bottom-full-width-container,\n.ag-virtual-list-container {\n position: relative;\n}\n\n.ag-header-container, .ag-floating-top-container, .ag-floating-bottom-container {\n height: 100%;\n white-space: nowrap;\n}\n\n.ag-center-cols-container {\n display: block;\n}\n\n.ag-pinned-right-cols-container {\n display: block;\n}\n\n.ag-body-horizontal-scroll-container {\n height: 100%;\n}\n\n.ag-full-width-container,\n.ag-floating-top-full-width-container,\n.ag-floating-bottom-full-width-container {\n position: absolute;\n top: 0px;\n left: 0px;\n pointer-events: none;\n}\n\n.ag-full-width-container {\n width: 100%;\n}\n\n.ag-floating-bottom-full-width-container, .ag-floating-top-full-width-container {\n display: inline-block;\n overflow: hidden;\n height: 100%;\n width: 100%;\n}\n\n.ag-virtual-list-container {\n overflow: hidden;\n}\n\n/**\n ****************************\n * Scrollers\n ****************************\n*/\n.ag-center-cols-clipper {\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n min-height: 100%;\n -webkit-transform: translate3d(0, 0, 0);\n transform: translate3d(0, 0, 0);\n}\n\n.ag-body-horizontal-scroll {\n min-height: 0;\n min-width: 0;\n width: 100%;\n display: -webkit-box;\n display: flex;\n position: relative;\n}\n.ag-body-horizontal-scroll.ag-scrollbar-invisible {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n pointer-events: none;\n}\n.ag-body-horizontal-scroll.ag-scrollbar-invisible.ag-scrollbar-scrolling, .ag-body-horizontal-scroll.ag-scrollbar-invisible.ag-scrollbar-active {\n pointer-events: all;\n}\n\n.ag-force-vertical-scroll {\n overflow-y: scroll !important;\n}\n\n.ag-horizontal-left-spacer, .ag-horizontal-right-spacer {\n height: 100%;\n min-width: 0;\n overflow-x: scroll;\n}\n.ag-horizontal-left-spacer.ag-scroller-corner, .ag-horizontal-right-spacer.ag-scroller-corner {\n overflow-x: hidden;\n}\n\n/**\n ****************************\n * Headers\n ****************************\n*/\n.ag-header, .ag-pinned-left-header, .ag-pinned-right-header {\n display: inline-block;\n overflow: hidden;\n position: relative;\n}\n\n.ag-header-cell-sortable {\n cursor: pointer;\n}\n\n.ag-header {\n display: -webkit-box;\n display: flex;\n width: 100%;\n white-space: nowrap;\n}\n\n.ag-pinned-left-header {\n height: 100%;\n}\n\n.ag-pinned-right-header {\n height: 100%;\n}\n\n.ag-header-row {\n position: absolute;\n overflow: hidden;\n}\n\n.ag-header-cell {\n display: -webkit-inline-box;\n display: inline-flex;\n -webkit-box-align: center;\n align-items: center;\n position: absolute;\n height: 100%;\n overflow: hidden;\n}\n\n.ag-header-cell.ag-header-active .ag-header-cell-menu-button {\n opacity: 1;\n}\n\n.ag-header-cell-menu-button:not(.ag-header-menu-always-show) {\n -webkit-transition: opacity 0.2s;\n transition: opacity 0.2s;\n opacity: 0;\n}\n\n.ag-header-group-cell-label, .ag-header-cell-label {\n display: -webkit-box;\n display: flex;\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n overflow: hidden;\n -webkit-box-align: center;\n align-items: center;\n text-overflow: ellipsis;\n align-self: stretch;\n}\n\n.ag-header-cell-text {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.ag-right-aligned-header .ag-header-cell-label {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: reverse;\n flex-direction: row-reverse;\n}\n\n.ag-header-group-text {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.ag-header-cell-resize {\n position: absolute;\n z-index: 2;\n height: 100%;\n width: 8px;\n top: 0;\n cursor: ew-resize;\n}\n.ag-ltr .ag-header-cell-resize {\n right: -4px;\n}\n.ag-rtl .ag-header-cell-resize {\n left: -4px;\n}\n\n.ag-pinned-left-header .ag-header-cell-resize {\n right: -4px;\n}\n\n.ag-pinned-right-header .ag-header-cell-resize {\n left: -4px;\n}\n\n.ag-header-select-all {\n display: -webkit-box;\n display: flex;\n}\n\n/**\n ****************************\n * Columns\n ****************************\n*/\n.ag-column-moving .ag-cell {\n -webkit-transition: left 0.2s;\n transition: left 0.2s;\n}\n.ag-column-moving .ag-header-cell {\n -webkit-transition: left 0.2s;\n transition: left 0.2s;\n}\n.ag-column-moving .ag-header-group-cell {\n -webkit-transition: left 0.2s, width 0.2s;\n transition: left 0.2s, width 0.2s;\n}\n\n/**\n ****************************\n * Column Panel\n ****************************\n*/\n.ag-column-panel {\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n overflow: hidden;\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n}\n\n.ag-column-select {\n position: relative;\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n overflow: hidden;\n -webkit-box-flex: 3;\n flex: 3 1 0px;\n}\n\n.ag-column-select-header {\n position: relative;\n display: -webkit-box;\n display: flex;\n -webkit-box-flex: 0;\n flex: none;\n}\n\n.ag-column-select-header-icon {\n position: relative;\n}\n\n.ag-column-select-header-filter-wrapper {\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n}\n\n.ag-column-select-header-filter {\n width: 100%;\n}\n\n.ag-column-select-list {\n -webkit-box-flex: 1;\n flex: 1 1 0px;\n overflow: hidden;\n}\n\n.ag-column-drop {\n position: relative;\n display: -webkit-inline-box;\n display: inline-flex;\n -webkit-box-align: center;\n align-items: center;\n overflow: auto;\n width: 100%;\n}\n\n.ag-column-drop-list {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n\n.ag-column-drop-cell {\n position: relative;\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n\n.ag-column-drop-cell-text {\n overflow: hidden;\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.ag-column-drop-vertical {\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n overflow: hidden;\n -webkit-box-align: stretch;\n align-items: stretch;\n -webkit-box-flex: 1;\n flex: 1 1 0px;\n}\n\n.ag-column-drop-vertical-title-bar {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-flex: 0;\n flex: none;\n}\n\n.ag-column-drop-vertical-list {\n position: relative;\n -webkit-box-align: stretch;\n align-items: stretch;\n -webkit-box-flex: 1;\n flex-grow: 1;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n overflow-x: auto;\n}\n.ag-column-drop-vertical-list > * {\n -webkit-box-flex: 0;\n flex: none;\n}\n\n.ag-column-drop-empty .ag-column-drop-vertical-list {\n overflow: hidden;\n}\n\n.ag-column-drop-vertical-empty-message {\n display: block;\n}\n\n.ag-column-drop.ag-column-drop-horizontal {\n white-space: nowrap;\n overflow: hidden;\n}\n\n.ag-column-drop-cell-button {\n cursor: pointer;\n}\n\n.ag-filter-toolpanel {\n -webkit-box-flex: 1;\n flex: 1 1 0px;\n min-width: 0;\n}\n\n.ag-filter-toolpanel-header {\n position: relative;\n}\n\n.ag-filter-toolpanel-header, .ag-filter-toolpanel-search {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-filter-toolpanel-header > *, .ag-filter-toolpanel-search > * {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n\n.ag-filter-apply-panel {\n display: -webkit-box;\n display: flex;\n -webkit-box-pack: end;\n justify-content: flex-end;\n overflow: hidden;\n}\n\n/**\n ****************************\n * Rows\n ****************************\n*/\n.ag-row-animation .ag-row {\n -webkit-transition: top 0.4s, background-color 0.1s, opacity 0.2s, -webkit-transform 0.4s;\n transition: top 0.4s, background-color 0.1s, opacity 0.2s, -webkit-transform 0.4s;\n transition: transform 0.4s, top 0.4s, background-color 0.1s, opacity 0.2s;\n transition: transform 0.4s, top 0.4s, background-color 0.1s, opacity 0.2s, -webkit-transform 0.4s;\n}\n\n.ag-row-animation .ag-row.ag-after-created {\n -webkit-transition: top 0.4s, height 0.4s, background-color 0.1s, opacity 0.2s, -webkit-transform 0.4s;\n transition: top 0.4s, height 0.4s, background-color 0.1s, opacity 0.2s, -webkit-transform 0.4s;\n transition: transform 0.4s, top 0.4s, height 0.4s, background-color 0.1s, opacity 0.2s;\n transition: transform 0.4s, top 0.4s, height 0.4s, background-color 0.1s, opacity 0.2s, -webkit-transform 0.4s;\n}\n\n.ag-row-no-animation .ag-row {\n -webkit-transition: background-color 0.1s;\n transition: background-color 0.1s;\n}\n\n.ag-row {\n white-space: nowrap;\n width: 100%;\n}\n\n.ag-row-loading {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n\n.ag-row-position-absolute {\n position: absolute;\n}\n\n.ag-row-position-relative {\n position: relative;\n}\n\n.ag-full-width-row {\n overflow: hidden;\n pointer-events: all;\n}\n\n.ag-row-inline-editing {\n z-index: 1;\n}\n\n.ag-row-dragging {\n z-index: 2;\n}\n\n.ag-stub-cell {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n\n/**\n ****************************\n * Cells\n ****************************\n*/\n.ag-cell {\n display: inline-block;\n position: absolute;\n white-space: nowrap;\n height: 100%;\n}\n\n.ag-cell-value {\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n}\n\n.ag-cell-value, .ag-group-value {\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.ag-cell-wrap-text {\n white-space: normal;\n word-break: break-all;\n}\n\n.ag-cell-wrapper {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-cell-wrapper.ag-row-group {\n -webkit-box-align: start;\n align-items: flex-start;\n}\n\n.ag-sparkline-wrapper {\n position: absolute;\n height: 100%;\n width: 100%;\n left: 0;\n top: 0;\n}\n\n.ag-full-width-row .ag-cell-wrapper.ag-row-group {\n height: 100%;\n -webkit-box-align: center;\n align-items: center;\n}\n\n.ag-cell-inline-editing {\n z-index: 1;\n}\n.ag-cell-inline-editing .ag-cell-wrapper,\n.ag-cell-inline-editing .ag-cell-edit-wrapper,\n.ag-cell-inline-editing .ag-cell-editor,\n.ag-cell-inline-editing .ag-cell-editor .ag-wrapper,\n.ag-cell-inline-editing .ag-cell-editor input {\n height: 100%;\n width: 100%;\n line-height: normal;\n}\n\n.ag-cell .ag-icon {\n display: inline-block;\n vertical-align: middle;\n}\n\n/**\n ****************************\n * Filters\n ****************************\n*/\n.ag-set-filter-item {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n height: 100%;\n}\n\n.ag-set-filter-item-value {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.ag-set-filter-item-checkbox {\n display: -webkit-box;\n display: flex;\n}\n\n.ag-filter-body-wrapper {\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n}\n\n.ag-filter-filter {\n -webkit-box-flex: 1;\n flex: 1 1 0px;\n}\n\n.ag-filter-condition {\n display: -webkit-box;\n display: flex;\n -webkit-box-pack: center;\n justify-content: center;\n}\n\n/**\n ****************************\n * Floating Filter\n ****************************\n*/\n.ag-floating-filter-body {\n position: relative;\n display: -webkit-box;\n display: flex;\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n height: 100%;\n}\n\n.ag-floating-filter-full-body {\n display: -webkit-box;\n display: flex;\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n height: 100%;\n width: 100%;\n -webkit-box-align: center;\n align-items: center;\n overflow: hidden;\n}\n\n.ag-floating-filter-full-body > div {\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n}\n\n.ag-floating-filter-input {\n -webkit-box-align: center;\n align-items: center;\n display: -webkit-box;\n display: flex;\n width: 100%;\n}\n.ag-floating-filter-input > * {\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n}\n\n.ag-floating-filter-button {\n display: -webkit-box;\n display: flex;\n -webkit-box-flex: 0;\n flex: none;\n}\n\n/**\n ****************************\n * Drag & Drop\n ****************************\n*/\n.ag-dnd-ghost {\n position: absolute;\n display: -webkit-inline-box;\n display: inline-flex;\n -webkit-box-align: center;\n align-items: center;\n cursor: move;\n white-space: nowrap;\n z-index: 9999;\n}\n\n/**\n ****************************\n * Overlay\n ****************************\n*/\n.ag-overlay {\n height: 100%;\n left: 0;\n pointer-events: none;\n position: absolute;\n top: 0;\n width: 100%;\n}\n\n.ag-overlay-panel {\n display: -webkit-box;\n display: flex;\n height: 100%;\n width: 100%;\n}\n\n.ag-overlay-wrapper {\n display: -webkit-box;\n display: flex;\n -webkit-box-flex: 0;\n flex: none;\n width: 100%;\n height: 100%;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n text-align: center;\n}\n\n.ag-overlay-loading-wrapper {\n pointer-events: all;\n}\n\n/**\n ****************************\n * Popup\n ****************************\n*/\n.ag-popup-child {\n z-index: 5;\n top: 0;\n}\n\n.ag-popup-editor {\n position: absolute;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n z-index: 1;\n}\n\n.ag-large-text-input {\n display: block;\n}\n\n/**\n ****************************\n * Virtual Lists\n ****************************\n*/\n.ag-virtual-list-item {\n position: absolute;\n width: 100%;\n}\n\n/**\n ****************************\n * Floating Top and Bottom\n ****************************\n*/\n.ag-floating-top {\n overflow: hidden;\n white-space: nowrap;\n width: 100%;\n position: relative;\n display: -webkit-box;\n display: flex;\n}\n\n.ag-pinned-left-floating-top {\n display: inline-block;\n overflow: hidden;\n position: relative;\n min-width: 0px;\n}\n\n.ag-pinned-right-floating-top {\n display: inline-block;\n overflow: hidden;\n position: relative;\n min-width: 0px;\n}\n\n.ag-floating-bottom {\n overflow: hidden;\n white-space: nowrap;\n width: 100%;\n position: relative;\n display: -webkit-box;\n display: flex;\n}\n\n.ag-pinned-left-floating-bottom {\n display: inline-block;\n overflow: hidden;\n position: relative;\n min-width: 0px;\n}\n\n.ag-pinned-right-floating-bottom {\n display: inline-block;\n overflow: hidden;\n position: relative;\n min-width: 0px;\n}\n\n/**\n ****************************\n * Dialog\n ****************************\n*/\n.ag-dialog, .ag-panel {\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n position: relative;\n overflow: hidden;\n}\n\n.ag-panel-title-bar {\n display: -webkit-box;\n display: flex;\n -webkit-box-flex: 0;\n flex: none;\n -webkit-box-align: center;\n align-items: center;\n cursor: default;\n}\n\n.ag-panel-title-bar-title {\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n}\n\n.ag-panel-title-bar-buttons {\n display: -webkit-box;\n display: flex;\n}\n\n.ag-panel-title-bar-button {\n cursor: pointer;\n}\n\n.ag-panel-content-wrapper {\n display: -webkit-box;\n display: flex;\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n position: relative;\n overflow: hidden;\n}\n\n.ag-dialog {\n position: absolute;\n}\n\n.ag-resizer {\n position: absolute;\n pointer-events: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n z-index: 1;\n}\n.ag-resizer.ag-resizer-topLeft {\n top: 0;\n left: 0;\n height: 5px;\n width: 5px;\n cursor: nwse-resize;\n}\n.ag-resizer.ag-resizer-top {\n top: 0;\n left: 5px;\n right: 5px;\n height: 5px;\n cursor: ns-resize;\n}\n.ag-resizer.ag-resizer-topRight {\n top: 0;\n right: 0;\n height: 5px;\n width: 5px;\n cursor: nesw-resize;\n}\n.ag-resizer.ag-resizer-right {\n top: 5px;\n right: 0;\n bottom: 5px;\n width: 5px;\n cursor: ew-resize;\n}\n.ag-resizer.ag-resizer-bottomRight {\n bottom: 0;\n right: 0;\n height: 5px;\n width: 5px;\n cursor: nwse-resize;\n}\n.ag-resizer.ag-resizer-bottom {\n bottom: 0;\n left: 5px;\n right: 5px;\n height: 5px;\n cursor: ns-resize;\n}\n.ag-resizer.ag-resizer-bottomLeft {\n bottom: 0;\n left: 0;\n height: 5px;\n width: 5px;\n cursor: nesw-resize;\n}\n.ag-resizer.ag-resizer-left {\n left: 0;\n top: 5px;\n bottom: 5px;\n width: 5px;\n cursor: ew-resize;\n}\n\n/**\n ****************************\n * Tooltip\n ****************************\n*/\n.ag-tooltip {\n position: absolute;\n pointer-events: none;\n z-index: 99999;\n}\n\n.ag-tooltip-custom {\n position: absolute;\n pointer-events: none;\n z-index: 99999;\n}\n\n/**\n ****************************\n * Animations\n ****************************\n*/\n.ag-value-slide-out {\n margin-right: 5px;\n opacity: 1;\n -webkit-transition: opacity 3s, margin-right 3s;\n transition: opacity 3s, margin-right 3s;\n -webkit-transition-timing-function: linear;\n transition-timing-function: linear;\n}\n\n.ag-value-slide-out-end {\n margin-right: 10px;\n opacity: 0;\n}\n\n.ag-opacity-zero {\n opacity: 0 !important;\n}\n\n/**\n ****************************\n * Menu\n ****************************\n*/\n.ag-menu {\n max-height: 100%;\n overflow-y: auto;\n position: absolute;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n\n.ag-menu-column-select-wrapper {\n height: 265px;\n overflow: auto;\n}\n.ag-menu-column-select-wrapper .ag-column-select {\n height: 100%;\n}\n\n.ag-menu-list {\n display: table;\n width: 100%;\n}\n\n.ag-menu-option, .ag-menu-separator {\n display: table-row;\n}\n\n.ag-menu-option-part, .ag-menu-separator-part {\n display: table-cell;\n vertical-align: middle;\n}\n\n.ag-menu-option-text {\n white-space: nowrap;\n}\n\n.ag-compact-menu-option {\n width: 100%;\n display: -webkit-box;\n display: flex;\n flex-wrap: nowrap;\n}\n\n.ag-compact-menu-option-text {\n white-space: nowrap;\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n}\n\n/**\n ****************************\n * Rich Select\n ****************************\n*/\n.ag-rich-select {\n cursor: default;\n outline: none;\n}\n\n.ag-rich-select-value {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n\n.ag-rich-select-value-icon {\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n -webkit-box-ordinal-group: 2;\n order: 1;\n}\n.ag-ltr .ag-rich-select-value-icon {\n text-align: right;\n}\n.ag-rtl .ag-rich-select-value-icon {\n text-align: left;\n}\n\n.ag-rich-select-list {\n position: relative;\n}\n\n.ag-rich-select-virtual-list-item {\n display: -webkit-box;\n display: flex;\n}\n\n.ag-rich-select-row {\n display: -webkit-box;\n display: flex;\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n -webkit-box-align: center;\n align-items: center;\n white-space: nowrap;\n}\n\n/**\n ****************************\n * Pagination\n ****************************\n*/\n.ag-paging-panel {\n -webkit-box-align: center;\n align-items: center;\n display: -webkit-box;\n display: flex;\n -webkit-box-pack: end;\n justify-content: flex-end;\n}\n\n.ag-paging-page-summary-panel {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n\n.ag-paging-button {\n position: relative;\n}\n\n.ag-disabled .ag-paging-page-summary-panel {\n pointer-events: none;\n}\n\n/**\n ****************************\n * Tool Panel\n ****************************\n*/\n.ag-tool-panel-wrapper {\n display: -webkit-box;\n display: flex;\n overflow-y: auto;\n overflow-x: hidden;\n cursor: default;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n\n.ag-column-select-column,\n.ag-column-select-column-group,\n.ag-select-agg-func-item {\n position: relative;\n -webkit-box-align: center;\n align-items: center;\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n flex-wrap: nowrap;\n text-overflow: ellipsis;\n white-space: nowrap;\n height: 100%;\n}\n.ag-column-select-column > *,\n.ag-column-select-column-group > *,\n.ag-select-agg-func-item > * {\n -webkit-box-flex: 0;\n flex: none;\n}\n\n.ag-column-select-checkbox {\n display: -webkit-box;\n display: flex;\n}\n\n.ag-tool-panel-horizontal-resize {\n cursor: ew-resize;\n height: 100%;\n position: absolute;\n top: 0;\n width: 5px;\n z-index: 1;\n}\n\n.ag-ltr .ag-side-bar-left .ag-tool-panel-horizontal-resize {\n right: -3px;\n}\n.ag-rtl .ag-side-bar-left .ag-tool-panel-horizontal-resize {\n left: -3px;\n}\n\n.ag-ltr .ag-side-bar-right .ag-tool-panel-horizontal-resize {\n left: -3px;\n}\n.ag-rtl .ag-side-bar-right .ag-tool-panel-horizontal-resize {\n right: -3px;\n}\n\n.ag-details-row {\n width: 100%;\n}\n\n.ag-details-row-fixed-height {\n height: 100%;\n}\n\n.ag-details-grid {\n width: 100%;\n}\n\n.ag-details-grid-fixed-height {\n height: 100%;\n}\n\n.ag-header-group-cell {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n height: 100%;\n position: absolute;\n}\n\n.ag-cell-label-container {\n display: -webkit-box;\n display: flex;\n -webkit-box-pack: justify;\n justify-content: space-between;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: reverse;\n flex-direction: row-reverse;\n -webkit-box-align: center;\n align-items: center;\n width: 100%;\n height: 100%;\n overflow: hidden;\n}\n\n.ag-right-aligned-header .ag-cell-label-container {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n}\n\n/**\n ****************************\n * Side Bar\n ****************************\n*/\n.ag-side-bar {\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: reverse;\n flex-direction: row-reverse;\n}\n\n.ag-side-bar-left {\n -webkit-box-ordinal-group: 0;\n order: -1;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n}\n\n.ag-side-button-button {\n position: relative;\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n flex-wrap: nowrap;\n white-space: nowrap;\n outline: none;\n cursor: pointer;\n}\n\n.ag-side-button-label {\n -webkit-writing-mode: vertical-lr;\n writing-mode: vertical-lr;\n}\n\n/**\n ****************************\n * Status Bar\n ****************************\n*/\n.ag-status-bar {\n display: -webkit-box;\n display: flex;\n -webkit-box-pack: justify;\n justify-content: space-between;\n overflow: hidden;\n}\n\n.ag-status-panel {\n display: -webkit-inline-box;\n display: inline-flex;\n}\n\n.ag-status-name-value {\n white-space: nowrap;\n}\n\n.ag-status-bar-left {\n display: -webkit-inline-box;\n display: inline-flex;\n}\n\n.ag-status-bar-center {\n display: -webkit-inline-box;\n display: inline-flex;\n}\n\n.ag-status-bar-right {\n display: -webkit-inline-box;\n display: inline-flex;\n}\n\n/**\n ****************************\n * Widgets\n ****************************\n*/\n.ag-icon {\n display: block;\n speak: none;\n}\n\n.ag-group {\n position: relative;\n width: 100%;\n}\n\n.ag-group-title-bar {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n\n.ag-group-title {\n display: block;\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n min-width: 0;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n.ag-group-title-bar .ag-group-title {\n cursor: default;\n}\n\n.ag-group-toolbar {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n\n.ag-group-container {\n display: -webkit-box;\n display: flex;\n}\n\n.ag-disabled .ag-group-container {\n pointer-events: none;\n}\n\n.ag-group-container-horizontal {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n flex-wrap: wrap;\n}\n\n.ag-group-container-vertical {\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n}\n\n.ag-column-group-icons {\n display: block;\n}\n.ag-column-group-icons > * {\n cursor: pointer;\n}\n\n.ag-group-item-alignment-stretch .ag-group-item {\n -webkit-box-align: stretch;\n align-items: stretch;\n}\n\n.ag-group-item-alignment-start .ag-group-item {\n -webkit-box-align: start;\n align-items: flex-start;\n}\n\n.ag-group-item-alignment-end .ag-group-item {\n -webkit-box-align: end;\n align-items: flex-end;\n}\n\n.ag-toggle-button-icon {\n -webkit-transition: right 0.3s;\n transition: right 0.3s;\n position: absolute;\n top: -1px;\n}\n\n.ag-input-field, .ag-select {\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n -webkit-box-align: center;\n align-items: center;\n}\n\n.ag-input-field-input {\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n width: 100%;\n min-width: 0;\n}\n\n.ag-floating-filter-input .ag-input-field-input[type=date] {\n width: 1px;\n}\n\n.ag-range-field {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n\n.ag-angle-select {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n\n.ag-angle-select-wrapper {\n display: -webkit-box;\n display: flex;\n}\n\n.ag-angle-select-parent-circle {\n display: block;\n position: relative;\n}\n\n.ag-angle-select-child-circle {\n position: absolute;\n}\n\n.ag-slider-wrapper {\n display: -webkit-box;\n display: flex;\n}\n.ag-slider-wrapper .ag-input-field {\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n}\n\n.ag-picker-field-display {\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n}\n\n.ag-picker-field {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n\n.ag-picker-field-icon {\n display: -webkit-box;\n display: flex;\n border: 0;\n padding: 0;\n margin: 0;\n cursor: pointer;\n}\n\n.ag-picker-field-wrapper {\n overflow: hidden;\n}\n\n.ag-label-align-right .ag-label {\n -webkit-box-ordinal-group: 2;\n order: 1;\n}\n.ag-label-align-right > * {\n -webkit-box-flex: 0;\n flex: none;\n}\n\n.ag-label-align-top {\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n -webkit-box-align: start;\n align-items: flex-start;\n}\n.ag-label-align-top > * {\n align-self: stretch;\n}\n\n.ag-color-panel {\n width: 100%;\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n text-align: center;\n}\n\n.ag-spectrum-color {\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n position: relative;\n overflow: hidden;\n cursor: default;\n}\n\n.ag-spectrum-fill {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n}\n\n.ag-spectrum-val {\n cursor: pointer;\n}\n\n.ag-spectrum-dragger {\n position: absolute;\n pointer-events: none;\n cursor: pointer;\n}\n\n.ag-spectrum-hue {\n cursor: default;\n background: -webkit-gradient(linear, right top, left top, color-stop(3%, #ff0000), color-stop(17%, #ffff00), color-stop(33%, #00ff00), color-stop(50%, #00ffff), color-stop(67%, #0000ff), color-stop(83%, #ff00ff), to(#ff0000));\n background: linear-gradient(to left, #ff0000 3%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%);\n}\n\n.ag-spectrum-alpha {\n cursor: default;\n}\n\n.ag-spectrum-hue-background {\n width: 100%;\n height: 100%;\n}\n\n.ag-spectrum-alpha-background {\n background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, 0)), to(rgb(0, 0, 0)));\n background-image: linear-gradient(to right, rgba(0, 0, 0, 0), rgb(0, 0, 0));\n width: 100%;\n height: 100%;\n}\n\n.ag-spectrum-tool {\n cursor: pointer;\n}\n\n.ag-spectrum-slider {\n position: absolute;\n pointer-events: none;\n}\n\n.ag-recent-colors {\n display: -webkit-box;\n display: flex;\n}\n\n.ag-recent-color {\n cursor: pointer;\n}\n\n.ag-ltr .ag-column-select-indent-1 {\n padding-left: 20px;\n}\n.ag-rtl .ag-column-select-indent-1 {\n padding-right: 20px;\n}\n\n.ag-ltr .ag-row-group-indent-1 {\n padding-left: 20px;\n}\n.ag-rtl .ag-row-group-indent-1 {\n padding-right: 20px;\n}\n\n.ag-ltr .ag-column-select-indent-2 {\n padding-left: 40px;\n}\n.ag-rtl .ag-column-select-indent-2 {\n padding-right: 40px;\n}\n\n.ag-ltr .ag-row-group-indent-2 {\n padding-left: 40px;\n}\n.ag-rtl .ag-row-group-indent-2 {\n padding-right: 40px;\n}\n\n.ag-ltr .ag-column-select-indent-3 {\n padding-left: 60px;\n}\n.ag-rtl .ag-column-select-indent-3 {\n padding-right: 60px;\n}\n\n.ag-ltr .ag-row-group-indent-3 {\n padding-left: 60px;\n}\n.ag-rtl .ag-row-group-indent-3 {\n padding-right: 60px;\n}\n\n.ag-ltr .ag-column-select-indent-4 {\n padding-left: 80px;\n}\n.ag-rtl .ag-column-select-indent-4 {\n padding-right: 80px;\n}\n\n.ag-ltr .ag-row-group-indent-4 {\n padding-left: 80px;\n}\n.ag-rtl .ag-row-group-indent-4 {\n padding-right: 80px;\n}\n\n.ag-ltr .ag-column-select-indent-5 {\n padding-left: 100px;\n}\n.ag-rtl .ag-column-select-indent-5 {\n padding-right: 100px;\n}\n\n.ag-ltr .ag-row-group-indent-5 {\n padding-left: 100px;\n}\n.ag-rtl .ag-row-group-indent-5 {\n padding-right: 100px;\n}\n\n.ag-ltr .ag-column-select-indent-6 {\n padding-left: 120px;\n}\n.ag-rtl .ag-column-select-indent-6 {\n padding-right: 120px;\n}\n\n.ag-ltr .ag-row-group-indent-6 {\n padding-left: 120px;\n}\n.ag-rtl .ag-row-group-indent-6 {\n padding-right: 120px;\n}\n\n.ag-ltr .ag-column-select-indent-7 {\n padding-left: 140px;\n}\n.ag-rtl .ag-column-select-indent-7 {\n padding-right: 140px;\n}\n\n.ag-ltr .ag-row-group-indent-7 {\n padding-left: 140px;\n}\n.ag-rtl .ag-row-group-indent-7 {\n padding-right: 140px;\n}\n\n.ag-ltr .ag-column-select-indent-8 {\n padding-left: 160px;\n}\n.ag-rtl .ag-column-select-indent-8 {\n padding-right: 160px;\n}\n\n.ag-ltr .ag-row-group-indent-8 {\n padding-left: 160px;\n}\n.ag-rtl .ag-row-group-indent-8 {\n padding-right: 160px;\n}\n\n.ag-ltr .ag-column-select-indent-9 {\n padding-left: 180px;\n}\n.ag-rtl .ag-column-select-indent-9 {\n padding-right: 180px;\n}\n\n.ag-ltr .ag-row-group-indent-9 {\n padding-left: 180px;\n}\n.ag-rtl .ag-row-group-indent-9 {\n padding-right: 180px;\n}\n\n.ag-ltr .ag-column-select-indent-10 {\n padding-left: 200px;\n}\n.ag-rtl .ag-column-select-indent-10 {\n padding-right: 200px;\n}\n\n.ag-ltr .ag-row-group-indent-10 {\n padding-left: 200px;\n}\n.ag-rtl .ag-row-group-indent-10 {\n padding-right: 200px;\n}\n\n.ag-ltr .ag-column-select-indent-11 {\n padding-left: 220px;\n}\n.ag-rtl .ag-column-select-indent-11 {\n padding-right: 220px;\n}\n\n.ag-ltr .ag-row-group-indent-11 {\n padding-left: 220px;\n}\n.ag-rtl .ag-row-group-indent-11 {\n padding-right: 220px;\n}\n\n.ag-ltr .ag-column-select-indent-12 {\n padding-left: 240px;\n}\n.ag-rtl .ag-column-select-indent-12 {\n padding-right: 240px;\n}\n\n.ag-ltr .ag-row-group-indent-12 {\n padding-left: 240px;\n}\n.ag-rtl .ag-row-group-indent-12 {\n padding-right: 240px;\n}\n\n.ag-ltr .ag-column-select-indent-13 {\n padding-left: 260px;\n}\n.ag-rtl .ag-column-select-indent-13 {\n padding-right: 260px;\n}\n\n.ag-ltr .ag-row-group-indent-13 {\n padding-left: 260px;\n}\n.ag-rtl .ag-row-group-indent-13 {\n padding-right: 260px;\n}\n\n.ag-ltr .ag-column-select-indent-14 {\n padding-left: 280px;\n}\n.ag-rtl .ag-column-select-indent-14 {\n padding-right: 280px;\n}\n\n.ag-ltr .ag-row-group-indent-14 {\n padding-left: 280px;\n}\n.ag-rtl .ag-row-group-indent-14 {\n padding-right: 280px;\n}\n\n.ag-ltr .ag-column-select-indent-15 {\n padding-left: 300px;\n}\n.ag-rtl .ag-column-select-indent-15 {\n padding-right: 300px;\n}\n\n.ag-ltr .ag-row-group-indent-15 {\n padding-left: 300px;\n}\n.ag-rtl .ag-row-group-indent-15 {\n padding-right: 300px;\n}\n\n.ag-ltr .ag-column-select-indent-16 {\n padding-left: 320px;\n}\n.ag-rtl .ag-column-select-indent-16 {\n padding-right: 320px;\n}\n\n.ag-ltr .ag-row-group-indent-16 {\n padding-left: 320px;\n}\n.ag-rtl .ag-row-group-indent-16 {\n padding-right: 320px;\n}\n\n.ag-ltr .ag-column-select-indent-17 {\n padding-left: 340px;\n}\n.ag-rtl .ag-column-select-indent-17 {\n padding-right: 340px;\n}\n\n.ag-ltr .ag-row-group-indent-17 {\n padding-left: 340px;\n}\n.ag-rtl .ag-row-group-indent-17 {\n padding-right: 340px;\n}\n\n.ag-ltr .ag-column-select-indent-18 {\n padding-left: 360px;\n}\n.ag-rtl .ag-column-select-indent-18 {\n padding-right: 360px;\n}\n\n.ag-ltr .ag-row-group-indent-18 {\n padding-left: 360px;\n}\n.ag-rtl .ag-row-group-indent-18 {\n padding-right: 360px;\n}\n\n.ag-ltr .ag-column-select-indent-19 {\n padding-left: 380px;\n}\n.ag-rtl .ag-column-select-indent-19 {\n padding-right: 380px;\n}\n\n.ag-ltr .ag-row-group-indent-19 {\n padding-left: 380px;\n}\n.ag-rtl .ag-row-group-indent-19 {\n padding-right: 380px;\n}\n\n.ag-ltr .ag-column-select-indent-20 {\n padding-left: 400px;\n}\n.ag-rtl .ag-column-select-indent-20 {\n padding-right: 400px;\n}\n\n.ag-ltr .ag-row-group-indent-20 {\n padding-left: 400px;\n}\n.ag-rtl .ag-row-group-indent-20 {\n padding-right: 400px;\n}\n\n.ag-ltr .ag-column-select-indent-21 {\n padding-left: 420px;\n}\n.ag-rtl .ag-column-select-indent-21 {\n padding-right: 420px;\n}\n\n.ag-ltr .ag-row-group-indent-21 {\n padding-left: 420px;\n}\n.ag-rtl .ag-row-group-indent-21 {\n padding-right: 420px;\n}\n\n.ag-ltr .ag-column-select-indent-22 {\n padding-left: 440px;\n}\n.ag-rtl .ag-column-select-indent-22 {\n padding-right: 440px;\n}\n\n.ag-ltr .ag-row-group-indent-22 {\n padding-left: 440px;\n}\n.ag-rtl .ag-row-group-indent-22 {\n padding-right: 440px;\n}\n\n.ag-ltr .ag-column-select-indent-23 {\n padding-left: 460px;\n}\n.ag-rtl .ag-column-select-indent-23 {\n padding-right: 460px;\n}\n\n.ag-ltr .ag-row-group-indent-23 {\n padding-left: 460px;\n}\n.ag-rtl .ag-row-group-indent-23 {\n padding-right: 460px;\n}\n\n.ag-ltr .ag-column-select-indent-24 {\n padding-left: 480px;\n}\n.ag-rtl .ag-column-select-indent-24 {\n padding-right: 480px;\n}\n\n.ag-ltr .ag-row-group-indent-24 {\n padding-left: 480px;\n}\n.ag-rtl .ag-row-group-indent-24 {\n padding-right: 480px;\n}\n\n.ag-ltr .ag-column-select-indent-25 {\n padding-left: 500px;\n}\n.ag-rtl .ag-column-select-indent-25 {\n padding-right: 500px;\n}\n\n.ag-ltr .ag-row-group-indent-25 {\n padding-left: 500px;\n}\n.ag-rtl .ag-row-group-indent-25 {\n padding-right: 500px;\n}\n\n.ag-ltr .ag-column-select-indent-26 {\n padding-left: 520px;\n}\n.ag-rtl .ag-column-select-indent-26 {\n padding-right: 520px;\n}\n\n.ag-ltr .ag-row-group-indent-26 {\n padding-left: 520px;\n}\n.ag-rtl .ag-row-group-indent-26 {\n padding-right: 520px;\n}\n\n.ag-ltr .ag-column-select-indent-27 {\n padding-left: 540px;\n}\n.ag-rtl .ag-column-select-indent-27 {\n padding-right: 540px;\n}\n\n.ag-ltr .ag-row-group-indent-27 {\n padding-left: 540px;\n}\n.ag-rtl .ag-row-group-indent-27 {\n padding-right: 540px;\n}\n\n.ag-ltr .ag-column-select-indent-28 {\n padding-left: 560px;\n}\n.ag-rtl .ag-column-select-indent-28 {\n padding-right: 560px;\n}\n\n.ag-ltr .ag-row-group-indent-28 {\n padding-left: 560px;\n}\n.ag-rtl .ag-row-group-indent-28 {\n padding-right: 560px;\n}\n\n.ag-ltr .ag-column-select-indent-29 {\n padding-left: 580px;\n}\n.ag-rtl .ag-column-select-indent-29 {\n padding-right: 580px;\n}\n\n.ag-ltr .ag-row-group-indent-29 {\n padding-left: 580px;\n}\n.ag-rtl .ag-row-group-indent-29 {\n padding-right: 580px;\n}\n\n.ag-ltr .ag-column-select-indent-30 {\n padding-left: 600px;\n}\n.ag-rtl .ag-column-select-indent-30 {\n padding-right: 600px;\n}\n\n.ag-ltr .ag-row-group-indent-30 {\n padding-left: 600px;\n}\n.ag-rtl .ag-row-group-indent-30 {\n padding-right: 600px;\n}\n\n.ag-ltr .ag-column-select-indent-31 {\n padding-left: 620px;\n}\n.ag-rtl .ag-column-select-indent-31 {\n padding-right: 620px;\n}\n\n.ag-ltr .ag-row-group-indent-31 {\n padding-left: 620px;\n}\n.ag-rtl .ag-row-group-indent-31 {\n padding-right: 620px;\n}\n\n.ag-ltr .ag-column-select-indent-32 {\n padding-left: 640px;\n}\n.ag-rtl .ag-column-select-indent-32 {\n padding-right: 640px;\n}\n\n.ag-ltr .ag-row-group-indent-32 {\n padding-left: 640px;\n}\n.ag-rtl .ag-row-group-indent-32 {\n padding-right: 640px;\n}\n\n.ag-ltr .ag-column-select-indent-33 {\n padding-left: 660px;\n}\n.ag-rtl .ag-column-select-indent-33 {\n padding-right: 660px;\n}\n\n.ag-ltr .ag-row-group-indent-33 {\n padding-left: 660px;\n}\n.ag-rtl .ag-row-group-indent-33 {\n padding-right: 660px;\n}\n\n.ag-ltr .ag-column-select-indent-34 {\n padding-left: 680px;\n}\n.ag-rtl .ag-column-select-indent-34 {\n padding-right: 680px;\n}\n\n.ag-ltr .ag-row-group-indent-34 {\n padding-left: 680px;\n}\n.ag-rtl .ag-row-group-indent-34 {\n padding-right: 680px;\n}\n\n.ag-ltr .ag-column-select-indent-35 {\n padding-left: 700px;\n}\n.ag-rtl .ag-column-select-indent-35 {\n padding-right: 700px;\n}\n\n.ag-ltr .ag-row-group-indent-35 {\n padding-left: 700px;\n}\n.ag-rtl .ag-row-group-indent-35 {\n padding-right: 700px;\n}\n\n.ag-ltr .ag-column-select-indent-36 {\n padding-left: 720px;\n}\n.ag-rtl .ag-column-select-indent-36 {\n padding-right: 720px;\n}\n\n.ag-ltr .ag-row-group-indent-36 {\n padding-left: 720px;\n}\n.ag-rtl .ag-row-group-indent-36 {\n padding-right: 720px;\n}\n\n.ag-ltr .ag-column-select-indent-37 {\n padding-left: 740px;\n}\n.ag-rtl .ag-column-select-indent-37 {\n padding-right: 740px;\n}\n\n.ag-ltr .ag-row-group-indent-37 {\n padding-left: 740px;\n}\n.ag-rtl .ag-row-group-indent-37 {\n padding-right: 740px;\n}\n\n.ag-ltr .ag-column-select-indent-38 {\n padding-left: 760px;\n}\n.ag-rtl .ag-column-select-indent-38 {\n padding-right: 760px;\n}\n\n.ag-ltr .ag-row-group-indent-38 {\n padding-left: 760px;\n}\n.ag-rtl .ag-row-group-indent-38 {\n padding-right: 760px;\n}\n\n.ag-ltr .ag-column-select-indent-39 {\n padding-left: 780px;\n}\n.ag-rtl .ag-column-select-indent-39 {\n padding-right: 780px;\n}\n\n.ag-ltr .ag-row-group-indent-39 {\n padding-left: 780px;\n}\n.ag-rtl .ag-row-group-indent-39 {\n padding-right: 780px;\n}\n\n.ag-ltr .ag-column-select-indent-40 {\n padding-left: 800px;\n}\n.ag-rtl .ag-column-select-indent-40 {\n padding-right: 800px;\n}\n\n.ag-ltr .ag-row-group-indent-40 {\n padding-left: 800px;\n}\n.ag-rtl .ag-row-group-indent-40 {\n padding-right: 800px;\n}\n\n.ag-ltr .ag-column-select-indent-41 {\n padding-left: 820px;\n}\n.ag-rtl .ag-column-select-indent-41 {\n padding-right: 820px;\n}\n\n.ag-ltr .ag-row-group-indent-41 {\n padding-left: 820px;\n}\n.ag-rtl .ag-row-group-indent-41 {\n padding-right: 820px;\n}\n\n.ag-ltr .ag-column-select-indent-42 {\n padding-left: 840px;\n}\n.ag-rtl .ag-column-select-indent-42 {\n padding-right: 840px;\n}\n\n.ag-ltr .ag-row-group-indent-42 {\n padding-left: 840px;\n}\n.ag-rtl .ag-row-group-indent-42 {\n padding-right: 840px;\n}\n\n.ag-ltr .ag-column-select-indent-43 {\n padding-left: 860px;\n}\n.ag-rtl .ag-column-select-indent-43 {\n padding-right: 860px;\n}\n\n.ag-ltr .ag-row-group-indent-43 {\n padding-left: 860px;\n}\n.ag-rtl .ag-row-group-indent-43 {\n padding-right: 860px;\n}\n\n.ag-ltr .ag-column-select-indent-44 {\n padding-left: 880px;\n}\n.ag-rtl .ag-column-select-indent-44 {\n padding-right: 880px;\n}\n\n.ag-ltr .ag-row-group-indent-44 {\n padding-left: 880px;\n}\n.ag-rtl .ag-row-group-indent-44 {\n padding-right: 880px;\n}\n\n.ag-ltr .ag-column-select-indent-45 {\n padding-left: 900px;\n}\n.ag-rtl .ag-column-select-indent-45 {\n padding-right: 900px;\n}\n\n.ag-ltr .ag-row-group-indent-45 {\n padding-left: 900px;\n}\n.ag-rtl .ag-row-group-indent-45 {\n padding-right: 900px;\n}\n\n.ag-ltr .ag-column-select-indent-46 {\n padding-left: 920px;\n}\n.ag-rtl .ag-column-select-indent-46 {\n padding-right: 920px;\n}\n\n.ag-ltr .ag-row-group-indent-46 {\n padding-left: 920px;\n}\n.ag-rtl .ag-row-group-indent-46 {\n padding-right: 920px;\n}\n\n.ag-ltr .ag-column-select-indent-47 {\n padding-left: 940px;\n}\n.ag-rtl .ag-column-select-indent-47 {\n padding-right: 940px;\n}\n\n.ag-ltr .ag-row-group-indent-47 {\n padding-left: 940px;\n}\n.ag-rtl .ag-row-group-indent-47 {\n padding-right: 940px;\n}\n\n.ag-ltr .ag-column-select-indent-48 {\n padding-left: 960px;\n}\n.ag-rtl .ag-column-select-indent-48 {\n padding-right: 960px;\n}\n\n.ag-ltr .ag-row-group-indent-48 {\n padding-left: 960px;\n}\n.ag-rtl .ag-row-group-indent-48 {\n padding-right: 960px;\n}\n\n.ag-ltr .ag-column-select-indent-49 {\n padding-left: 980px;\n}\n.ag-rtl .ag-column-select-indent-49 {\n padding-right: 980px;\n}\n\n.ag-ltr .ag-row-group-indent-49 {\n padding-left: 980px;\n}\n.ag-rtl .ag-row-group-indent-49 {\n padding-right: 980px;\n}\n\n.ag-ltr .ag-column-select-indent-50 {\n padding-left: 1000px;\n}\n.ag-rtl .ag-column-select-indent-50 {\n padding-right: 1000px;\n}\n\n.ag-ltr .ag-row-group-indent-50 {\n padding-left: 1000px;\n}\n.ag-rtl .ag-row-group-indent-50 {\n padding-right: 1000px;\n}\n\n.ag-ltr .ag-column-select-indent-51 {\n padding-left: 1020px;\n}\n.ag-rtl .ag-column-select-indent-51 {\n padding-right: 1020px;\n}\n\n.ag-ltr .ag-row-group-indent-51 {\n padding-left: 1020px;\n}\n.ag-rtl .ag-row-group-indent-51 {\n padding-right: 1020px;\n}\n\n.ag-ltr .ag-column-select-indent-52 {\n padding-left: 1040px;\n}\n.ag-rtl .ag-column-select-indent-52 {\n padding-right: 1040px;\n}\n\n.ag-ltr .ag-row-group-indent-52 {\n padding-left: 1040px;\n}\n.ag-rtl .ag-row-group-indent-52 {\n padding-right: 1040px;\n}\n\n.ag-ltr .ag-column-select-indent-53 {\n padding-left: 1060px;\n}\n.ag-rtl .ag-column-select-indent-53 {\n padding-right: 1060px;\n}\n\n.ag-ltr .ag-row-group-indent-53 {\n padding-left: 1060px;\n}\n.ag-rtl .ag-row-group-indent-53 {\n padding-right: 1060px;\n}\n\n.ag-ltr .ag-column-select-indent-54 {\n padding-left: 1080px;\n}\n.ag-rtl .ag-column-select-indent-54 {\n padding-right: 1080px;\n}\n\n.ag-ltr .ag-row-group-indent-54 {\n padding-left: 1080px;\n}\n.ag-rtl .ag-row-group-indent-54 {\n padding-right: 1080px;\n}\n\n.ag-ltr .ag-column-select-indent-55 {\n padding-left: 1100px;\n}\n.ag-rtl .ag-column-select-indent-55 {\n padding-right: 1100px;\n}\n\n.ag-ltr .ag-row-group-indent-55 {\n padding-left: 1100px;\n}\n.ag-rtl .ag-row-group-indent-55 {\n padding-right: 1100px;\n}\n\n.ag-ltr .ag-column-select-indent-56 {\n padding-left: 1120px;\n}\n.ag-rtl .ag-column-select-indent-56 {\n padding-right: 1120px;\n}\n\n.ag-ltr .ag-row-group-indent-56 {\n padding-left: 1120px;\n}\n.ag-rtl .ag-row-group-indent-56 {\n padding-right: 1120px;\n}\n\n.ag-ltr .ag-column-select-indent-57 {\n padding-left: 1140px;\n}\n.ag-rtl .ag-column-select-indent-57 {\n padding-right: 1140px;\n}\n\n.ag-ltr .ag-row-group-indent-57 {\n padding-left: 1140px;\n}\n.ag-rtl .ag-row-group-indent-57 {\n padding-right: 1140px;\n}\n\n.ag-ltr .ag-column-select-indent-58 {\n padding-left: 1160px;\n}\n.ag-rtl .ag-column-select-indent-58 {\n padding-right: 1160px;\n}\n\n.ag-ltr .ag-row-group-indent-58 {\n padding-left: 1160px;\n}\n.ag-rtl .ag-row-group-indent-58 {\n padding-right: 1160px;\n}\n\n.ag-ltr .ag-column-select-indent-59 {\n padding-left: 1180px;\n}\n.ag-rtl .ag-column-select-indent-59 {\n padding-right: 1180px;\n}\n\n.ag-ltr .ag-row-group-indent-59 {\n padding-left: 1180px;\n}\n.ag-rtl .ag-row-group-indent-59 {\n padding-right: 1180px;\n}\n\n.ag-ltr .ag-column-select-indent-60 {\n padding-left: 1200px;\n}\n.ag-rtl .ag-column-select-indent-60 {\n padding-right: 1200px;\n}\n\n.ag-ltr .ag-row-group-indent-60 {\n padding-left: 1200px;\n}\n.ag-rtl .ag-row-group-indent-60 {\n padding-right: 1200px;\n}\n\n.ag-ltr .ag-column-select-indent-61 {\n padding-left: 1220px;\n}\n.ag-rtl .ag-column-select-indent-61 {\n padding-right: 1220px;\n}\n\n.ag-ltr .ag-row-group-indent-61 {\n padding-left: 1220px;\n}\n.ag-rtl .ag-row-group-indent-61 {\n padding-right: 1220px;\n}\n\n.ag-ltr .ag-column-select-indent-62 {\n padding-left: 1240px;\n}\n.ag-rtl .ag-column-select-indent-62 {\n padding-right: 1240px;\n}\n\n.ag-ltr .ag-row-group-indent-62 {\n padding-left: 1240px;\n}\n.ag-rtl .ag-row-group-indent-62 {\n padding-right: 1240px;\n}\n\n.ag-ltr .ag-column-select-indent-63 {\n padding-left: 1260px;\n}\n.ag-rtl .ag-column-select-indent-63 {\n padding-right: 1260px;\n}\n\n.ag-ltr .ag-row-group-indent-63 {\n padding-left: 1260px;\n}\n.ag-rtl .ag-row-group-indent-63 {\n padding-right: 1260px;\n}\n\n.ag-ltr .ag-column-select-indent-64 {\n padding-left: 1280px;\n}\n.ag-rtl .ag-column-select-indent-64 {\n padding-right: 1280px;\n}\n\n.ag-ltr .ag-row-group-indent-64 {\n padding-left: 1280px;\n}\n.ag-rtl .ag-row-group-indent-64 {\n padding-right: 1280px;\n}\n\n.ag-ltr .ag-column-select-indent-65 {\n padding-left: 1300px;\n}\n.ag-rtl .ag-column-select-indent-65 {\n padding-right: 1300px;\n}\n\n.ag-ltr .ag-row-group-indent-65 {\n padding-left: 1300px;\n}\n.ag-rtl .ag-row-group-indent-65 {\n padding-right: 1300px;\n}\n\n.ag-ltr .ag-column-select-indent-66 {\n padding-left: 1320px;\n}\n.ag-rtl .ag-column-select-indent-66 {\n padding-right: 1320px;\n}\n\n.ag-ltr .ag-row-group-indent-66 {\n padding-left: 1320px;\n}\n.ag-rtl .ag-row-group-indent-66 {\n padding-right: 1320px;\n}\n\n.ag-ltr .ag-column-select-indent-67 {\n padding-left: 1340px;\n}\n.ag-rtl .ag-column-select-indent-67 {\n padding-right: 1340px;\n}\n\n.ag-ltr .ag-row-group-indent-67 {\n padding-left: 1340px;\n}\n.ag-rtl .ag-row-group-indent-67 {\n padding-right: 1340px;\n}\n\n.ag-ltr .ag-column-select-indent-68 {\n padding-left: 1360px;\n}\n.ag-rtl .ag-column-select-indent-68 {\n padding-right: 1360px;\n}\n\n.ag-ltr .ag-row-group-indent-68 {\n padding-left: 1360px;\n}\n.ag-rtl .ag-row-group-indent-68 {\n padding-right: 1360px;\n}\n\n.ag-ltr .ag-column-select-indent-69 {\n padding-left: 1380px;\n}\n.ag-rtl .ag-column-select-indent-69 {\n padding-right: 1380px;\n}\n\n.ag-ltr .ag-row-group-indent-69 {\n padding-left: 1380px;\n}\n.ag-rtl .ag-row-group-indent-69 {\n padding-right: 1380px;\n}\n\n.ag-ltr .ag-column-select-indent-70 {\n padding-left: 1400px;\n}\n.ag-rtl .ag-column-select-indent-70 {\n padding-right: 1400px;\n}\n\n.ag-ltr .ag-row-group-indent-70 {\n padding-left: 1400px;\n}\n.ag-rtl .ag-row-group-indent-70 {\n padding-right: 1400px;\n}\n\n.ag-ltr .ag-column-select-indent-71 {\n padding-left: 1420px;\n}\n.ag-rtl .ag-column-select-indent-71 {\n padding-right: 1420px;\n}\n\n.ag-ltr .ag-row-group-indent-71 {\n padding-left: 1420px;\n}\n.ag-rtl .ag-row-group-indent-71 {\n padding-right: 1420px;\n}\n\n.ag-ltr .ag-column-select-indent-72 {\n padding-left: 1440px;\n}\n.ag-rtl .ag-column-select-indent-72 {\n padding-right: 1440px;\n}\n\n.ag-ltr .ag-row-group-indent-72 {\n padding-left: 1440px;\n}\n.ag-rtl .ag-row-group-indent-72 {\n padding-right: 1440px;\n}\n\n.ag-ltr .ag-column-select-indent-73 {\n padding-left: 1460px;\n}\n.ag-rtl .ag-column-select-indent-73 {\n padding-right: 1460px;\n}\n\n.ag-ltr .ag-row-group-indent-73 {\n padding-left: 1460px;\n}\n.ag-rtl .ag-row-group-indent-73 {\n padding-right: 1460px;\n}\n\n.ag-ltr .ag-column-select-indent-74 {\n padding-left: 1480px;\n}\n.ag-rtl .ag-column-select-indent-74 {\n padding-right: 1480px;\n}\n\n.ag-ltr .ag-row-group-indent-74 {\n padding-left: 1480px;\n}\n.ag-rtl .ag-row-group-indent-74 {\n padding-right: 1480px;\n}\n\n.ag-ltr .ag-column-select-indent-75 {\n padding-left: 1500px;\n}\n.ag-rtl .ag-column-select-indent-75 {\n padding-right: 1500px;\n}\n\n.ag-ltr .ag-row-group-indent-75 {\n padding-left: 1500px;\n}\n.ag-rtl .ag-row-group-indent-75 {\n padding-right: 1500px;\n}\n\n.ag-ltr .ag-column-select-indent-76 {\n padding-left: 1520px;\n}\n.ag-rtl .ag-column-select-indent-76 {\n padding-right: 1520px;\n}\n\n.ag-ltr .ag-row-group-indent-76 {\n padding-left: 1520px;\n}\n.ag-rtl .ag-row-group-indent-76 {\n padding-right: 1520px;\n}\n\n.ag-ltr .ag-column-select-indent-77 {\n padding-left: 1540px;\n}\n.ag-rtl .ag-column-select-indent-77 {\n padding-right: 1540px;\n}\n\n.ag-ltr .ag-row-group-indent-77 {\n padding-left: 1540px;\n}\n.ag-rtl .ag-row-group-indent-77 {\n padding-right: 1540px;\n}\n\n.ag-ltr .ag-column-select-indent-78 {\n padding-left: 1560px;\n}\n.ag-rtl .ag-column-select-indent-78 {\n padding-right: 1560px;\n}\n\n.ag-ltr .ag-row-group-indent-78 {\n padding-left: 1560px;\n}\n.ag-rtl .ag-row-group-indent-78 {\n padding-right: 1560px;\n}\n\n.ag-ltr .ag-column-select-indent-79 {\n padding-left: 1580px;\n}\n.ag-rtl .ag-column-select-indent-79 {\n padding-right: 1580px;\n}\n\n.ag-ltr .ag-row-group-indent-79 {\n padding-left: 1580px;\n}\n.ag-rtl .ag-row-group-indent-79 {\n padding-right: 1580px;\n}\n\n.ag-ltr .ag-column-select-indent-80 {\n padding-left: 1600px;\n}\n.ag-rtl .ag-column-select-indent-80 {\n padding-right: 1600px;\n}\n\n.ag-ltr .ag-row-group-indent-80 {\n padding-left: 1600px;\n}\n.ag-rtl .ag-row-group-indent-80 {\n padding-right: 1600px;\n}\n\n.ag-ltr .ag-column-select-indent-81 {\n padding-left: 1620px;\n}\n.ag-rtl .ag-column-select-indent-81 {\n padding-right: 1620px;\n}\n\n.ag-ltr .ag-row-group-indent-81 {\n padding-left: 1620px;\n}\n.ag-rtl .ag-row-group-indent-81 {\n padding-right: 1620px;\n}\n\n.ag-ltr .ag-column-select-indent-82 {\n padding-left: 1640px;\n}\n.ag-rtl .ag-column-select-indent-82 {\n padding-right: 1640px;\n}\n\n.ag-ltr .ag-row-group-indent-82 {\n padding-left: 1640px;\n}\n.ag-rtl .ag-row-group-indent-82 {\n padding-right: 1640px;\n}\n\n.ag-ltr .ag-column-select-indent-83 {\n padding-left: 1660px;\n}\n.ag-rtl .ag-column-select-indent-83 {\n padding-right: 1660px;\n}\n\n.ag-ltr .ag-row-group-indent-83 {\n padding-left: 1660px;\n}\n.ag-rtl .ag-row-group-indent-83 {\n padding-right: 1660px;\n}\n\n.ag-ltr .ag-column-select-indent-84 {\n padding-left: 1680px;\n}\n.ag-rtl .ag-column-select-indent-84 {\n padding-right: 1680px;\n}\n\n.ag-ltr .ag-row-group-indent-84 {\n padding-left: 1680px;\n}\n.ag-rtl .ag-row-group-indent-84 {\n padding-right: 1680px;\n}\n\n.ag-ltr .ag-column-select-indent-85 {\n padding-left: 1700px;\n}\n.ag-rtl .ag-column-select-indent-85 {\n padding-right: 1700px;\n}\n\n.ag-ltr .ag-row-group-indent-85 {\n padding-left: 1700px;\n}\n.ag-rtl .ag-row-group-indent-85 {\n padding-right: 1700px;\n}\n\n.ag-ltr .ag-column-select-indent-86 {\n padding-left: 1720px;\n}\n.ag-rtl .ag-column-select-indent-86 {\n padding-right: 1720px;\n}\n\n.ag-ltr .ag-row-group-indent-86 {\n padding-left: 1720px;\n}\n.ag-rtl .ag-row-group-indent-86 {\n padding-right: 1720px;\n}\n\n.ag-ltr .ag-column-select-indent-87 {\n padding-left: 1740px;\n}\n.ag-rtl .ag-column-select-indent-87 {\n padding-right: 1740px;\n}\n\n.ag-ltr .ag-row-group-indent-87 {\n padding-left: 1740px;\n}\n.ag-rtl .ag-row-group-indent-87 {\n padding-right: 1740px;\n}\n\n.ag-ltr .ag-column-select-indent-88 {\n padding-left: 1760px;\n}\n.ag-rtl .ag-column-select-indent-88 {\n padding-right: 1760px;\n}\n\n.ag-ltr .ag-row-group-indent-88 {\n padding-left: 1760px;\n}\n.ag-rtl .ag-row-group-indent-88 {\n padding-right: 1760px;\n}\n\n.ag-ltr .ag-column-select-indent-89 {\n padding-left: 1780px;\n}\n.ag-rtl .ag-column-select-indent-89 {\n padding-right: 1780px;\n}\n\n.ag-ltr .ag-row-group-indent-89 {\n padding-left: 1780px;\n}\n.ag-rtl .ag-row-group-indent-89 {\n padding-right: 1780px;\n}\n\n.ag-ltr .ag-column-select-indent-90 {\n padding-left: 1800px;\n}\n.ag-rtl .ag-column-select-indent-90 {\n padding-right: 1800px;\n}\n\n.ag-ltr .ag-row-group-indent-90 {\n padding-left: 1800px;\n}\n.ag-rtl .ag-row-group-indent-90 {\n padding-right: 1800px;\n}\n\n.ag-ltr .ag-column-select-indent-91 {\n padding-left: 1820px;\n}\n.ag-rtl .ag-column-select-indent-91 {\n padding-right: 1820px;\n}\n\n.ag-ltr .ag-row-group-indent-91 {\n padding-left: 1820px;\n}\n.ag-rtl .ag-row-group-indent-91 {\n padding-right: 1820px;\n}\n\n.ag-ltr .ag-column-select-indent-92 {\n padding-left: 1840px;\n}\n.ag-rtl .ag-column-select-indent-92 {\n padding-right: 1840px;\n}\n\n.ag-ltr .ag-row-group-indent-92 {\n padding-left: 1840px;\n}\n.ag-rtl .ag-row-group-indent-92 {\n padding-right: 1840px;\n}\n\n.ag-ltr .ag-column-select-indent-93 {\n padding-left: 1860px;\n}\n.ag-rtl .ag-column-select-indent-93 {\n padding-right: 1860px;\n}\n\n.ag-ltr .ag-row-group-indent-93 {\n padding-left: 1860px;\n}\n.ag-rtl .ag-row-group-indent-93 {\n padding-right: 1860px;\n}\n\n.ag-ltr .ag-column-select-indent-94 {\n padding-left: 1880px;\n}\n.ag-rtl .ag-column-select-indent-94 {\n padding-right: 1880px;\n}\n\n.ag-ltr .ag-row-group-indent-94 {\n padding-left: 1880px;\n}\n.ag-rtl .ag-row-group-indent-94 {\n padding-right: 1880px;\n}\n\n.ag-ltr .ag-column-select-indent-95 {\n padding-left: 1900px;\n}\n.ag-rtl .ag-column-select-indent-95 {\n padding-right: 1900px;\n}\n\n.ag-ltr .ag-row-group-indent-95 {\n padding-left: 1900px;\n}\n.ag-rtl .ag-row-group-indent-95 {\n padding-right: 1900px;\n}\n\n.ag-ltr .ag-column-select-indent-96 {\n padding-left: 1920px;\n}\n.ag-rtl .ag-column-select-indent-96 {\n padding-right: 1920px;\n}\n\n.ag-ltr .ag-row-group-indent-96 {\n padding-left: 1920px;\n}\n.ag-rtl .ag-row-group-indent-96 {\n padding-right: 1920px;\n}\n\n.ag-ltr .ag-column-select-indent-97 {\n padding-left: 1940px;\n}\n.ag-rtl .ag-column-select-indent-97 {\n padding-right: 1940px;\n}\n\n.ag-ltr .ag-row-group-indent-97 {\n padding-left: 1940px;\n}\n.ag-rtl .ag-row-group-indent-97 {\n padding-right: 1940px;\n}\n\n.ag-ltr .ag-column-select-indent-98 {\n padding-left: 1960px;\n}\n.ag-rtl .ag-column-select-indent-98 {\n padding-right: 1960px;\n}\n\n.ag-ltr .ag-row-group-indent-98 {\n padding-left: 1960px;\n}\n.ag-rtl .ag-row-group-indent-98 {\n padding-right: 1960px;\n}\n\n.ag-ltr .ag-column-select-indent-99 {\n padding-left: 1980px;\n}\n.ag-rtl .ag-column-select-indent-99 {\n padding-right: 1980px;\n}\n\n.ag-ltr .ag-row-group-indent-99 {\n padding-left: 1980px;\n}\n.ag-rtl .ag-row-group-indent-99 {\n padding-right: 1980px;\n}\n\n.ag-ltr {\n direction: ltr;\n}\n.ag-ltr .ag-body, .ag-ltr .ag-floating-top, .ag-ltr .ag-floating-bottom, .ag-ltr .ag-header, .ag-ltr .ag-body-viewport, .ag-ltr .ag-body-horizontal-scroll {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n}\n\n.ag-rtl {\n direction: rtl;\n}\n.ag-rtl .ag-body, .ag-rtl .ag-floating-top, .ag-rtl .ag-floating-bottom, .ag-rtl .ag-header, .ag-rtl .ag-body-viewport, .ag-rtl .ag-body-horizontal-scroll {\n -webkit-box-orient: horizontal;\n -webkit-box-direction: reverse;\n flex-direction: row-reverse;\n}\n.ag-rtl .ag-icon-contracted,\n.ag-rtl .ag-icon-tree-closed {\n display: block;\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.ag-layout-print.ag-body-viewport {\n -webkit-box-flex: 0;\n flex: none;\n}\n.ag-layout-print.ag-root-wrapper {\n display: -webkit-inline-box;\n display: inline-flex;\n}\n.ag-layout-print .ag-center-cols-clipper {\n min-width: 100%;\n}\n.ag-layout-print .ag-body-horizontal-scroll {\n display: none;\n}\n.ag-layout-print.ag-force-vertical-scroll {\n overflow-y: visible !important;\n}\n\n@media print {\n .ag-root-wrapper.ag-layout-print,\n.ag-root-wrapper.ag-layout-print .ag-root-wrapper-body,\n.ag-root-wrapper.ag-layout-print .ag-root,\n.ag-root-wrapper.ag-layout-print .ag-body-viewport,\n.ag-root-wrapper.ag-layout-print .ag-center-cols-container,\n.ag-root-wrapper.ag-layout-print .ag-center-cols-viewport,\n.ag-root-wrapper.ag-layout-print .ag-center-cols-clipper,\n.ag-root-wrapper.ag-layout-print .ag-body-horizontal-scroll-viewport,\n.ag-root-wrapper.ag-layout-print .ag-virtual-list-viewport {\n height: auto !important;\n overflow: hidden !important;\n display: block !important;\n }\n .ag-root-wrapper.ag-layout-print .ag-row {\n page-break-inside: avoid;\n }\n}\n.ag-body .ag-body-viewport {\n -webkit-overflow-scrolling: touch;\n}\n\n.ag-chart {\n position: relative;\n display: -webkit-box;\n display: flex;\n overflow: hidden;\n width: 100%;\n height: 100%;\n}\n\n.ag-chart-components-wrapper {\n position: relative;\n display: -webkit-box;\n display: flex;\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n overflow: hidden;\n}\n\n.ag-chart-title-edit {\n position: absolute;\n display: none;\n top: 0;\n left: 0;\n text-align: center;\n}\n\n.ag-chart-title-edit.currently-editing {\n display: inline-block;\n}\n\n.ag-chart-canvas-wrapper {\n position: relative;\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n overflow: hidden;\n}\n\n.ag-charts-canvas {\n display: block;\n}\n\n.ag-chart-menu {\n position: absolute;\n top: 10px;\n width: 24px;\n overflow: hidden;\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n}\n.ag-ltr .ag-chart-menu {\n right: 20px;\n}\n.ag-rtl .ag-chart-menu {\n left: 20px;\n}\n\n.ag-chart-docked-container {\n position: relative;\n width: 0;\n min-width: 0;\n -webkit-transition: min-width 0.4s;\n transition: min-width 0.4s;\n}\n\n.ag-chart-menu-hidden ~ .ag-chart-docked-container {\n max-width: 0;\n overflow: hidden;\n}\n\n.ag-chart-tabbed-menu {\n width: 100%;\n height: 100%;\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n overflow: hidden;\n}\n\n.ag-chart-tabbed-menu-header {\n -webkit-box-flex: 0;\n flex: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n cursor: default;\n}\n\n.ag-chart-tabbed-menu-body {\n display: -webkit-box;\n display: flex;\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n -webkit-box-align: stretch;\n align-items: stretch;\n overflow: hidden;\n}\n\n.ag-chart-tab {\n width: 100%;\n overflow: hidden;\n overflow-y: auto;\n}\n\n.ag-chart-settings {\n overflow-x: hidden;\n}\n\n.ag-chart-settings-wrapper {\n position: relative;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n width: 100%;\n height: 100%;\n display: -webkit-box;\n display: flex;\n overflow: hidden;\n}\n\n.ag-chart-settings-nav-bar {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n width: 100%;\n height: 30px;\n padding: 0 10px;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n\n.ag-chart-settings-card-selector {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n justify-content: space-around;\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n height: 100%;\n padding: 0 10px;\n}\n\n.ag-chart-settings-card-item {\n cursor: pointer;\n width: 10px;\n height: 10px;\n background-color: #000;\n position: relative;\n}\n.ag-chart-settings-card-item.ag-not-selected {\n opacity: 0.2;\n}\n.ag-chart-settings-card-item::before {\n content: \" \";\n display: block;\n position: absolute;\n background-color: transparent;\n left: 50%;\n top: 50%;\n margin-left: -10px;\n margin-top: -10px;\n width: 20px;\n height: 20px;\n}\n\n.ag-chart-settings-prev,\n.ag-chart-settings-next {\n position: relative;\n -webkit-box-flex: 0;\n flex: none;\n}\n\n.ag-chart-settings-prev-button,\n.ag-chart-settings-next-button {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n cursor: pointer;\n opacity: 0;\n}\n\n.ag-chart-settings-mini-charts-container {\n position: relative;\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n.ag-chart-settings-mini-wrapper {\n position: absolute;\n top: 0;\n left: 0;\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n width: 100%;\n min-height: 100%;\n overflow: hidden;\n}\n.ag-chart-settings-mini-wrapper.ag-animating {\n -webkit-transition: left 0.3s;\n transition: left 0.3s;\n -webkit-transition-timing-function: ease-in-out;\n transition-timing-function: ease-in-out;\n}\n\n.ag-chart-mini-thumbnail {\n cursor: pointer;\n}\n\n.ag-chart-mini-thumbnail-canvas {\n display: block;\n}\n\n.ag-chart-data-wrapper,\n.ag-chart-format-wrapper {\n display: -webkit-box;\n display: flex;\n -webkit-box-orient: vertical;\n -webkit-box-direction: normal;\n flex-direction: column;\n position: relative;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n\n.ag-chart-data-wrapper {\n height: 100%;\n overflow-y: auto;\n}\n\n.ag-chart-data-section,\n.ag-chart-format-section {\n display: -webkit-box;\n display: flex;\n margin: 0;\n}\n\n.ag-chart-empty-text {\n display: -webkit-box;\n display: flex;\n top: 0;\n width: 100%;\n height: 100%;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n}\n\n.ag-chart .ag-chart-menu {\n opacity: 0;\n pointer-events: none;\n}\n\n.ag-chart-menu-hidden:hover .ag-chart-menu {\n opacity: 1;\n pointer-events: all;\n}\n\n.ag-charts-font-size-color {\n display: -webkit-box;\n display: flex;\n align-self: stretch;\n -webkit-box-pack: justify;\n justify-content: space-between;\n}\n\n.ag-charts-data-group-item {\n position: relative;\n}\n\n.ag-date-time-list-page-title-bar {\n display: -webkit-box;\n display: flex;\n}\n\n.ag-date-time-list-page-column-labels-row,\n.ag-date-time-list-page-entries-row {\n display: -webkit-box;\n display: flex;\n}\n\n.ag-date-time-list-page-column-label,\n.ag-date-time-list-page-entry {\n flex-basis: 0;\n -webkit-box-flex: 1;\n flex-grow: 1;\n}\n\n.ag-date-time-list-page-entry {\n cursor: pointer;\n}\n", ""]);
58103// Exports
58104module.exports = exports;
58105
58106
58107/***/ }),
58108/* 278 */
58109/***/ (function(module, exports, __webpack_require__) {
58110
58111"use strict";
58112
58113
58114/*
58115 MIT License http://www.opensource.org/licenses/mit-license.php
58116 Author Tobias Koppers @sokra
58117*/
58118// css base code, injected by the css-loader
58119// eslint-disable-next-line func-names
58120module.exports = function (useSourceMap) {
58121 var list = []; // return the list of modules as css string
58122
58123 list.toString = function toString() {
58124 return this.map(function (item) {
58125 var content = cssWithMappingToString(item, useSourceMap);
58126
58127 if (item[2]) {
58128 return "@media ".concat(item[2], " {").concat(content, "}");
58129 }
58130
58131 return content;
58132 }).join('');
58133 }; // import a list of modules into the list
58134 // eslint-disable-next-line func-names
58135
58136
58137 list.i = function (modules, mediaQuery, dedupe) {
58138 if (typeof modules === 'string') {
58139 // eslint-disable-next-line no-param-reassign
58140 modules = [[null, modules, '']];
58141 }
58142
58143 var alreadyImportedModules = {};
58144
58145 if (dedupe) {
58146 for (var i = 0; i < this.length; i++) {
58147 // eslint-disable-next-line prefer-destructuring
58148 var id = this[i][0];
58149
58150 if (id != null) {
58151 alreadyImportedModules[id] = true;
58152 }
58153 }
58154 }
58155
58156 for (var _i = 0; _i < modules.length; _i++) {
58157 var item = [].concat(modules[_i]);
58158
58159 if (dedupe && alreadyImportedModules[item[0]]) {
58160 // eslint-disable-next-line no-continue
58161 continue;
58162 }
58163
58164 if (mediaQuery) {
58165 if (!item[2]) {
58166 item[2] = mediaQuery;
58167 } else {
58168 item[2] = "".concat(mediaQuery, " and ").concat(item[2]);
58169 }
58170 }
58171
58172 list.push(item);
58173 }
58174 };
58175
58176 return list;
58177};
58178
58179function cssWithMappingToString(item, useSourceMap) {
58180 var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring
58181
58182 var cssMapping = item[3];
58183
58184 if (!cssMapping) {
58185 return content;
58186 }
58187
58188 if (useSourceMap && typeof btoa === 'function') {
58189 var sourceMapping = toComment(cssMapping);
58190 var sourceURLs = cssMapping.sources.map(function (source) {
58191 return "/*# sourceURL=".concat(cssMapping.sourceRoot || '').concat(source, " */");
58192 });
58193 return [content].concat(sourceURLs).concat([sourceMapping]).join('\n');
58194 }
58195
58196 return [content].join('\n');
58197} // Adapted from convert-source-map (MIT)
58198
58199
58200function toComment(sourceMap) {
58201 // eslint-disable-next-line no-undef
58202 var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
58203 var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64);
58204 return "/*# ".concat(data, " */");
58205}
58206
58207/***/ }),
58208/* 279 */
58209/***/ (function(module, exports, __webpack_require__) {
58210
58211var api = __webpack_require__(276);
58212 var content = __webpack_require__(280);
58213
58214 content = content.__esModule ? content.default : content;
58215
58216 if (typeof content === 'string') {
58217 content = [[module.i, content, '']];
58218 }
58219
58220var options = {};
58221
58222options.insert = "head";
58223options.singleton = false;
58224
58225var update = api(content, options);
58226
58227
58228
58229module.exports = content.locals || {};
58230
58231/***/ }),
58232/* 280 */
58233/***/ (function(module, exports, __webpack_require__) {
58234
58235// Imports
58236var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58237exports = ___CSS_LOADER_API_IMPORT___(false);
58238// Module
58239exports.push([module.i, ".ag-theme-alpine-dark {\n color-scheme: dark;\n -webkit-font-smoothing: antialiased;\n color: #fff;\n color: var(--ag-foreground-color, #fff);\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 13px;\n line-height: normal;\n}\n@font-face {\n font-family: \"agGridAlpine\";\n src: url(\"data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABWoAAsAAAAAJ9AAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAAmYAAAR2ZcBn9U9TLzIAAANwAAAAQQAAAFZWUVMIY21hcAAAA7QAAAIcAAAFnIMq5ipnbHlmAAAF0AAAC80AABVszjC1ZWhlYWQAABGgAAAANAAAADZ2zsSBaGhlYQAAEdQAAAAeAAAAJAfSBDFobXR4AAAR9AAAABcAAAE0xzj/+2xvY2EAABIMAAAAdQAAAJwYJx3EbWF4cAAAEoQAAAAfAAAAIAFjAKpuYW1lAAASpAAAATUAAAJG5xgJvXBvc3QAABPcAAAByQAAAqgIzxhUeJx9lEtyElEUhv+mm0gCJilFjRhjovEVXzF2uhuaRx4QEDJwYFkOnMSyyrKKcsQ6XIAryNAVuAAHrsAFOHDo2PK7h0ZMBuEWze3z+M9//3Mu8iTNaVNN5doHhy81PzwafVRFgcYf5/9/7w0/vD9SYfKGL7DfgrygpHnd1GuN9M2b90beca7sV/xX/jv/s//F/yWfqFU9JrqobVakmGeoRFXVlCqnGWwR+7oaRPs8m2a9oKvKm6ernpaoGZHTM8QN9XVPi+B0DKetPaISlsNs8xyw7mvhjIgUlDy+be1gDVBkBU3qKmtWz2HZhkmL/Ab+i9Tcp3ZIVgdfB3Z5LE32LV2Ck8sITNWe3ugpfndSh1LNchK+kQ7sPbS3NTSZRDXBqVHLYW/BYGKvgReTsQl6lajdTNEN3SK7Bk4btJZl1y17jcgYbgl9CeycMVxLWmf/Qm/pRREW45y2aTpW4CHsp/aO4aV6dMLaAmtA7BM4TK2uPw+oFdKVGPQlfEN90rG+6rt+6Kd+64/O6TJ1YjvDHuj7Z2pTQMHT0V28zX9Wd9YZZuB01MmIWU5eM3UifL1MQ1etyMmcOgn7EGti8XPwdPFd2KT0I6BGaHVdp/OsHd4jos9n09lglUzpHlOwYBPct1moMKNbum6I4zlM0XoZRLcb86uYbg3wrlnfnLruhi3am7sLrt8VurPCb8gJq6bTId5VLA5parlhWSnsHcYz/Cmsp9Ucq2VYhbqLz81Y325Hl0rrnGfMJNYduxl9m6/bMKhmN7VMDx37VtaxKxYXWZbHP0GY3fDEtHMz3YGbm4/BX0ArchMAAHicY2BkmsY4gYGVgYGpimkPAwNDD4RmfMBgyMgEFGVgZWbACgLSXFMYDjDofjRifgHkRjG/BZnCwAiSAwDkfwr5AAAAeJy11AdSG0EQheFfgSxwIOecEWCCySCiEHAJnCkcKJw5h8/me/QJ8Bt1+wC4ylv1qXdGq92ZWr0GaoCczEkesvVkdEYmq9lMdT5HY3U+z2+NC9ST1XmRK264s6X7e80WueSaW8tUR3+PjK4u0McEzzU6YoUDdjlmjXNWKbHBPnucsMUmp7pmh3XKnLHNIRUu9Pu0irzWWEudntuglTTpjs208JgntNJGOx100kU3PfTqWf0MMMgQw4wwyhjjevokU0wzw6x2U2SeBRb1/TOWWNYia3nYcfTA69OxcrB7vHa+WtKO9062NrXZnfXy2fZh5eIfbvYfjkL6yP2K0Tnpjbq028uwIi/CgbwMu/IqHMvrsCZvQrrn27Aq70JJrsKGXId9eR/25EM4kY9hSz6FTbkJp3Ib0j/vc9iRL2FdvoayfAtn8j1sy49wKD9DRe6CXqBlXMqLZR2p5lzKl+VdypjVuJQ9q3WkWudItd6RaoMj1UaXMmlNjlQLLr1Ja3ak2uJI9ZFTdrCgFGFBecKeOiULa3XKGNbmlDas3Sl3WIdTArFOpyxiXU6pxLqd8on1OCUV63XKLNbnlF6s3ynH2IBTorFBp+xiQ04px4ad8o6NOCUfG3XqAdiYUzfAxp36Ajbh1CGwSadegU05dQ1s2ql/YDMu9UubdSknNufUXbCiU5/B5p06DrbgqutfdOpCWFA/wgLLfwB3H6YceJztWHtwVNUZv9852b179/2+WUI22b3ZXNjshib7uEkWdkMSSMAQcVwwQDFEikONtqK0KBAR/2hNHavjDPgH6Uw7bcPUmUZaph0VKk6VEkeldqTtDOof1dKSqmlxGLGBvfQ7Z3dDAqnaPzttsnvej+98z9+3Agj4R6ZoXLAIAoR8sugLpUKaGiJTunV6Gi7qd2F5kMZz09PZ7PQ0W264evnqZfoR/Ugw4C6H4BOqBMEjyqKqGTRWRrCgMmt6VFZ+8PTTsZdfJlksYk/rg/39/e18JMYHyGOzOv0b+vv1T2evR7LYpbSDdggS3iNrroRL1iQ43DaZP5/Rj+pH4WJmUjfA5ckMrNGPCoSvP0APCF6hFreHRaNo9Mp+2d+spbV0Uq1X6z2iioQidUgfXNwxOKC1tmoDg++VGwNtBw+2HTjAS3pgzhRvFF4tz2LJrivx0Y4tkfMy4VLUhE9hNfxyePj48DDsGh6mtsJpZOgufUQo0Xmenhc8QoBxP2wHn8sbhESoOQspV7IRJNBkkOmDVz4JJoL4oWZeF6b0v/VNwFgfPY/9OZNXPgF/3ykYu3nu+fL851MU9g2nP144Q2I3nlw4c+/sMyk/0xVyReY7F8+k5uvOLQ5+/fpzi7yjD9CvoD6ZhEpBkECUJaBaDRiZ6Hxef3M6xcRGPtAH2rbqBchOTJw6YrEEHP6mFU1+RwB+DT/I4IT+MiybmMjabMGq+kC4qSkciCwMsuMr+B1x1POifByCEAm5QgbFlfAorgy4FBeNF54gO/TVXFbHhqdJYlgfYZIqSqukh+QInmFAGgmqD+yCVv0UmgWN66f0iZJ9FN/zMD2BrwkI1ZzzRh9qbUjmDa8fGZVGPtUrHqSBHNGtSlMeLg7rKUYyvIalAnoKXqMvNoULz5PuW5uUwvNsjnQrTYVtpLtkE0/SJ5muSYDsEiVQUV3gImzo1MdgY6d+WB/rhI1YkPScLmzEJbjdKAhXr9Cv0Q8FJ2pItdAjPCx8D6lF81ANswilSgrlLBtlfwY8Ea+dKOHGilQySxLNQfB5jeF6tREU3IAq0JzWstDsl712HMHhVDLdHKQJJr9GUBtJMgu4i5Q2FffUgF8OEjTFtNaEm4Pg9TnATsKNsITidj+9R7zzXoPep2qaStKqtvKo3gEjBKjBeZboA5I76HXKXqfZYKsMeeQ6j9lmqjB5HfJCq1zrNxKT3fwzd9hf7bI5JbtJNDmsLr/F7fRWudw1fnely2S2iRUGR9BttBjcbovNbV7aECWUmCwmA0kR0eywGkmCgtltIn81ffMRA2lRr/yWEzPy5pXv0Ad+H5BchSf/aK0JekzuqtqIL5yq9y5U3ZLDbPN5k821Df7KSrPD7ggs9jssEbfFbgm4rLLb7jIZRU+oMeKx+Sp9TrPF4fbYJItERdEgeqq/e+y4ZDGaRZvZIJ2RHCbJLp12SGanW/i/7P6rZTcnnoEqou9R0Xrpch7QYA3+Y0CDy7phEsMbrCn5rznyXvW5stZYmEumE83+GsgRJjq/z+sAGUVkh3D9EhCZMtSnkp8toviGmyTR4HW4PM6l7Wa70WZyeHx9eatZcnvdFf23VUguHPks5k48OGS3WfxOT+XGjQ63weC0uqrvedDhc9slybhvt9FkdDnc/ytvnBNDIui4RRljzgS0IL46Di3QmpsdQx5DPFElNArLmJ5ocpoZbQ0+ChjYMipGtDJAm5VxIIgWreFYmNmtpsppZouinNYaSRgql8V61g+sH91ZTam3Kx6PaZuHbhvdubCiwtc3GO/yLhjc33PLqkw01bAqGjK11N26Kurt6asL3LH/cfIj3Lu4a89as0XbrDTG0glYsXutxbx0m1R9a/PyrVpdW020uyHVsKXFG+3J1/VkNuHgLPrtiMHiSD9CA0YLJzWSJaWXcE8BBpxEH4OT6FJIRff+OwJ49xP7BxcgZfrJhTtHf8ppr+aNhRXw7eiqaHTVOlZAQNu6HK8slufW7ulixJpL9SjS1BPlRQm7DCHvRcGGFIk+0aWmQgbZp6U0OjR9bJo8Wxh/O3eWTE2PHof+6Vzu7bPZ0be5yHhxiUyh3LjVaqooM2xHLr30UmZ6Wk/l85A6cSLDMbNVsBbxBq4v4w2GwaqEGkERVKFBWCIImpJKyLO+kc/pI/4+nssd42XhjX/XmR4u/uVKdbZUIzmmmfdfT5MAiPoj+PXgPSn8qvhlYyLWIazpENPRwml+FF5BntUnsAW/0CfIDn6vvjqHd+X0ESQhm83OwzMP6jomFsizC5xlsCufJ0c5y3TrXL9oYphJY3BGDdHlZT/IfCIJTrYxyN82WbaRA+QkZiABtBLBgxEqAymlqEe8hdYgI8aNKD4WuuzQANjgyqb8MLxUGRtr3dLSsqV1bExZGn4G+vSfwy7eBuXaJFxUMsrNLQP3DbTcjK1ofgyrlWxoy46BFs7Xq1fpJMfE1/E1hPiSJRoGlhUhHQaWXJX6DHuSBb29I5e0S6RBu6QhOHsdkoVeVm7GPvkAZ/TXe3shWY8t/GjLent7d2KNn0u/g2QZjz9Dn0EqXBzTJnyAionAEj2lCph76CP9QDp0/V1MQDbo6PfIOznY9S4fox595B0+NuNzruksyiA1819Ex+UvtKKsh7Pl+9+kbxbvn7l2hpDczKWoQ2VKGFHFa/9QpmTGN44XfSNzcTLANzK6noFWGse6DVpKOnWOOnnuyaKnjGmCyBI5cu7ChdjJkzFekiCvvsXLmbcVc8IQ05V5s0JIsiZGERkaAQOICgwksYXz5Yh6RzzWu2ZT6/YGPR6ugzXYgLfCdWxwvpRRH9i0pjcWrwvr8Ybt+od1YXirYXsrHyvTdzfmDD4hKNQjfQqDWKIyN2EINfsZ/EqmgfE3lErQynF7+9p227M8O+jBUn/BFQiEAwFIFZ7Lw/fzdCjS2BjBPGIbX3Io3FSpVOKn4CaHuFsoyXAv3YMa28Z9W7r4L2v1WIFoRC4jn0SjA/mtsqQMWV6PbAG2CkOQ7E/4sanCLU+h+zZI1W1LtK32tupaCPraV2wHINTri8sH/xyDcx7JanKOphc1u2CBSSZgIgdMCJ/sbucZeOgpyWJxWBdZJMtg47KgT39v4TrrNqMhkGr4kmzB7eQJp9Nj94/aKa3S/2L0qpVJ98GKChBN7jOCmb9jnI6j9dUKi4TlwkrhJiEvbBIGhTvxXUEiu6mdiBWRRqIST5ZodYaQy48BVEsbvDILSCmuSqLqQ/wgKjLv+DkzIl45kVKNYiKlRQEZkUAH7UsgDlYjRkX0JbR6dDHUtWhFFJCe6IpF+vv6+9d6UA27C6f+PqUkiVQwAUkqtfCCObYuH5OiKxftlGLr1sXM7XXNC4JQeBX27gEYziVvagHYnYNf7WbrkRet0X0nWrr30Z/Me341710pvGqUcPnUGy4nXgZ7wMEPl+5d1N1ApFge7wGEqP5ocGXLQy+uTu37ZzoykNu7N4yrKcDeYXjoBlvknpiMZ/RT0JrRyccZlu226cLs3wO8wuKyVTmZttQytjmZVdEwh2ms38xmSgb16M4dnV1dnTt2grPcevSezRtTmpbauPlsuUHPswn9H3MXX9k7ZxFvlGyI0WJFG08zanggKPp79T8grev+zs77H2VF1xejkkyV1mMx/YUJviEXEGUMtuy3j7m/aPHMYLKNZQbXsGEvHeJxlSMZ5v8A93JEUvSDhffJkcJadNRZmOQD+uEcmSqcLt9JySEmPY8E58ABDnIIY19fSe6HKGVzEimOUqpf0C/MnUPsivRgwOS75z+zuKA092Pq4b+bsN8qNLgLPu0snNT/1AFVrPUbqOkorYuTTvZCD77mOA82HbfP8ClOxouxgeVL5GMeEqCVjGOMYKo5y88PCW7BLySYH/XxVNdvFOUssExWQcNOMMzsmwUSkmlNxpUyfjQgrxQxgBZdlswhAFj85byp8NwjbT1lpNDRtL7mvoGew8lCN3mFYYLYCsuyqjuWtg60jOXh7v2VX21vLYKFptWG9fnbcSV54V8PFbSvAAAAeJxjYGRgYADiJZeya+P5bb4ycDO/AApEcT7e1wCj///+/5v5LfNboEoOBiYgyQAAoN8P3nicY2BkYGB+wcAAIv///v+b+S0DIwMq8AUAntwHCgAAeJxjYGBgYH4Bwv9/Q+ihjekBAG/aMMwAeJxjYAACKYYghiyGJQz7GN4xSjA6MZYwTmNcxXiH8R/THeZdzFdY3Fh2sJxh1WEtY53Cuob1G5semxtbHNsitgfsbOwK7G7sEewl7Ec4mDjSOHk4FTjTOA9w3uL8xcXBJcalwmXE5cYVwpXBtY10CAAggCv3AAAAeJxjYGRgYPBlmMfAwwACTEDMBYQMDP/BfAYAIOsCDgB4nHWRPU7DQBCFnxMniBghJCREx1Y0SM5PQZEuFHGfIgWdE68dR7bXWm8ipeMYnIBjUHIETsEheDFTREjZ1a6/+fbNNAZwgy94OC4PV+19XB1csPrjLulW2Cc/CPcQ4Em4T/8sPKB9EQ7YWXKC51/S3ONNuINrvAt36T+EffKncA93+Bbu0/8ID7D0fOEAj95rnEU2T2ZFnVd6obNdEdtTdcpLbZvcVGocjk51pCttY6cTtTqoZp9NnEtVak2p5qZyuiiMqq3Z6rULN87V0+EwFR+uTYkYGSJY5EgwQ4GaVEFjwZNhRxPz9VzqnF/yWDSsDGuFMUKMzqYjnqrtiOH4TdixwoF3gz17JrQOKeuUGcO/ojBvJx/TBbehqdu3Lc2aPsSm7aoxxZA7/ZcPmeKkXwK+aWkAAAB4nG2SB2/bMBSE/cWS7dhp46ZtuvceapvuvXeb/geGomUiEimQlO3k15e1gwAB+gASd4eHe8cHtpZai+q3/l+bLNEmIaVDlx7L9BmwwiEOs8qQI6xxlGMcZ50TnOQUpznDWc5xngtc5BKXucJVrnGdG9zkFre5w10y7nGfB2zwkEc85glPecZzXvCSV7zmDW95x3s+8JFPfOYLX/nGd37wk1/8ZpM/rYEoCqcKEbQ1HeGcnfq28LIjhZGqTOVYuDCUYyW3t+wsmwOVr+8L2uQqKFdpI4Ja25cbs9e5Im1pXVbrSFw3kqYyvi+tCU7IoPJE2nonlc5635Z+ksaTbSS58jJVsxigO7+zjZ6a1SLOypfVjsp8Kfy4HVFnpMs4Ph1p50NSOF2nhbNNncSGkJRqFDqlNjFHt7Qi16boVWKmK72rkkqZphdzL5hRs5AYa9TA2JCJsrRTlad1dFHtWpu01hMberVTE20bP3TRzGZbTQjWZHY0Wj0omNTpYhwSLyaq76tol+V2avbgv1iDBZy39RY4pg5xTWvBKXVwr8tzydbK9BqzeA+CAocioLEYpngkJWO22WIW/0ZORUPNDhNG7LZafwFegLa2AAAA\") format(\"woff\");\n font-weight: normal;\n font-style: normal;\n}\n.ag-theme-alpine-dark .ag-icon {\n font-family: \"agGridAlpine\";\n font-size: 16px;\n line-height: 16px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.ag-theme-alpine-dark .ag-icon-aggregation::before {\n content: \"\\f101\";\n}\n.ag-theme-alpine-dark .ag-icon-arrows::before {\n content: \"\\f102\";\n}\n.ag-theme-alpine-dark .ag-icon-asc::before {\n content: \"\\f103\";\n}\n.ag-theme-alpine-dark .ag-icon-cancel::before {\n content: \"\\f104\";\n}\n.ag-theme-alpine-dark .ag-icon-chart::before {\n content: \"\\f105\";\n}\n.ag-theme-alpine-dark .ag-icon-color-picker::before {\n content: \"\\f109\";\n}\n.ag-theme-alpine-dark .ag-icon-columns::before {\n content: \"\\f10a\";\n}\n.ag-theme-alpine-dark .ag-icon-contracted::before {\n content: \"\\f10b\";\n}\n.ag-theme-alpine-dark .ag-icon-copy::before {\n content: \"\\f10c\";\n}\n.ag-theme-alpine-dark .ag-icon-cross::before {\n content: \"\\f10d\";\n}\n.ag-theme-alpine-dark .ag-icon-csv::before {\n content: \"\\f10e\";\n}\n.ag-theme-alpine-dark .ag-icon-desc::before {\n content: \"\\f10f\";\n}\n.ag-theme-alpine-dark .ag-icon-excel::before {\n content: \"\\f110\";\n}\n.ag-theme-alpine-dark .ag-icon-expanded::before {\n content: \"\\f111\";\n}\n.ag-theme-alpine-dark .ag-icon-eye-slash::before {\n content: \"\\f112\";\n}\n.ag-theme-alpine-dark .ag-icon-eye::before {\n content: \"\\f113\";\n}\n.ag-theme-alpine-dark .ag-icon-filter::before {\n content: \"\\f114\";\n}\n.ag-theme-alpine-dark .ag-icon-first::before {\n content: \"\\f115\";\n}\n.ag-theme-alpine-dark .ag-icon-grip::before {\n content: \"\\f116\";\n}\n.ag-theme-alpine-dark .ag-icon-group::before {\n content: \"\\f117\";\n}\n.ag-theme-alpine-dark .ag-icon-last::before {\n content: \"\\f118\";\n}\n.ag-theme-alpine-dark .ag-icon-left::before {\n content: \"\\f119\";\n}\n.ag-theme-alpine-dark .ag-icon-linked::before {\n content: \"\\f11a\";\n}\n.ag-theme-alpine-dark .ag-icon-loading::before {\n content: \"\\f11b\";\n}\n.ag-theme-alpine-dark .ag-icon-maximize::before {\n content: \"\\f11c\";\n}\n.ag-theme-alpine-dark .ag-icon-menu::before {\n content: \"\\f11d\";\n}\n.ag-theme-alpine-dark .ag-icon-minimize::before {\n content: \"\\f11e\";\n}\n.ag-theme-alpine-dark .ag-icon-next::before {\n content: \"\\f11f\";\n}\n.ag-theme-alpine-dark .ag-icon-none::before {\n content: \"\\f120\";\n}\n.ag-theme-alpine-dark .ag-icon-not-allowed::before {\n content: \"\\f121\";\n}\n.ag-theme-alpine-dark .ag-icon-paste::before {\n content: \"\\f122\";\n}\n.ag-theme-alpine-dark .ag-icon-pin::before {\n content: \"\\f123\";\n}\n.ag-theme-alpine-dark .ag-icon-pivot::before {\n content: \"\\f124\";\n}\n.ag-theme-alpine-dark .ag-icon-previous::before {\n content: \"\\f125\";\n}\n.ag-theme-alpine-dark .ag-icon-right::before {\n content: \"\\f128\";\n}\n.ag-theme-alpine-dark .ag-icon-save::before {\n content: \"\\f129\";\n}\n.ag-theme-alpine-dark .ag-icon-small-down::before {\n content: \"\\f12a\";\n}\n.ag-theme-alpine-dark .ag-icon-small-left::before {\n content: \"\\f12b\";\n}\n.ag-theme-alpine-dark .ag-icon-small-right::before {\n content: \"\\f12c\";\n}\n.ag-theme-alpine-dark .ag-icon-small-up::before {\n content: \"\\f12d\";\n}\n.ag-theme-alpine-dark .ag-icon-tick::before {\n content: \"\\f12e\";\n}\n.ag-theme-alpine-dark .ag-icon-tree-closed::before {\n content: \"\\f12f\";\n}\n.ag-theme-alpine-dark .ag-icon-tree-indeterminate::before {\n content: \"\\f130\";\n}\n.ag-theme-alpine-dark .ag-icon-tree-open::before {\n content: \"\\f131\";\n}\n.ag-theme-alpine-dark .ag-icon-unlinked::before {\n content: \"\\f132\";\n}\n.ag-theme-alpine-dark .ag-icon-row-drag::before {\n content: \"\\f116\";\n}\n.ag-theme-alpine-dark .ag-left-arrow::before {\n content: \"\\f119\";\n}\n.ag-theme-alpine-dark .ag-right-arrow::before {\n content: \"\\f128\";\n}\n.ag-theme-alpine-dark .ag-root-wrapper {\n background-color: #181d1f;\n background-color: var(--ag-background-color, #181d1f);\n}\n.ag-theme-alpine-dark [class^=ag-], .ag-theme-alpine-dark [class^=ag-]:focus, .ag-theme-alpine-dark [class^=ag-]:after, .ag-theme-alpine-dark [class^=ag-]:before {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n outline: none;\n}\n.ag-theme-alpine-dark [class^=ag-]::-ms-clear {\n display: none;\n}\n.ag-theme-alpine-dark .ag-checkbox .ag-input-wrapper,\n.ag-theme-alpine-dark .ag-radio-button .ag-input-wrapper {\n overflow: visible;\n}\n.ag-theme-alpine-dark .ag-range-field .ag-input-wrapper {\n height: 100%;\n}\n.ag-theme-alpine-dark .ag-toggle-button {\n -webkit-box-flex: 0;\n flex: none;\n width: unset;\n min-width: unset;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-label-align-right .ag-label {\n margin-left: 6px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-label-align-right .ag-label {\n margin-right: 6px;\n}\n\n.ag-theme-alpine-dark input[class^=ag-] {\n margin: 0;\n background-color: #181d1f;\n background-color: var(--ag-background-color, #181d1f);\n}\n.ag-theme-alpine-dark textarea[class^=ag-],\n.ag-theme-alpine-dark select[class^=ag-] {\n background-color: #181d1f;\n background-color: var(--ag-background-color, #181d1f);\n}\n.ag-theme-alpine-dark input[class^=ag-]:not([type]),\n.ag-theme-alpine-dark input[class^=ag-][type=text],\n.ag-theme-alpine-dark input[class^=ag-][type=number],\n.ag-theme-alpine-dark input[class^=ag-][type=tel],\n.ag-theme-alpine-dark input[class^=ag-][type=date],\n.ag-theme-alpine-dark input[class^=ag-][type=datetime-local],\n.ag-theme-alpine-dark textarea[class^=ag-] {\n font-size: inherit;\n line-height: inherit;\n color: inherit;\n border-width: 1px;\n border-style: solid;\n border-color: #68686e;\n border-color: var(--ag-input-border-color, var(--ag-border-color, #68686e));\n}\n.ag-theme-alpine-dark input[class^=ag-]:not([type]):disabled,\n.ag-theme-alpine-dark input[class^=ag-][type=text]:disabled,\n.ag-theme-alpine-dark input[class^=ag-][type=number]:disabled,\n.ag-theme-alpine-dark input[class^=ag-][type=tel]:disabled,\n.ag-theme-alpine-dark input[class^=ag-][type=date]:disabled,\n.ag-theme-alpine-dark input[class^=ag-][type=datetime-local]:disabled,\n.ag-theme-alpine-dark textarea[class^=ag-]:disabled {\n color: rgba(255, 255, 255, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(255, 255, 255, 0.5));\n background-color: #282c2f;\n background-color: var(--ag-input-disabled-background-color, #282c2f);\n border-color: rgba(104, 104, 110, 0.3);\n border-color: var(--ag-input-disabled-border-color, rgba(104, 104, 110, 0.3));\n}\n.ag-theme-alpine-dark input[class^=ag-]:not([type]):focus,\n.ag-theme-alpine-dark input[class^=ag-][type=text]:focus,\n.ag-theme-alpine-dark input[class^=ag-][type=number]:focus,\n.ag-theme-alpine-dark input[class^=ag-][type=tel]:focus,\n.ag-theme-alpine-dark input[class^=ag-][type=date]:focus,\n.ag-theme-alpine-dark input[class^=ag-][type=datetime-local]:focus,\n.ag-theme-alpine-dark textarea[class^=ag-]:focus {\n outline: none;\n -webkit-box-shadow: 0 0 2px 0.5px rgba(255, 255, 255, 0.5), 0 0 4px 3px rgba(33, 150, 243, 0.6);\n box-shadow: 0 0 2px 0.5px rgba(255, 255, 255, 0.5), 0 0 4px 3px rgba(33, 150, 243, 0.6);\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine-dark input[class^=ag-]:not([type]):invalid,\n.ag-theme-alpine-dark input[class^=ag-][type=text]:invalid,\n.ag-theme-alpine-dark input[class^=ag-][type=number]:invalid,\n.ag-theme-alpine-dark input[class^=ag-][type=tel]:invalid,\n.ag-theme-alpine-dark input[class^=ag-][type=date]:invalid,\n.ag-theme-alpine-dark input[class^=ag-][type=datetime-local]:invalid,\n.ag-theme-alpine-dark textarea[class^=ag-]:invalid {\n border-width: 2px;\n border-style: solid;\n border-color: #e02525;\n border-color: var(--ag-input-border-color-invalid, var(--ag-invalid-color, #e02525));\n}\n.ag-theme-alpine-dark input[class^=ag-][type=number] {\n -moz-appearance: textfield;\n}\n.ag-theme-alpine-dark input[class^=ag-][type=number]::-webkit-outer-spin-button, .ag-theme-alpine-dark input[class^=ag-][type=number]::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n.ag-theme-alpine-dark input[class^=ag-][type=range] {\n padding: 0;\n}\n.ag-theme-alpine-dark input[class^=ag-][type=button]:focus, .ag-theme-alpine-dark button[class^=ag-]:focus {\n -webkit-box-shadow: 0 0 2px 0.5px rgba(255, 255, 255, 0.5), 0 0 4px 3px rgba(33, 150, 243, 0.6);\n box-shadow: 0 0 2px 0.5px rgba(255, 255, 255, 0.5), 0 0 4px 3px rgba(33, 150, 243, 0.6);\n}\n.ag-theme-alpine-dark .ag-drag-handle {\n color: #fff;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #fff));\n}\n.ag-theme-alpine-dark .ag-list-item, .ag-theme-alpine-dark .ag-virtual-list-item {\n height: 24px;\n}\n.ag-theme-alpine-dark .ag-keyboard-focus .ag-virtual-list-item:focus {\n outline: none;\n}\n.ag-theme-alpine-dark .ag-keyboard-focus .ag-virtual-list-item:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine-dark .ag-select-list {\n background-color: #181d1f;\n background-color: var(--ag-background-color, #181d1f);\n overflow-y: auto;\n overflow-x: hidden;\n}\n.ag-theme-alpine-dark .ag-list-item {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ag-theme-alpine-dark .ag-list-item.ag-active-item {\n background-color: rgba(33, 150, 243, 0.1);\n background-color: var(--ag-row-hover-color, rgba(33, 150, 243, 0.1));\n}\n.ag-theme-alpine-dark .ag-select-list-item {\n padding-left: 4px;\n padding-right: 4px;\n cursor: default;\n -moz-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n}\n.ag-theme-alpine-dark .ag-select-list-item span {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n.ag-theme-alpine-dark .ag-select .ag-picker-field-wrapper {\n background-color: #181d1f;\n background-color: var(--ag-background-color, #181d1f);\n min-height: 24px;\n cursor: default;\n}\n.ag-theme-alpine-dark .ag-select.ag-disabled .ag-picker-field-wrapper:focus {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.ag-theme-alpine-dark .ag-select:not(.ag-cell-editor) {\n height: 24px;\n}\n.ag-theme-alpine-dark .ag-select .ag-picker-field-display {\n margin: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ag-theme-alpine-dark .ag-select .ag-picker-field-icon {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-alpine-dark .ag-select.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-alpine-dark .ag-rich-select {\n background-color: #222628;\n background-color: var(--ag-control-panel-background-color, #222628);\n}\n.ag-theme-alpine-dark .ag-rich-select-list {\n width: 100%;\n min-width: 200px;\n height: 273px;\n}\n.ag-theme-alpine-dark .ag-rich-select-value {\n padding: 0 6px 0 18px;\n height: 42px;\n border-bottom: solid 1px;\n border-bottom-color: rgba(88, 86, 82, 0.5);\n border-bottom-color: var(--ag-secondary-border-color, rgba(88, 86, 82, 0.5));\n}\n.ag-theme-alpine-dark .ag-rich-select-virtual-list-item {\n cursor: default;\n height: 24px;\n}\n.ag-theme-alpine-dark .ag-rich-select-virtual-list-item:hover {\n background-color: rgba(33, 150, 243, 0.1);\n background-color: var(--ag-row-hover-color, rgba(33, 150, 243, 0.1));\n}\n.ag-theme-alpine-dark .ag-rich-select-row {\n padding-left: 18px;\n}\n.ag-theme-alpine-dark .ag-rich-select-row-selected {\n background-color: rgba(33, 150, 243, 0.3);\n background-color: var(--ag-selected-row-background-color, rgba(33, 150, 243, 0.3));\n}\n.ag-theme-alpine-dark .ag-row-drag,\n.ag-theme-alpine-dark .ag-selection-checkbox,\n.ag-theme-alpine-dark .ag-group-expanded,\n.ag-theme-alpine-dark .ag-group-contracted {\n color: #fff;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #fff));\n}\n.ag-theme-alpine-dark .ag-ltr .ag-row-drag, .ag-theme-alpine-dark .ag-ltr .ag-selection-checkbox, .ag-theme-alpine-dark .ag-ltr .ag-group-expanded, .ag-theme-alpine-dark .ag-ltr .ag-group-contracted {\n margin-right: 12px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-drag, .ag-theme-alpine-dark .ag-rtl .ag-selection-checkbox, .ag-theme-alpine-dark .ag-rtl .ag-group-expanded, .ag-theme-alpine-dark .ag-rtl .ag-group-contracted {\n margin-left: 12px;\n}\n\n.ag-theme-alpine-dark .ag-cell-wrapper > *:not(.ag-cell-value):not(.ag-group-value) {\n height: min(var(--ag-line-height, 40px), 40px);\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-flex: 0;\n flex: none;\n}\n.ag-theme-alpine-dark .ag-group-expanded,\n.ag-theme-alpine-dark .ag-group-contracted {\n cursor: pointer;\n}\n.ag-theme-alpine-dark .ag-group-title-bar-icon {\n cursor: pointer;\n -webkit-box-flex: 0;\n flex: none;\n color: #fff;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #fff));\n}\n.ag-theme-alpine-dark .ag-ltr .ag-group-child-count {\n margin-left: 2px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-group-child-count {\n margin-right: 2px;\n}\n\n.ag-theme-alpine-dark .ag-group-title-bar {\n background-color: #000;\n background-color: var(--ag-subheader-background-color, #000);\n padding: 6px;\n}\n.ag-theme-alpine-dark .ag-group-toolbar {\n padding: 6px;\n}\n.ag-theme-alpine-dark .ag-disabled-group-title-bar, .ag-theme-alpine-dark .ag-disabled-group-container {\n opacity: 0.5;\n}\n.ag-theme-alpine-dark .group-item {\n margin: 3px 0;\n}\n.ag-theme-alpine-dark .ag-label {\n white-space: nowrap;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-label {\n margin-right: 6px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-label {\n margin-left: 6px;\n}\n\n.ag-theme-alpine-dark .ag-label-align-top .ag-label {\n margin-bottom: 3px;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-slider-field, .ag-theme-alpine-dark .ag-ltr .ag-angle-select-field {\n margin-right: 12px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-slider-field, .ag-theme-alpine-dark .ag-rtl .ag-angle-select-field {\n margin-left: 12px;\n}\n\n.ag-theme-alpine-dark .ag-angle-select-parent-circle {\n width: 24px;\n height: 24px;\n border-radius: 12px;\n border: solid 1px;\n border-color: #68686e;\n border-color: var(--ag-border-color, #68686e);\n background-color: #181d1f;\n background-color: var(--ag-background-color, #181d1f);\n}\n.ag-theme-alpine-dark .ag-angle-select-child-circle {\n top: 4px;\n left: 12px;\n width: 6px;\n height: 6px;\n margin-left: -3px;\n margin-top: -4px;\n border-radius: 3px;\n background-color: #fff;\n background-color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #fff));\n}\n.ag-theme-alpine-dark .ag-picker-field-wrapper {\n border: 1px solid;\n border-color: #68686e;\n border-color: var(--ag-border-color, #68686e);\n border-radius: 5px;\n}\n.ag-theme-alpine-dark .ag-picker-field-wrapper:focus {\n -webkit-box-shadow: 0 0 2px 0.5px rgba(255, 255, 255, 0.5), 0 0 4px 3px rgba(33, 150, 243, 0.6);\n box-shadow: 0 0 2px 0.5px rgba(255, 255, 255, 0.5), 0 0 4px 3px rgba(33, 150, 243, 0.6);\n}\n.ag-theme-alpine-dark .ag-picker-field-button {\n background-color: #181d1f;\n background-color: var(--ag-background-color, #181d1f);\n color: #fff;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #fff));\n}\n.ag-theme-alpine-dark .ag-dialog.ag-color-dialog {\n border-radius: 5px;\n}\n.ag-theme-alpine-dark .ag-color-picker .ag-picker-field-display {\n height: 16px;\n}\n.ag-theme-alpine-dark .ag-color-panel {\n padding: 6px;\n}\n.ag-theme-alpine-dark .ag-spectrum-color {\n background-color: rgb(255, 0, 0);\n border-radius: 2px;\n}\n.ag-theme-alpine-dark .ag-spectrum-tools {\n padding: 10px;\n}\n.ag-theme-alpine-dark .ag-spectrum-sat {\n background-image: -webkit-gradient(linear, left top, right top, from(white), to(rgba(204, 154, 129, 0)));\n background-image: linear-gradient(to right, white, rgba(204, 154, 129, 0));\n}\n.ag-theme-alpine-dark .ag-spectrum-val {\n background-image: -webkit-gradient(linear, left bottom, left top, from(black), to(rgba(204, 154, 129, 0)));\n background-image: linear-gradient(to top, black, rgba(204, 154, 129, 0));\n}\n.ag-theme-alpine-dark .ag-spectrum-dragger {\n border-radius: 12px;\n height: 12px;\n width: 12px;\n border: 1px solid white;\n background: black;\n -webkit-box-shadow: 0 0 2px 0px rgba(0, 0, 0, 0.24);\n box-shadow: 0 0 2px 0px rgba(0, 0, 0, 0.24);\n}\n.ag-theme-alpine-dark .ag-spectrum-hue-background {\n border-radius: 2px;\n}\n.ag-theme-alpine-dark .ag-spectrum-alpha-background {\n border-radius: 2px;\n}\n.ag-theme-alpine-dark .ag-spectrum-tool {\n margin-bottom: 10px;\n height: 11px;\n border-radius: 2px;\n}\n.ag-theme-alpine-dark .ag-spectrum-slider {\n margin-top: -12px;\n width: 13px;\n height: 13px;\n border-radius: 13px;\n background-color: rgb(248, 248, 248);\n -webkit-box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\n box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\n}\n.ag-theme-alpine-dark .ag-recent-color {\n margin: 0 3px;\n}\n.ag-theme-alpine-dark .ag-recent-color:first-child {\n margin-left: 0;\n}\n.ag-theme-alpine-dark .ag-recent-color:last-child {\n margin-right: 0;\n}\n.ag-theme-alpine-dark.ag-dnd-ghost {\n border: solid 1px;\n border-color: #68686e;\n border-color: var(--ag-border-color, #68686e);\n background: #181d1f;\n background: var(--ag-background-color, #181d1f);\n border-radius: 3px;\n -webkit-box-shadow: 0 1px 20px 1px black;\n box-shadow: 0 1px 20px 1px black;\n padding: 6px;\n overflow: hidden;\n text-overflow: ellipsis;\n border: solid 1px;\n border-color: rgba(88, 86, 82, 0.5);\n border-color: var(--ag-secondary-border-color, rgba(88, 86, 82, 0.5));\n color: #fff;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #fff));\n height: 48px !important;\n line-height: 48px;\n margin: 0;\n padding: 0 12px;\n -webkit-transform: translateY(12px);\n transform: translateY(12px);\n}\n.ag-theme-alpine-dark .ag-dnd-ghost-icon {\n margin-right: 6px;\n color: #fff;\n color: var(--ag-foreground-color, #fff);\n}\n.ag-theme-alpine-dark .ag-popup-child:not(.ag-tooltip-custom) {\n -webkit-box-shadow: 0 1px 20px 1px black;\n box-shadow: 0 1px 20px 1px black;\n}\n.ag-dragging-range-handle .ag-theme-alpine-dark .ag-dialog, .ag-dragging-fill-handle .ag-theme-alpine-dark .ag-dialog {\n opacity: 0.7;\n pointer-events: none;\n}\n.ag-theme-alpine-dark .ag-dialog {\n border-radius: 3px;\n border: solid 1px;\n border-color: #68686e;\n border-color: var(--ag-border-color, #68686e);\n}\n.ag-theme-alpine-dark .ag-panel {\n background-color: #181d1f;\n background-color: var(--ag-background-color, #181d1f);\n}\n.ag-theme-alpine-dark .ag-panel-title-bar {\n background-color: #222628;\n background-color: var(--ag-header-background-color, #222628);\n color: #fff;\n color: var(--ag-header-foreground-color, var(--ag-secondary-foreground-color, var(--ag-foreground-color, #fff)));\n height: 48px;\n padding: 6px 18px;\n border-bottom: solid 1px;\n border-bottom-color: #68686e;\n border-bottom-color: var(--ag-border-color, #68686e);\n}\n.ag-theme-alpine-dark .ag-ltr .ag-panel-title-bar-button {\n margin-left: 6px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-panel-title-bar-button {\n margin-right: 6px;\n}\n\n.ag-theme-alpine-dark .ag-tooltip {\n background-color: #222628;\n background-color: var(--ag-header-background-color, #222628);\n color: #fff;\n color: var(--ag-foreground-color, #fff);\n padding: 6px;\n border: solid 1px;\n border-color: #68686e;\n border-color: var(--ag-border-color, #68686e);\n border-radius: 3px;\n -webkit-transition: opacity 1s;\n transition: opacity 1s;\n white-space: normal;\n}\n.ag-theme-alpine-dark .ag-tooltip.ag-tooltip-hiding {\n opacity: 0;\n}\n.ag-theme-alpine-dark .ag-tooltip-custom {\n -webkit-transition: opacity 1s;\n transition: opacity 1s;\n}\n.ag-theme-alpine-dark .ag-tooltip-custom.ag-tooltip-hiding {\n opacity: 0;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-column-select-indent-1 {\n padding-left: 16px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-column-select-indent-1 {\n padding-right: 16px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-column-select-indent-2 {\n padding-left: 32px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-column-select-indent-2 {\n padding-right: 32px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-column-select-indent-3 {\n padding-left: 48px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-column-select-indent-3 {\n padding-right: 48px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-column-select-indent-4 {\n padding-left: 64px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-column-select-indent-4 {\n padding-right: 64px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-column-select-indent-5 {\n padding-left: 80px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-column-select-indent-5 {\n padding-right: 80px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-column-select-indent-6 {\n padding-left: 96px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-column-select-indent-6 {\n padding-right: 96px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-column-select-indent-7 {\n padding-left: 112px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-column-select-indent-7 {\n padding-right: 112px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-column-select-indent-8 {\n padding-left: 128px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-column-select-indent-8 {\n padding-right: 128px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-column-select-indent-9 {\n padding-left: 144px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-column-select-indent-9 {\n padding-right: 144px;\n}\n\n.ag-theme-alpine-dark .ag-column-select-header-icon {\n cursor: pointer;\n}\n.ag-theme-alpine-dark .ag-keyboard-focus .ag-column-select-header-icon:focus {\n outline: none;\n}\n.ag-theme-alpine-dark .ag-keyboard-focus .ag-column-select-header-icon:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 0px;\n left: 0px;\n display: block;\n width: calc(100% - 0px);\n height: calc(100% - 0px);\n border: 1px solid;\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine-dark .ag-ltr .ag-column-group-icons:not(:last-child), .ag-theme-alpine-dark .ag-ltr .ag-column-select-header-icon:not(:last-child), .ag-theme-alpine-dark .ag-ltr .ag-column-select-header-checkbox:not(:last-child), .ag-theme-alpine-dark .ag-ltr .ag-column-select-header-filter-wrapper:not(:last-child), .ag-theme-alpine-dark .ag-ltr .ag-column-select-checkbox:not(:last-child), .ag-theme-alpine-dark .ag-ltr .ag-column-select-column-drag-handle:not(:last-child), .ag-theme-alpine-dark .ag-ltr .ag-column-select-column-group-drag-handle:not(:last-child), .ag-theme-alpine-dark .ag-ltr .ag-column-select-column-label:not(:last-child) {\n margin-right: 12px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-column-group-icons:not(:last-child), .ag-theme-alpine-dark .ag-rtl .ag-column-select-header-icon:not(:last-child), .ag-theme-alpine-dark .ag-rtl .ag-column-select-header-checkbox:not(:last-child), .ag-theme-alpine-dark .ag-rtl .ag-column-select-header-filter-wrapper:not(:last-child), .ag-theme-alpine-dark .ag-rtl .ag-column-select-checkbox:not(:last-child), .ag-theme-alpine-dark .ag-rtl .ag-column-select-column-drag-handle:not(:last-child), .ag-theme-alpine-dark .ag-rtl .ag-column-select-column-group-drag-handle:not(:last-child), .ag-theme-alpine-dark .ag-rtl .ag-column-select-column-label:not(:last-child) {\n margin-left: 12px;\n}\n\n.ag-theme-alpine-dark .ag-keyboard-focus .ag-column-select-virtual-list-item:focus {\n outline: none;\n}\n.ag-theme-alpine-dark .ag-keyboard-focus .ag-column-select-virtual-list-item:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 1px;\n left: 1px;\n display: block;\n width: calc(100% - 2px);\n height: calc(100% - 2px);\n border: 1px solid;\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine-dark .ag-column-select-column-group:not(:last-child),\n.ag-theme-alpine-dark .ag-column-select-column:not(:last-child) {\n margin-bottom: 9px;\n}\n.ag-theme-alpine-dark .ag-column-select-column-readonly,\n.ag-theme-alpine-dark .ag-column-select-column-group-readonly {\n color: rgba(255, 255, 255, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(255, 255, 255, 0.5));\n pointer-events: none;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-column-select-add-group-indent {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-column-select-add-group-indent {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-column-select-virtual-list-viewport {\n padding: 6px 0px;\n}\n.ag-theme-alpine-dark .ag-column-select-virtual-list-item {\n padding: 0 12px;\n}\n.ag-theme-alpine-dark .ag-rtl {\n text-align: right;\n}\n.ag-theme-alpine-dark .ag-root-wrapper {\n border: solid 1px;\n border-color: #68686e;\n border-color: var(--ag-border-color, #68686e);\n}\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-1 {\n padding-left: 46px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-1 {\n padding-right: 46px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-1 {\n padding-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-1 {\n padding-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-1 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-1 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-2 {\n padding-left: 74px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-2 {\n padding-right: 74px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-2 {\n padding-left: 56px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-2 {\n padding-right: 56px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-2 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-2 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-3 {\n padding-left: 102px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-3 {\n padding-right: 102px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-3 {\n padding-left: 84px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-3 {\n padding-right: 84px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-3 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-3 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-4 {\n padding-left: 130px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-4 {\n padding-right: 130px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-4 {\n padding-left: 112px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-4 {\n padding-right: 112px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-4 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-4 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-5 {\n padding-left: 158px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-5 {\n padding-right: 158px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-5 {\n padding-left: 140px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-5 {\n padding-right: 140px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-5 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-5 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-6 {\n padding-left: 186px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-6 {\n padding-right: 186px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-6 {\n padding-left: 168px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-6 {\n padding-right: 168px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-6 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-6 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-7 {\n padding-left: 214px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-7 {\n padding-right: 214px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-7 {\n padding-left: 196px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-7 {\n padding-right: 196px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-7 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-7 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-8 {\n padding-left: 242px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-8 {\n padding-right: 242px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-8 {\n padding-left: 224px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-8 {\n padding-right: 224px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-8 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-8 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-9 {\n padding-left: 270px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-9 {\n padding-right: 270px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-9 {\n padding-left: 252px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-9 {\n padding-right: 252px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-9 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-9 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-10 {\n padding-left: 298px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-10 {\n padding-right: 298px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-10 {\n padding-left: 280px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-10 {\n padding-right: 280px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-10 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-10 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-11 {\n padding-left: 326px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-11 {\n padding-right: 326px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-11 {\n padding-left: 308px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-11 {\n padding-right: 308px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-11 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-11 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-12 {\n padding-left: 354px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-12 {\n padding-right: 354px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-12 {\n padding-left: 336px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-12 {\n padding-right: 336px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-12 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-12 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-13 {\n padding-left: 382px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-13 {\n padding-right: 382px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-13 {\n padding-left: 364px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-13 {\n padding-right: 364px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-13 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-13 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-14 {\n padding-left: 410px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-14 {\n padding-right: 410px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-14 {\n padding-left: 392px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-14 {\n padding-right: 392px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-14 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-14 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-15 {\n padding-left: 438px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-15 {\n padding-right: 438px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-15 {\n padding-left: 420px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-15 {\n padding-right: 420px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-15 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-15 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-16 {\n padding-left: 466px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-16 {\n padding-right: 466px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-16 {\n padding-left: 448px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-16 {\n padding-right: 448px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-16 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-16 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-17 {\n padding-left: 494px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-17 {\n padding-right: 494px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-17 {\n padding-left: 476px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-17 {\n padding-right: 476px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-17 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-17 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-18 {\n padding-left: 522px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-18 {\n padding-right: 522px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-18 {\n padding-left: 504px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-18 {\n padding-right: 504px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-18 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-18 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-19 {\n padding-left: 550px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-19 {\n padding-right: 550px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-19 {\n padding-left: 532px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-19 {\n padding-right: 532px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-19 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-19 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-20 {\n padding-left: 578px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-20 {\n padding-right: 578px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-20 {\n padding-left: 560px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-20 {\n padding-right: 560px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-20 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-20 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-21 {\n padding-left: 606px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-21 {\n padding-right: 606px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-21 {\n padding-left: 588px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-21 {\n padding-right: 588px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-21 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-21 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-22 {\n padding-left: 634px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-22 {\n padding-right: 634px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-22 {\n padding-left: 616px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-22 {\n padding-right: 616px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-22 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-22 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-23 {\n padding-left: 662px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-23 {\n padding-right: 662px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-23 {\n padding-left: 644px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-23 {\n padding-right: 644px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-23 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-23 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-24 {\n padding-left: 690px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-24 {\n padding-right: 690px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-24 {\n padding-left: 672px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-24 {\n padding-right: 672px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-24 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-24 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-25 {\n padding-left: 718px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-25 {\n padding-right: 718px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-25 {\n padding-left: 700px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-25 {\n padding-right: 700px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-25 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-25 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-26 {\n padding-left: 746px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-26 {\n padding-right: 746px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-26 {\n padding-left: 728px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-26 {\n padding-right: 728px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-26 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-26 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-27 {\n padding-left: 774px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-27 {\n padding-right: 774px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-27 {\n padding-left: 756px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-27 {\n padding-right: 756px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-27 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-27 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-28 {\n padding-left: 802px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-28 {\n padding-right: 802px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-28 {\n padding-left: 784px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-28 {\n padding-right: 784px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-28 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-28 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-29 {\n padding-left: 830px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-29 {\n padding-right: 830px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-29 {\n padding-left: 812px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-29 {\n padding-right: 812px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-29 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-29 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-30 {\n padding-left: 858px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-30 {\n padding-right: 858px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-30 {\n padding-left: 840px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-30 {\n padding-right: 840px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-30 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-30 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-31 {\n padding-left: 886px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-31 {\n padding-right: 886px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-31 {\n padding-left: 868px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-31 {\n padding-right: 868px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-31 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-31 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-32 {\n padding-left: 914px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-32 {\n padding-right: 914px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-32 {\n padding-left: 896px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-32 {\n padding-right: 896px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-32 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-32 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-33 {\n padding-left: 942px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-33 {\n padding-right: 942px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-33 {\n padding-left: 924px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-33 {\n padding-right: 924px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-33 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-33 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-34 {\n padding-left: 970px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-34 {\n padding-right: 970px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-34 {\n padding-left: 952px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-34 {\n padding-right: 952px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-34 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-34 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-35 {\n padding-left: 998px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-35 {\n padding-right: 998px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-35 {\n padding-left: 980px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-35 {\n padding-right: 980px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-35 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-35 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-36 {\n padding-left: 1026px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-36 {\n padding-right: 1026px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-36 {\n padding-left: 1008px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-36 {\n padding-right: 1008px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-36 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-36 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-37 {\n padding-left: 1054px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-37 {\n padding-right: 1054px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-37 {\n padding-left: 1036px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-37 {\n padding-right: 1036px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-37 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-37 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-38 {\n padding-left: 1082px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-38 {\n padding-right: 1082px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-38 {\n padding-left: 1064px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-38 {\n padding-right: 1064px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-38 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-38 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-39 {\n padding-left: 1110px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-39 {\n padding-right: 1110px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-39 {\n padding-left: 1092px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-39 {\n padding-right: 1092px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-39 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-39 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-40 {\n padding-left: 1138px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-40 {\n padding-right: 1138px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-40 {\n padding-left: 1120px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-40 {\n padding-right: 1120px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-40 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-40 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-41 {\n padding-left: 1166px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-41 {\n padding-right: 1166px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-41 {\n padding-left: 1148px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-41 {\n padding-right: 1148px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-41 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-41 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-42 {\n padding-left: 1194px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-42 {\n padding-right: 1194px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-42 {\n padding-left: 1176px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-42 {\n padding-right: 1176px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-42 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-42 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-43 {\n padding-left: 1222px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-43 {\n padding-right: 1222px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-43 {\n padding-left: 1204px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-43 {\n padding-right: 1204px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-43 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-43 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-44 {\n padding-left: 1250px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-44 {\n padding-right: 1250px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-44 {\n padding-left: 1232px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-44 {\n padding-right: 1232px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-44 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-44 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-45 {\n padding-left: 1278px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-45 {\n padding-right: 1278px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-45 {\n padding-left: 1260px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-45 {\n padding-right: 1260px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-45 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-45 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-46 {\n padding-left: 1306px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-46 {\n padding-right: 1306px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-46 {\n padding-left: 1288px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-46 {\n padding-right: 1288px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-46 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-46 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-47 {\n padding-left: 1334px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-47 {\n padding-right: 1334px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-47 {\n padding-left: 1316px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-47 {\n padding-right: 1316px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-47 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-47 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-48 {\n padding-left: 1362px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-48 {\n padding-right: 1362px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-48 {\n padding-left: 1344px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-48 {\n padding-right: 1344px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-48 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-48 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-49 {\n padding-left: 1390px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-49 {\n padding-right: 1390px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-49 {\n padding-left: 1372px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-49 {\n padding-right: 1372px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-49 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-49 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-50 {\n padding-left: 1418px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-50 {\n padding-right: 1418px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-50 {\n padding-left: 1400px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-50 {\n padding-right: 1400px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-50 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-50 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-51 {\n padding-left: 1446px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-51 {\n padding-right: 1446px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-51 {\n padding-left: 1428px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-51 {\n padding-right: 1428px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-51 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-51 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-52 {\n padding-left: 1474px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-52 {\n padding-right: 1474px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-52 {\n padding-left: 1456px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-52 {\n padding-right: 1456px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-52 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-52 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-53 {\n padding-left: 1502px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-53 {\n padding-right: 1502px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-53 {\n padding-left: 1484px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-53 {\n padding-right: 1484px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-53 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-53 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-54 {\n padding-left: 1530px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-54 {\n padding-right: 1530px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-54 {\n padding-left: 1512px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-54 {\n padding-right: 1512px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-54 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-54 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-55 {\n padding-left: 1558px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-55 {\n padding-right: 1558px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-55 {\n padding-left: 1540px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-55 {\n padding-right: 1540px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-55 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-55 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-56 {\n padding-left: 1586px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-56 {\n padding-right: 1586px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-56 {\n padding-left: 1568px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-56 {\n padding-right: 1568px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-56 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-56 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-57 {\n padding-left: 1614px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-57 {\n padding-right: 1614px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-57 {\n padding-left: 1596px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-57 {\n padding-right: 1596px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-57 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-57 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-58 {\n padding-left: 1642px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-58 {\n padding-right: 1642px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-58 {\n padding-left: 1624px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-58 {\n padding-right: 1624px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-58 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-58 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-59 {\n padding-left: 1670px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-59 {\n padding-right: 1670px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-59 {\n padding-left: 1652px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-59 {\n padding-right: 1652px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-59 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-59 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-60 {\n padding-left: 1698px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-60 {\n padding-right: 1698px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-60 {\n padding-left: 1680px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-60 {\n padding-right: 1680px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-60 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-60 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-61 {\n padding-left: 1726px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-61 {\n padding-right: 1726px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-61 {\n padding-left: 1708px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-61 {\n padding-right: 1708px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-61 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-61 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-62 {\n padding-left: 1754px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-62 {\n padding-right: 1754px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-62 {\n padding-left: 1736px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-62 {\n padding-right: 1736px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-62 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-62 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-63 {\n padding-left: 1782px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-63 {\n padding-right: 1782px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-63 {\n padding-left: 1764px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-63 {\n padding-right: 1764px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-63 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-63 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-64 {\n padding-left: 1810px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-64 {\n padding-right: 1810px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-64 {\n padding-left: 1792px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-64 {\n padding-right: 1792px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-64 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-64 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-65 {\n padding-left: 1838px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-65 {\n padding-right: 1838px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-65 {\n padding-left: 1820px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-65 {\n padding-right: 1820px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-65 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-65 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-66 {\n padding-left: 1866px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-66 {\n padding-right: 1866px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-66 {\n padding-left: 1848px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-66 {\n padding-right: 1848px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-66 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-66 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-67 {\n padding-left: 1894px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-67 {\n padding-right: 1894px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-67 {\n padding-left: 1876px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-67 {\n padding-right: 1876px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-67 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-67 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-68 {\n padding-left: 1922px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-68 {\n padding-right: 1922px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-68 {\n padding-left: 1904px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-68 {\n padding-right: 1904px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-68 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-68 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-69 {\n padding-left: 1950px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-69 {\n padding-right: 1950px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-69 {\n padding-left: 1932px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-69 {\n padding-right: 1932px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-69 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-69 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-70 {\n padding-left: 1978px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-70 {\n padding-right: 1978px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-70 {\n padding-left: 1960px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-70 {\n padding-right: 1960px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-70 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-70 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-71 {\n padding-left: 2006px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-71 {\n padding-right: 2006px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-71 {\n padding-left: 1988px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-71 {\n padding-right: 1988px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-71 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-71 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-72 {\n padding-left: 2034px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-72 {\n padding-right: 2034px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-72 {\n padding-left: 2016px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-72 {\n padding-right: 2016px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-72 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-72 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-73 {\n padding-left: 2062px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-73 {\n padding-right: 2062px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-73 {\n padding-left: 2044px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-73 {\n padding-right: 2044px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-73 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-73 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-74 {\n padding-left: 2090px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-74 {\n padding-right: 2090px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-74 {\n padding-left: 2072px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-74 {\n padding-right: 2072px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-74 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-74 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-75 {\n padding-left: 2118px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-75 {\n padding-right: 2118px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-75 {\n padding-left: 2100px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-75 {\n padding-right: 2100px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-75 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-75 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-76 {\n padding-left: 2146px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-76 {\n padding-right: 2146px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-76 {\n padding-left: 2128px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-76 {\n padding-right: 2128px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-76 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-76 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-77 {\n padding-left: 2174px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-77 {\n padding-right: 2174px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-77 {\n padding-left: 2156px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-77 {\n padding-right: 2156px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-77 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-77 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-78 {\n padding-left: 2202px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-78 {\n padding-right: 2202px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-78 {\n padding-left: 2184px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-78 {\n padding-right: 2184px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-78 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-78 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-79 {\n padding-left: 2230px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-79 {\n padding-right: 2230px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-79 {\n padding-left: 2212px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-79 {\n padding-right: 2212px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-79 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-79 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-80 {\n padding-left: 2258px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-80 {\n padding-right: 2258px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-80 {\n padding-left: 2240px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-80 {\n padding-right: 2240px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-80 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-80 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-81 {\n padding-left: 2286px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-81 {\n padding-right: 2286px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-81 {\n padding-left: 2268px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-81 {\n padding-right: 2268px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-81 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-81 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-82 {\n padding-left: 2314px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-82 {\n padding-right: 2314px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-82 {\n padding-left: 2296px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-82 {\n padding-right: 2296px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-82 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-82 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-83 {\n padding-left: 2342px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-83 {\n padding-right: 2342px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-83 {\n padding-left: 2324px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-83 {\n padding-right: 2324px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-83 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-83 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-84 {\n padding-left: 2370px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-84 {\n padding-right: 2370px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-84 {\n padding-left: 2352px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-84 {\n padding-right: 2352px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-84 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-84 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-85 {\n padding-left: 2398px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-85 {\n padding-right: 2398px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-85 {\n padding-left: 2380px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-85 {\n padding-right: 2380px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-85 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-85 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-86 {\n padding-left: 2426px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-86 {\n padding-right: 2426px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-86 {\n padding-left: 2408px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-86 {\n padding-right: 2408px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-86 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-86 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-87 {\n padding-left: 2454px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-87 {\n padding-right: 2454px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-87 {\n padding-left: 2436px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-87 {\n padding-right: 2436px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-87 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-87 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-88 {\n padding-left: 2482px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-88 {\n padding-right: 2482px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-88 {\n padding-left: 2464px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-88 {\n padding-right: 2464px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-88 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-88 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-89 {\n padding-left: 2510px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-89 {\n padding-right: 2510px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-89 {\n padding-left: 2492px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-89 {\n padding-right: 2492px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-89 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-89 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-90 {\n padding-left: 2538px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-90 {\n padding-right: 2538px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-90 {\n padding-left: 2520px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-90 {\n padding-right: 2520px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-90 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-90 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-91 {\n padding-left: 2566px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-91 {\n padding-right: 2566px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-91 {\n padding-left: 2548px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-91 {\n padding-right: 2548px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-91 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-91 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-92 {\n padding-left: 2594px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-92 {\n padding-right: 2594px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-92 {\n padding-left: 2576px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-92 {\n padding-right: 2576px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-92 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-92 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-93 {\n padding-left: 2622px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-93 {\n padding-right: 2622px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-93 {\n padding-left: 2604px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-93 {\n padding-right: 2604px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-93 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-93 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-94 {\n padding-left: 2650px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-94 {\n padding-right: 2650px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-94 {\n padding-left: 2632px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-94 {\n padding-right: 2632px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-94 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-94 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-95 {\n padding-left: 2678px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-95 {\n padding-right: 2678px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-95 {\n padding-left: 2660px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-95 {\n padding-right: 2660px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-95 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-95 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-96 {\n padding-left: 2706px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-96 {\n padding-right: 2706px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-96 {\n padding-left: 2688px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-96 {\n padding-right: 2688px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-96 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-96 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-97 {\n padding-left: 2734px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-97 {\n padding-right: 2734px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-97 {\n padding-left: 2716px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-97 {\n padding-right: 2716px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-97 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-97 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-98 {\n padding-left: 2762px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-98 {\n padding-right: 2762px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-98 {\n padding-left: 2744px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-98 {\n padding-right: 2744px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-98 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-98 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-99 {\n padding-left: 2790px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-99 {\n padding-right: 2790px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-indent-99 {\n padding-left: 2772px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-indent-99 {\n padding-right: 2772px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-level-99 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-level-99 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-row-group-leaf-indent {\n margin-left: 28px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-row-group-leaf-indent {\n margin-right: 28px;\n}\n\n.ag-theme-alpine-dark .ag-value-change-delta {\n padding-right: 2px;\n}\n.ag-theme-alpine-dark .ag-value-change-delta-up {\n color: #43a047;\n color: var(--ag-value-change-delta-up-color, #43a047);\n}\n.ag-theme-alpine-dark .ag-value-change-delta-down {\n color: #e53935;\n color: var(--ag-value-change-delta-down-color, #e53935);\n}\n.ag-theme-alpine-dark .ag-value-change-value {\n background-color: transparent;\n border-radius: 1px;\n padding-left: 1px;\n padding-right: 1px;\n -webkit-transition: background-color 1s;\n transition: background-color 1s;\n}\n.ag-theme-alpine-dark .ag-value-change-value-highlight {\n background-color: rgba(22, 160, 133, 0.5);\n background-color: var(--ag-value-change-value-highlight-background-color, rgba(22, 160, 133, 0.5));\n -webkit-transition: background-color 0.1s;\n transition: background-color 0.1s;\n}\n.ag-theme-alpine-dark .ag-cell-data-changed {\n background-color: rgba(22, 160, 133, 0.5) !important;\n background-color: var(--ag-value-change-value-highlight-background-color, rgba(22, 160, 133, 0.5)) !important;\n}\n.ag-theme-alpine-dark .ag-cell-data-changed-animation {\n background-color: transparent;\n}\n.ag-theme-alpine-dark .ag-cell-highlight {\n background-color: #2196f3 !important;\n background-color: var(--ag-range-selection-highlight-color, var(--ag-range-selection-border-color, #2196f3)) !important;\n}\n.ag-theme-alpine-dark .ag-row {\n height: 42px;\n background-color: #181d1f;\n background-color: var(--ag-background-color, #181d1f);\n color: #fff;\n color: var(--ag-data-color, var(--ag-foreground-color, #fff));\n border-width: 1px;\n border-color: rgba(88, 86, 82, 0.5);\n border-color: var(--ag-row-border-color, var(--ag-secondary-border-color, rgba(88, 86, 82, 0.5)));\n border-bottom-style: solid;\n}\n.ag-theme-alpine-dark .ag-row-highlight-above::after, .ag-theme-alpine-dark .ag-row-highlight-below::after {\n content: \"\";\n position: absolute;\n width: calc(100% - 1px);\n height: 1px;\n background-color: #2196f3;\n background-color: var(--ag-range-selection-border-color, #2196f3);\n left: 1px;\n}\n.ag-theme-alpine-dark .ag-row-highlight-above::after {\n top: -1px;\n}\n.ag-theme-alpine-dark .ag-row-highlight-above.ag-row-first::after {\n top: 0;\n}\n.ag-theme-alpine-dark .ag-row-highlight-below::after {\n bottom: 0px;\n}\n.ag-theme-alpine-dark .ag-row-odd {\n background-color: #222628;\n background-color: var(--ag-odd-row-background-color, #222628);\n}\n.ag-theme-alpine-dark .ag-body-horizontal-scroll:not(.ag-scrollbar-invisible) .ag-horizontal-left-spacer:not(.ag-scroller-corner) {\n border-right: solid 1px;\n border-right-color: #68686e;\n border-right-color: var(--ag-border-color, #68686e);\n}\n.ag-theme-alpine-dark .ag-body-horizontal-scroll:not(.ag-scrollbar-invisible) .ag-horizontal-right-spacer:not(.ag-scroller-corner) {\n border-left: solid 1px;\n border-left-color: #68686e;\n border-left-color: var(--ag-border-color, #68686e);\n}\n.ag-theme-alpine-dark .ag-row-hover {\n background-color: rgba(33, 150, 243, 0.1);\n background-color: var(--ag-row-hover-color, rgba(33, 150, 243, 0.1));\n}\n.ag-theme-alpine-dark .ag-column-hover {\n background-color: rgba(33, 150, 243, 0.1);\n background-color: var(--ag-column-hover-color, rgba(33, 150, 243, 0.1));\n}\n.ag-theme-alpine-dark .ag-ltr .ag-right-aligned-cell {\n text-align: right;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-right-aligned-cell {\n text-align: left;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-right-aligned-cell .ag-cell-value, .ag-theme-alpine-dark .ag-ltr .ag-right-aligned-cell .ag-group-value {\n margin-left: auto;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-right-aligned-cell .ag-cell-value, .ag-theme-alpine-dark .ag-rtl .ag-right-aligned-cell .ag-group-value {\n margin-right: auto;\n}\n\n.ag-theme-alpine-dark .ag-cell, .ag-theme-alpine-dark .ag-full-width-row .ag-cell-wrapper.ag-row-group {\n border: 1px solid transparent;\n line-height: min(var(--ag-line-height, 40px), 40px);\n padding-left: 17px;\n padding-right: 17px;\n -webkit-font-smoothing: subpixel-antialiased;\n}\n.ag-theme-alpine-dark .ag-row > .ag-cell-wrapper {\n padding-left: 17px;\n padding-right: 17px;\n}\n.ag-theme-alpine-dark .ag-row-dragging {\n cursor: move;\n opacity: 0.5;\n}\n.ag-theme-alpine-dark .ag-cell-inline-editing {\n border: solid 1px;\n border-color: #68686e;\n border-color: var(--ag-border-color, #68686e);\n background: #181d1f;\n background: var(--ag-background-color, #181d1f);\n border-radius: 3px;\n -webkit-box-shadow: 0 1px 20px 1px black;\n box-shadow: 0 1px 20px 1px black;\n padding: 6px;\n padding: 0;\n height: 42px;\n background-color: #222628;\n background-color: var(--ag-control-panel-background-color, #222628);\n}\n.ag-theme-alpine-dark .ag-popup-editor {\n border: solid 1px;\n border-color: #68686e;\n border-color: var(--ag-border-color, #68686e);\n background: #181d1f;\n background: var(--ag-background-color, #181d1f);\n border-radius: 3px;\n -webkit-box-shadow: 0 1px 20px 1px black;\n box-shadow: 0 1px 20px 1px black;\n padding: 6px;\n background-color: #222628;\n background-color: var(--ag-control-panel-background-color, #222628);\n padding: 0;\n}\n.ag-theme-alpine-dark .ag-large-text-input {\n height: auto;\n padding: 18px;\n}\n.ag-theme-alpine-dark .ag-details-row {\n padding: 30px;\n background-color: #181d1f;\n background-color: var(--ag-background-color, #181d1f);\n}\n.ag-theme-alpine-dark .ag-layout-auto-height .ag-center-cols-clipper, .ag-theme-alpine-dark .ag-layout-auto-height .ag-center-cols-container, .ag-theme-alpine-dark .ag-layout-print .ag-center-cols-clipper, .ag-theme-alpine-dark .ag-layout-print .ag-center-cols-container {\n min-height: 50px;\n}\n.ag-theme-alpine-dark .ag-overlay-loading-wrapper {\n background-color: rgba(24, 29, 31, 0.66);\n background-color: var(--ag-modal-overlay-background-color, rgba(24, 29, 31, 0.66));\n}\n.ag-theme-alpine-dark .ag-overlay-loading-center {\n border: solid 1px;\n border-color: #68686e;\n border-color: var(--ag-border-color, #68686e);\n background: #181d1f;\n background: var(--ag-background-color, #181d1f);\n border-radius: 3px;\n -webkit-box-shadow: 0 1px 20px 1px black;\n box-shadow: 0 1px 20px 1px black;\n padding: 6px;\n}\n.ag-theme-alpine-dark .ag-overlay-no-rows-wrapper.ag-layout-auto-height {\n padding-top: 30px;\n}\n.ag-theme-alpine-dark .ag-loading {\n padding-left: 18px;\n display: -webkit-box;\n display: flex;\n height: 100%;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-alpine-dark .ag-loading-icon {\n padding-right: 12px;\n}\n.ag-theme-alpine-dark .ag-icon-loading {\n -webkit-animation-name: spin;\n animation-name: spin;\n -webkit-animation-duration: 1000ms;\n animation-duration: 1000ms;\n -webkit-animation-iteration-count: infinite;\n animation-iteration-count: infinite;\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n}\n@-webkit-keyframes spin {\n from {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@keyframes spin {\n from {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.ag-theme-alpine-dark .ag-floating-top {\n border-bottom: solid 1px;\n border-bottom-color: #68686e;\n border-bottom-color: var(--ag-border-color, #68686e);\n}\n.ag-theme-alpine-dark .ag-floating-bottom {\n border-top: solid 1px;\n border-top-color: #68686e;\n border-top-color: var(--ag-border-color, #68686e);\n}\n.ag-theme-alpine-dark .ag-ltr .ag-cell {\n border-right: solid transparent;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-cell {\n border-left: solid transparent;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-cell {\n border-right-width: 1px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-cell {\n border-left-width: 1px;\n}\n\n.ag-theme-alpine-dark .ag-cell.ag-cell-first-right-pinned:not(.ag-cell-range-left):not(.ag-cell-range-single-cell) {\n border-left: solid 1px;\n border-left-color: #68686e;\n border-left-color: var(--ag-border-color, #68686e);\n}\n.ag-theme-alpine-dark .ag-cell.ag-cell-last-left-pinned:not(.ag-cell-range-right):not(.ag-cell-range-single-cell) {\n border-right: solid 1px;\n border-right-color: #68686e;\n border-right-color: var(--ag-border-color, #68686e);\n}\n.ag-theme-alpine-dark .ag-row-selected {\n background-color: rgba(33, 150, 243, 0.3);\n background-color: var(--ag-selected-row-background-color, rgba(33, 150, 243, 0.3));\n}\n.ag-theme-alpine-dark .ag-cell-range-selected:not(.ag-cell-focus),\n.ag-theme-alpine-dark .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing) {\n background-color: rgba(33, 150, 243, 0.2);\n background-color: var(--ag-range-selection-background-color, rgba(33, 150, 243, 0.2));\n}\n.ag-theme-alpine-dark .ag-cell-range-selected:not(.ag-cell-focus).ag-cell-range-chart,\n.ag-theme-alpine-dark .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing).ag-cell-range-chart {\n background-color: rgba(0, 88, 255, 0.1) !important;\n background-color: var(--ag-range-selection-chart-background-color, rgba(0, 88, 255, 0.1)) !important;\n}\n.ag-theme-alpine-dark .ag-cell-range-selected:not(.ag-cell-focus).ag-cell-range-chart.ag-cell-range-chart-category,\n.ag-theme-alpine-dark .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing).ag-cell-range-chart.ag-cell-range-chart-category {\n background-color: rgba(0, 255, 132, 0.1) !important;\n background-color: var(--ag-range-selection-chart-category-background-color, rgba(0, 255, 132, 0.1)) !important;\n}\n.ag-theme-alpine-dark .ag-cell-range-selected-1:not(.ag-cell-focus),\n.ag-theme-alpine-dark .ag-root:not(.ag-context-menu-open) .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-1:not(.ag-cell-inline-editing) {\n background-color: rgba(33, 150, 243, 0.2);\n background-color: var(--ag-range-selection-background-color-1, var(--ag-range-selection-background-color, rgba(33, 150, 243, 0.2)));\n}\n.ag-theme-alpine-dark .ag-cell-range-selected-2:not(.ag-cell-focus),\n.ag-theme-alpine-dark .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-2 {\n background-color: rgba(33, 150, 243, 0.36);\n background-color: var(--ag-range-selection-background-color-2, rgba(33, 150, 243, 0.36));\n}\n.ag-theme-alpine-dark .ag-cell-range-selected-3:not(.ag-cell-focus),\n.ag-theme-alpine-dark .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-3 {\n background-color: rgba(33, 150, 243, 0.488);\n background-color: var(--ag-range-selection-background-color-3, rgba(33, 150, 243, 0.488));\n}\n.ag-theme-alpine-dark .ag-cell-range-selected-4:not(.ag-cell-focus),\n.ag-theme-alpine-dark .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-4 {\n background-color: rgba(33, 150, 243, 0.5904);\n background-color: var(--ag-range-selection-background-color-4, rgba(33, 150, 243, 0.5904));\n}\n.ag-theme-alpine-dark .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-top {\n border-top-color: #2196f3;\n border-top-color: var(--ag-range-selection-border-color, #2196f3);\n}\n.ag-theme-alpine-dark .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-right {\n border-right-color: #2196f3;\n border-right-color: var(--ag-range-selection-border-color, #2196f3);\n}\n.ag-theme-alpine-dark .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-bottom {\n border-bottom-color: #2196f3;\n border-bottom-color: var(--ag-range-selection-border-color, #2196f3);\n}\n.ag-theme-alpine-dark .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-left {\n border-left-color: #2196f3;\n border-left-color: var(--ag-range-selection-border-color, #2196f3);\n}\n.ag-theme-alpine-dark .ag-ltr .ag-has-focus .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-alpine-dark .ag-ltr .ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-alpine-dark .ag-ltr .ag-has-focus .ag-full-width-row.ag-row-focus .ag-cell-wrapper.ag-row-group,\n.ag-theme-alpine-dark .ag-ltr .ag-cell-range-single-cell,\n.ag-theme-alpine-dark .ag-ltr .ag-cell-range-single-cell.ag-cell-range-handle, .ag-theme-alpine-dark .ag-rtl .ag-has-focus .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-alpine-dark .ag-rtl .ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-alpine-dark .ag-rtl .ag-has-focus .ag-full-width-row.ag-row-focus .ag-cell-wrapper.ag-row-group,\n.ag-theme-alpine-dark .ag-rtl .ag-cell-range-single-cell,\n.ag-theme-alpine-dark .ag-rtl .ag-cell-range-single-cell.ag-cell-range-handle {\n border: 1px solid;\n border-color: #2196f3;\n border-color: var(--ag-range-selection-border-color, #2196f3);\n outline: initial;\n}\n.ag-theme-alpine-dark .ag-cell.ag-selection-fill-top,\n.ag-theme-alpine-dark .ag-cell.ag-selection-fill-top.ag-cell-range-selected {\n border-top: 1px dashed;\n border-top-color: #2196f3;\n border-top-color: var(--ag-range-selection-border-color, #2196f3);\n}\n.ag-theme-alpine-dark .ag-ltr .ag-cell.ag-selection-fill-right, .ag-theme-alpine-dark .ag-ltr .ag-cell.ag-selection-fill-right.ag-cell-range-selected {\n border-right: 1px dashed;\n border-right-color: #2196f3;\n border-right-color: var(--ag-range-selection-border-color, #2196f3);\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-cell.ag-selection-fill-right, .ag-theme-alpine-dark .ag-rtl .ag-cell.ag-selection-fill-right.ag-cell-range-selected {\n border-left: 1px dashed;\n border-left-color: #2196f3;\n border-left-color: var(--ag-range-selection-border-color, #2196f3);\n}\n\n.ag-theme-alpine-dark .ag-cell.ag-selection-fill-bottom,\n.ag-theme-alpine-dark .ag-cell.ag-selection-fill-bottom.ag-cell-range-selected {\n border-bottom: 1px dashed;\n border-bottom-color: #2196f3;\n border-bottom-color: var(--ag-range-selection-border-color, #2196f3);\n}\n.ag-theme-alpine-dark .ag-ltr .ag-cell.ag-selection-fill-left, .ag-theme-alpine-dark .ag-ltr .ag-cell.ag-selection-fill-left.ag-cell-range-selected {\n border-left: 1px dashed;\n border-left-color: #2196f3;\n border-left-color: var(--ag-range-selection-border-color, #2196f3);\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-cell.ag-selection-fill-left, .ag-theme-alpine-dark .ag-rtl .ag-cell.ag-selection-fill-left.ag-cell-range-selected {\n border-right: 1px dashed;\n border-right-color: #2196f3;\n border-right-color: var(--ag-range-selection-border-color, #2196f3);\n}\n\n.ag-theme-alpine-dark .ag-range-handle, .ag-theme-alpine-dark .ag-fill-handle {\n position: absolute;\n width: 6px;\n height: 6px;\n bottom: -1px;\n background-color: #2196f3;\n background-color: var(--ag-range-selection-border-color, #2196f3);\n}\n.ag-theme-alpine-dark .ag-ltr .ag-range-handle, .ag-theme-alpine-dark .ag-ltr .ag-fill-handle {\n right: -1px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-range-handle, .ag-theme-alpine-dark .ag-rtl .ag-fill-handle {\n left: -1px;\n}\n\n.ag-theme-alpine-dark .ag-fill-handle {\n cursor: cell;\n}\n.ag-theme-alpine-dark .ag-range-handle {\n cursor: nwse-resize;\n}\n.ag-theme-alpine-dark .ag-cell-inline-editing {\n border-color: rgba(33, 150, 243, 0.4) !important;\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4)) !important;\n}\n.ag-theme-alpine-dark .ag-menu {\n border: solid 1px;\n border-color: #68686e;\n border-color: var(--ag-border-color, #68686e);\n background: #181d1f;\n background: var(--ag-background-color, #181d1f);\n border-radius: 3px;\n -webkit-box-shadow: 0 1px 20px 1px black;\n box-shadow: 0 1px 20px 1px black;\n padding: 6px;\n padding: 0;\n}\n.ag-theme-alpine-dark .ag-menu-list {\n cursor: default;\n padding: 6px 0;\n}\n.ag-theme-alpine-dark .ag-menu-separator {\n height: 13px;\n}\n.ag-theme-alpine-dark .ag-menu-separator-part::after {\n content: \"\";\n display: block;\n border-top: solid 1px;\n border-top-color: #68686e;\n border-top-color: var(--ag-border-color, #68686e);\n}\n.ag-theme-alpine-dark .ag-menu-option-active, .ag-theme-alpine-dark .ag-compact-menu-option-active {\n background-color: rgba(33, 150, 243, 0.1);\n background-color: var(--ag-row-hover-color, rgba(33, 150, 243, 0.1));\n}\n.ag-theme-alpine-dark .ag-menu-option-part, .ag-theme-alpine-dark .ag-compact-menu-option-part {\n line-height: 16px;\n padding: 8px 0;\n}\n.ag-theme-alpine-dark .ag-menu-option-disabled, .ag-theme-alpine-dark .ag-compact-menu-option-disabled {\n opacity: 0.5;\n}\n.ag-theme-alpine-dark .ag-menu-option-icon, .ag-theme-alpine-dark .ag-compact-menu-option-icon {\n width: 16px;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-menu-option-icon, .ag-theme-alpine-dark .ag-ltr .ag-compact-menu-option-icon {\n padding-left: 12px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-menu-option-icon, .ag-theme-alpine-dark .ag-rtl .ag-compact-menu-option-icon {\n padding-right: 12px;\n}\n\n.ag-theme-alpine-dark .ag-menu-option-text, .ag-theme-alpine-dark .ag-compact-menu-option-text {\n padding-left: 12px;\n padding-right: 12px;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-menu-option-shortcut, .ag-theme-alpine-dark .ag-ltr .ag-compact-menu-option-shortcut {\n padding-right: 6px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-menu-option-shortcut, .ag-theme-alpine-dark .ag-rtl .ag-compact-menu-option-shortcut {\n padding-left: 6px;\n}\n\n.ag-theme-alpine-dark .ag-menu-option-popup-pointer, .ag-theme-alpine-dark .ag-compact-menu-option-popup-pointer {\n padding-right: 6px;\n}\n.ag-theme-alpine-dark .ag-tabs {\n min-width: 240px;\n}\n.ag-theme-alpine-dark .ag-tabs-header {\n width: 100%;\n display: -webkit-box;\n display: flex;\n}\n.ag-theme-alpine-dark .ag-tab {\n border-bottom: 2px solid transparent;\n display: -webkit-box;\n display: flex;\n -webkit-box-flex: 0;\n flex: none;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n cursor: pointer;\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n -webkit-transition: border-bottom 0.3s;\n transition: border-bottom 0.3s;\n}\n.ag-theme-alpine-dark .ag-keyboard-focus .ag-tab:focus {\n outline: none;\n}\n.ag-theme-alpine-dark .ag-keyboard-focus .ag-tab:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine-dark .ag-tab-selected {\n border-bottom-color: #2196f3;\n border-bottom-color: var(--ag-selected-tab-underline-color, var(--ag-alpine-active-color, #2196f3));\n}\n.ag-theme-alpine-dark .ag-menu-header {\n color: #fff;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #fff));\n}\n.ag-theme-alpine-dark .ag-filter-separator {\n border-top: solid 1px;\n border-top-color: #68686e;\n border-top-color: var(--ag-border-color, #68686e);\n}\n.ag-theme-alpine-dark .ag-menu:not(.ag-tabs) .ag-filter-select {\n min-width: 155px;\n}\n.ag-theme-alpine-dark .ag-tabs .ag-filter-select {\n min-width: 214px;\n}\n.ag-theme-alpine-dark .ag-filter-select .ag-picker-field-wrapper {\n width: 0;\n}\n.ag-theme-alpine-dark .ag-filter-condition-operator {\n height: 17px;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-filter-condition-operator-or {\n margin-left: 12px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-filter-condition-operator-or {\n margin-right: 12px;\n}\n\n.ag-theme-alpine-dark .ag-set-filter-select-all {\n padding-top: 12px;\n}\n.ag-theme-alpine-dark .ag-set-filter-list, .ag-theme-alpine-dark .ag-filter-no-matches {\n height: 144px;\n}\n.ag-theme-alpine-dark .ag-set-filter-filter {\n margin-top: 12px;\n margin-left: 12px;\n margin-right: 12px;\n}\n.ag-theme-alpine-dark .ag-filter-to {\n margin-top: 9px;\n}\n.ag-theme-alpine-dark .ag-mini-filter {\n margin: 12px 12px;\n}\n.ag-theme-alpine-dark .ag-set-filter-item {\n margin: 0px 12px;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-set-filter-item-value {\n margin-left: 12px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-set-filter-item-value {\n margin-right: 12px;\n}\n\n.ag-theme-alpine-dark .ag-filter-apply-panel {\n padding: 12px 12px;\n border-top: solid 1px;\n border-top-color: rgba(88, 86, 82, 0.5);\n border-top-color: var(--ag-secondary-border-color, rgba(88, 86, 82, 0.5));\n}\n.ag-theme-alpine-dark .ag-filter-apply-panel-button {\n line-height: 1.5;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-filter-apply-panel-button {\n margin-left: 12px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-filter-apply-panel-button {\n margin-right: 12px;\n}\n\n.ag-theme-alpine-dark .ag-simple-filter-body-wrapper {\n padding: 12px 12px;\n padding-bottom: 3px;\n}\n.ag-theme-alpine-dark .ag-simple-filter-body-wrapper > * {\n margin-bottom: 9px;\n}\n.ag-theme-alpine-dark .ag-filter-no-matches {\n padding: 12px 12px;\n}\n.ag-theme-alpine-dark .ag-multi-filter-menu-item {\n margin: 6px 0;\n}\n.ag-theme-alpine-dark .ag-multi-filter-group-title-bar {\n padding: 12px 6px;\n background-color: transparent;\n}\n.ag-theme-alpine-dark .ag-keyboard-focus .ag-multi-filter-group-title-bar:focus {\n outline: none;\n}\n.ag-theme-alpine-dark .ag-keyboard-focus .ag-multi-filter-group-title-bar:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine-dark .ag-side-bar {\n position: relative;\n}\n.ag-theme-alpine-dark .ag-tool-panel-wrapper {\n width: 250px;\n background-color: #222628;\n background-color: var(--ag-control-panel-background-color, #222628);\n}\n.ag-theme-alpine-dark .ag-side-buttons {\n padding-top: 24px;\n width: 20px;\n position: relative;\n color: #fff;\n color: var(--ag-foreground-color, #fff);\n overflow: hidden;\n}\n.ag-theme-alpine-dark button.ag-side-button-button {\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n background: transparent;\n padding: 12px 0 12px 0;\n width: 100%;\n margin: 0;\n min-height: 108px;\n background-position-y: center;\n background-position-x: center;\n background-repeat: no-repeat;\n border: none;\n}\n.ag-theme-alpine-dark button.ag-side-button-button:focus {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.ag-theme-alpine-dark .ag-keyboard-focus .ag-side-button-button:focus {\n outline: none;\n}\n.ag-theme-alpine-dark .ag-keyboard-focus .ag-side-button-button:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine-dark .ag-side-button-icon-wrapper {\n margin-bottom: 3px;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-side-bar-left,\n.ag-theme-alpine-dark .ag-rtl .ag-side-bar-right {\n border-right: solid 1px;\n border-right-color: #68686e;\n border-right-color: var(--ag-border-color, #68686e);\n}\n.ag-theme-alpine-dark .ag-ltr .ag-side-bar-left .ag-tool-panel-wrapper,\n.ag-theme-alpine-dark .ag-rtl .ag-side-bar-right .ag-tool-panel-wrapper {\n border-left: solid 1px;\n border-left-color: #68686e;\n border-left-color: var(--ag-border-color, #68686e);\n}\n.ag-theme-alpine-dark .ag-ltr .ag-side-bar-left .ag-side-button-button,\n.ag-theme-alpine-dark .ag-rtl .ag-side-bar-right .ag-side-button-button {\n border-right: 2px solid transparent;\n -webkit-transition: border-right 0.3s;\n transition: border-right 0.3s;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-side-bar-left .ag-selected .ag-side-button-button,\n.ag-theme-alpine-dark .ag-rtl .ag-side-bar-right .ag-selected .ag-side-button-button {\n border-right-color: #2196f3;\n border-right-color: var(--ag-selected-tab-underline-color, var(--ag-alpine-active-color, #2196f3));\n}\n.ag-theme-alpine-dark .ag-rtl .ag-side-bar-left,\n.ag-theme-alpine-dark .ag-ltr .ag-side-bar-right {\n border-left: solid 1px;\n border-left-color: #68686e;\n border-left-color: var(--ag-border-color, #68686e);\n}\n.ag-theme-alpine-dark .ag-rtl .ag-side-bar-left .ag-tool-panel-wrapper,\n.ag-theme-alpine-dark .ag-ltr .ag-side-bar-right .ag-tool-panel-wrapper {\n border-right: solid 1px;\n border-right-color: #68686e;\n border-right-color: var(--ag-border-color, #68686e);\n}\n.ag-theme-alpine-dark .ag-rtl .ag-side-bar-left .ag-side-button-button,\n.ag-theme-alpine-dark .ag-ltr .ag-side-bar-right .ag-side-button-button {\n border-left: 2px solid transparent;\n -webkit-transition: border-left 0.3s;\n transition: border-left 0.3s;\n}\n.ag-theme-alpine-dark .ag-rtl .ag-side-bar-left .ag-selected .ag-side-button-button,\n.ag-theme-alpine-dark .ag-ltr .ag-side-bar-right .ag-selected .ag-side-button-button {\n border-left-color: #2196f3;\n border-left-color: var(--ag-selected-tab-underline-color, var(--ag-alpine-active-color, #2196f3));\n}\n.ag-theme-alpine-dark .ag-filter-toolpanel-header {\n height: 36px;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-filter-toolpanel-header, .ag-theme-alpine-dark .ag-ltr .ag-filter-toolpanel-search {\n padding-left: 6px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-filter-toolpanel-header, .ag-theme-alpine-dark .ag-rtl .ag-filter-toolpanel-search {\n padding-right: 6px;\n}\n\n.ag-theme-alpine-dark .ag-keyboard-focus .ag-filter-toolpanel-header:focus {\n outline: none;\n}\n.ag-theme-alpine-dark .ag-keyboard-focus .ag-filter-toolpanel-header:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine-dark .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n font-family: \"agGridAlpine\";\n font-size: 16px;\n line-height: 16px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n content: \"\\f114\";\n position: absolute;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n padding-left: 6px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n padding-right: 6px;\n}\n\n.ag-theme-alpine-dark .ag-filter-toolpanel-group-level-0-header {\n height: 48px;\n}\n.ag-theme-alpine-dark .ag-filter-toolpanel-group-item {\n margin-top: 3px;\n margin-bottom: 3px;\n}\n.ag-theme-alpine-dark .ag-filter-toolpanel-search {\n height: 48px;\n}\n.ag-theme-alpine-dark .ag-filter-toolpanel-search-input {\n -webkit-box-flex: 1;\n flex-grow: 1;\n height: 24px;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-filter-toolpanel-search-input {\n margin-right: 6px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-filter-toolpanel-search-input {\n margin-left: 6px;\n}\n\n.ag-theme-alpine-dark .ag-filter-toolpanel-group-level-0 {\n border-top: solid 1px;\n border-top-color: rgba(88, 86, 82, 0.5);\n border-top-color: var(--ag-secondary-border-color, rgba(88, 86, 82, 0.5));\n}\n.ag-theme-alpine-dark .ag-ltr .ag-filter-toolpanel-expand, .ag-theme-alpine-dark .ag-ltr .ag-filter-toolpanel-group-title-bar-icon {\n margin-right: 6px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-filter-toolpanel-expand, .ag-theme-alpine-dark .ag-rtl .ag-filter-toolpanel-group-title-bar-icon {\n margin-left: 6px;\n}\n\n.ag-theme-alpine-dark .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-1-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-2-header {\n padding-left: 22px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-2-header {\n padding-right: 22px;\n}\n\n.ag-theme-alpine-dark .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-2-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-3-header {\n padding-left: 38px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-3-header {\n padding-right: 38px;\n}\n\n.ag-theme-alpine-dark .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-3-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-4-header {\n padding-left: 54px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-4-header {\n padding-right: 54px;\n}\n\n.ag-theme-alpine-dark .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-4-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-5-header {\n padding-left: 70px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-5-header {\n padding-right: 70px;\n}\n\n.ag-theme-alpine-dark .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-5-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-6-header {\n padding-left: 86px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-6-header {\n padding-right: 86px;\n}\n\n.ag-theme-alpine-dark .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-6-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-7-header {\n padding-left: 102px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-7-header {\n padding-right: 102px;\n}\n\n.ag-theme-alpine-dark .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-7-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-8-header {\n padding-left: 118px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-8-header {\n padding-right: 118px;\n}\n\n.ag-theme-alpine-dark .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-8-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-9-header {\n padding-left: 134px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-9-header {\n padding-right: 134px;\n}\n\n.ag-theme-alpine-dark .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-9-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-10-header {\n padding-left: 150px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-10-header {\n padding-right: 150px;\n}\n\n.ag-theme-alpine-dark .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-10-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-11-header {\n padding-left: 166px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-11-header {\n padding-right: 166px;\n}\n\n.ag-theme-alpine-dark .ag-filter-toolpanel-instance-header.ag-filter-toolpanel-group-level-1-header {\n padding-left: 6px;\n}\n.ag-theme-alpine-dark .ag-filter-toolpanel-instance-filter {\n border-top: solid 1px;\n border-top-color: #68686e;\n border-top-color: var(--ag-border-color, #68686e);\n border-bottom: solid 1px;\n border-bottom-color: #68686e;\n border-bottom-color: var(--ag-border-color, #68686e);\n margin-top: 6px;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-filter-toolpanel-instance-header-icon {\n margin-left: 6px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-filter-toolpanel-instance-header-icon {\n margin-right: 6px;\n}\n\n.ag-theme-alpine-dark .ag-pivot-mode-panel {\n min-height: 48px;\n height: 48px;\n display: -webkit-box;\n display: flex;\n}\n.ag-theme-alpine-dark .ag-pivot-mode-select {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-pivot-mode-select {\n margin-left: 12px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-pivot-mode-select {\n margin-right: 12px;\n}\n\n.ag-theme-alpine-dark .ag-keyboard-focus .ag-column-select-header:focus {\n outline: none;\n}\n.ag-theme-alpine-dark .ag-keyboard-focus .ag-column-select-header:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine-dark .ag-column-select-header {\n height: 48px;\n -webkit-box-align: center;\n align-items: center;\n padding: 0 12px;\n border-bottom: solid 1px;\n border-bottom-color: rgba(88, 86, 82, 0.5);\n border-bottom-color: var(--ag-secondary-border-color, rgba(88, 86, 82, 0.5));\n}\n.ag-theme-alpine-dark .ag-column-panel-column-select {\n border-bottom: solid 1px;\n border-bottom-color: rgba(88, 86, 82, 0.5);\n border-bottom-color: var(--ag-secondary-border-color, rgba(88, 86, 82, 0.5));\n border-top: solid 1px;\n border-top-color: rgba(88, 86, 82, 0.5);\n border-top-color: var(--ag-secondary-border-color, rgba(88, 86, 82, 0.5));\n}\n.ag-theme-alpine-dark .ag-column-group-icons,\n.ag-theme-alpine-dark .ag-column-select-header-icon {\n color: #fff;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #fff));\n}\n.ag-theme-alpine-dark .ag-column-select-list .ag-list-item-hovered::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n height: 1px;\n background-color: #2196f3;\n background-color: var(--ag-range-selection-border-color, #2196f3);\n}\n.ag-theme-alpine-dark .ag-column-select-list .ag-item-highlight-top::after {\n top: 0;\n}\n.ag-theme-alpine-dark .ag-column-select-list .ag-item-highlight-bottom::after {\n bottom: 0;\n}\n.ag-theme-alpine-dark .ag-header {\n background-color: #222628;\n background-color: var(--ag-header-background-color, #222628);\n border-bottom: solid 1px;\n border-bottom-color: #68686e;\n border-bottom-color: var(--ag-border-color, #68686e);\n}\n.ag-theme-alpine-dark .ag-header-row {\n color: #fff;\n color: var(--ag-header-foreground-color, var(--ag-secondary-foreground-color, var(--ag-foreground-color, #fff)));\n height: 48px;\n}\n.ag-theme-alpine-dark .ag-pinned-right-header {\n border-left: solid 1px;\n border-left-color: #68686e;\n border-left-color: var(--ag-border-color, #68686e);\n}\n.ag-theme-alpine-dark .ag-pinned-left-header {\n border-right: solid 1px;\n border-right-color: #68686e;\n border-right-color: var(--ag-border-color, #68686e);\n}\n.ag-theme-alpine-dark .ag-ltr .ag-header-cell:not(.ag-right-aligned-header) .ag-header-label-icon {\n margin-left: 6px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-header-cell:not(.ag-right-aligned-header) .ag-header-label-icon {\n margin-right: 6px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-header-cell.ag-right-aligned-header .ag-header-label-icon {\n margin-right: 6px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-header-cell.ag-right-aligned-header .ag-header-label-icon {\n margin-left: 6px;\n}\n\n.ag-theme-alpine-dark .ag-header-cell,\n.ag-theme-alpine-dark .ag-header-group-cell {\n padding-left: 18px;\n padding-right: 18px;\n}\n.ag-theme-alpine-dark .ag-header-cell.ag-header-cell-moving,\n.ag-theme-alpine-dark .ag-header-group-cell.ag-header-cell-moving {\n background-color: #181d1f;\n background-color: var(--ag-header-cell-moving-background-color, var(--ag-background-color, #181d1f));\n}\n.ag-theme-alpine-dark .ag-keyboard-focus .ag-header-cell:focus {\n outline: none;\n}\n.ag-theme-alpine-dark .ag-keyboard-focus .ag-header-cell:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine-dark .ag-keyboard-focus .ag-header-group-cell:focus {\n outline: none;\n}\n.ag-theme-alpine-dark .ag-keyboard-focus .ag-header-group-cell:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine-dark .ag-header-icon {\n color: #fff;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #fff));\n}\n.ag-theme-alpine-dark .ag-header-expand-icon {\n cursor: pointer;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-header-expand-icon {\n padding-left: 4px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-header-expand-icon {\n padding-right: 4px;\n}\n\n.ag-theme-alpine-dark .ag-header-row:not(:first-child) .ag-header-cell,\n.ag-theme-alpine-dark .ag-header-row:not(:first-child) .ag-header-group-cell.ag-header-group-cell-with-group {\n border-top: solid 1px;\n border-top-color: #68686e;\n border-top-color: var(--ag-border-color, #68686e);\n}\n.ag-theme-alpine-dark .ag-header-cell-resize {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-alpine-dark .ag-header-cell-resize::after {\n content: \"\";\n position: absolute;\n z-index: 1;\n display: block;\n left: calc(50% - 1px);\n width: 2px;\n height: 30%;\n top: calc(50% - 15%);\n background-color: rgba(104, 104, 110, 0.5);\n background-color: var(--ag-header-column-resize-handle-color, rgba(104, 104, 110, 0.5));\n}\n.ag-theme-alpine-dark .ag-pinned-right-header .ag-header-cell-resize::after {\n left: calc(50% - 2px);\n}\n.ag-theme-alpine-dark .ag-ltr .ag-header-select-all {\n margin-right: 18px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-header-select-all {\n margin-left: 18px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-floating-filter-button {\n margin-left: 18px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-floating-filter-button {\n margin-right: 18px;\n}\n\n.ag-theme-alpine-dark .ag-floating-filter-button-button {\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background: transparent;\n border: none;\n height: 16px;\n padding: 0;\n width: 16px;\n}\n.ag-theme-alpine-dark .ag-filter-loading {\n background-color: #222628;\n background-color: var(--ag-control-panel-background-color, #222628);\n height: 100%;\n padding: 12px 12px;\n position: absolute;\n width: 100%;\n z-index: 1;\n}\n.ag-theme-alpine-dark .ag-paging-panel {\n border-top: 1px solid;\n border-top-color: #68686e;\n border-top-color: var(--ag-border-color, #68686e);\n color: #fff;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #fff));\n height: 48px;\n}\n.ag-theme-alpine-dark .ag-paging-panel > * {\n margin: 0 18px;\n}\n.ag-theme-alpine-dark .ag-paging-button {\n cursor: pointer;\n}\n.ag-theme-alpine-dark .ag-paging-button.ag-disabled {\n cursor: default;\n color: rgba(255, 255, 255, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(255, 255, 255, 0.5));\n}\n.ag-theme-alpine-dark .ag-keyboard-focus .ag-paging-button:focus {\n outline: none;\n}\n.ag-theme-alpine-dark .ag-keyboard-focus .ag-paging-button:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 0px;\n left: 0px;\n display: block;\n width: calc(100% - 0px);\n height: calc(100% - 0px);\n border: 1px solid;\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine-dark .ag-paging-button, .ag-theme-alpine-dark .ag-paging-description {\n margin: 0 6px;\n}\n.ag-theme-alpine-dark .ag-status-bar {\n border-top: solid 1px;\n border-top-color: #68686e;\n border-top-color: var(--ag-border-color, #68686e);\n color: rgba(255, 255, 255, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(255, 255, 255, 0.5));\n padding-right: 24px;\n padding-left: 24px;\n line-height: 1.5;\n}\n.ag-theme-alpine-dark .ag-status-name-value-value {\n color: #fff;\n color: var(--ag-foreground-color, #fff);\n}\n.ag-theme-alpine-dark .ag-status-bar-center {\n text-align: center;\n}\n.ag-theme-alpine-dark .ag-status-name-value {\n margin-left: 6px;\n margin-right: 6px;\n padding-top: 12px;\n padding-bottom: 12px;\n}\n.ag-theme-alpine-dark .ag-column-drop-cell {\n background: rgba(255, 255, 255, 0.07);\n background: var(--ag-chip-background-color, rgba(255, 255, 255, 0.07));\n border-radius: 24px;\n height: 24px;\n padding: 0 3px;\n border: 1px solid transparent;\n}\n.ag-theme-alpine-dark .ag-keyboard-focus .ag-column-drop-cell:focus {\n outline: none;\n}\n.ag-theme-alpine-dark .ag-keyboard-focus .ag-column-drop-cell:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 2px;\n left: 2px;\n display: block;\n width: calc(100% - 4px);\n height: calc(100% - 4px);\n border: 1px solid;\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine-dark .ag-column-drop-cell-text {\n margin: 0 6px;\n}\n.ag-theme-alpine-dark .ag-column-drop-cell-button {\n min-width: 24px;\n margin: 0 3px;\n color: #fff;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #fff));\n}\n.ag-theme-alpine-dark .ag-column-drop-cell-drag-handle {\n margin-left: 12px;\n}\n.ag-theme-alpine-dark .ag-column-drop-cell-ghost {\n opacity: 0.5;\n}\n.ag-theme-alpine-dark .ag-column-drop-horizontal {\n background-color: #222628;\n background-color: var(--ag-control-panel-background-color, #222628);\n color: #fff;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #fff));\n height: 42px;\n border-bottom: solid 1px;\n border-bottom-color: #68686e;\n border-bottom-color: var(--ag-border-color, #68686e);\n}\n.ag-theme-alpine-dark .ag-ltr .ag-column-drop-horizontal {\n padding-left: 18px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-column-drop-horizontal {\n padding-right: 18px;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-column-drop-horizontal-half-width:not(:last-child) {\n border-right: solid 1px;\n border-right-color: #68686e;\n border-right-color: var(--ag-border-color, #68686e);\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-column-drop-horizontal-half-width:not(:last-child) {\n border-left: solid 1px;\n border-left-color: #68686e;\n border-left-color: var(--ag-border-color, #68686e);\n}\n\n.ag-theme-alpine-dark .ag-column-drop-horizontal-cell-separator {\n margin: 0 6px;\n color: #fff;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #fff));\n}\n.ag-theme-alpine-dark .ag-column-drop-horizontal-empty-message {\n color: rgba(255, 255, 255, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(255, 255, 255, 0.5));\n}\n.ag-theme-alpine-dark .ag-ltr .ag-column-drop-horizontal-icon {\n margin-right: 18px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-column-drop-horizontal-icon {\n margin-left: 18px;\n}\n\n.ag-theme-alpine-dark .ag-column-drop-vertical-list {\n padding-bottom: 6px;\n padding-right: 6px;\n padding-left: 6px;\n}\n.ag-theme-alpine-dark .ag-column-drop-vertical-cell {\n margin-top: 6px;\n}\n.ag-theme-alpine-dark .ag-column-drop-vertical {\n min-height: 50px;\n border-bottom: solid 1px;\n border-bottom-color: rgba(88, 86, 82, 0.5);\n border-bottom-color: var(--ag-secondary-border-color, rgba(88, 86, 82, 0.5));\n}\n.ag-theme-alpine-dark .ag-column-drop-vertical.ag-last-column-drop {\n border-bottom: none;\n}\n.ag-theme-alpine-dark .ag-column-drop-vertical-icon {\n margin-left: 6px;\n margin-right: 6px;\n}\n.ag-theme-alpine-dark .ag-column-drop-vertical-empty-message {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n overflow: hidden;\n color: rgba(255, 255, 255, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(255, 255, 255, 0.5));\n margin-top: 6px;\n}\n.ag-theme-alpine-dark .ag-select-agg-func-popup {\n border: solid 1px;\n border-color: #68686e;\n border-color: var(--ag-border-color, #68686e);\n background: #181d1f;\n background: var(--ag-background-color, #181d1f);\n border-radius: 3px;\n -webkit-box-shadow: 0 1px 20px 1px black;\n box-shadow: 0 1px 20px 1px black;\n padding: 6px;\n background: #181d1f;\n background: var(--ag-background-color, #181d1f);\n height: 105px;\n padding: 0;\n}\n.ag-theme-alpine-dark .ag-select-agg-func-virtual-list-item {\n cursor: default;\n padding-left: 12px;\n}\n.ag-theme-alpine-dark .ag-select-agg-func-virtual-list-item:hover {\n background-color: rgba(33, 150, 243, 0.3);\n background-color: var(--ag-selected-row-background-color, rgba(33, 150, 243, 0.3));\n}\n.ag-theme-alpine-dark .ag-keyboard-focus .ag-select-agg-func-virtual-list-item:focus {\n outline: none;\n}\n.ag-theme-alpine-dark .ag-keyboard-focus .ag-select-agg-func-virtual-list-item:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 1px;\n left: 1px;\n display: block;\n width: calc(100% - 2px);\n height: calc(100% - 2px);\n border: 1px solid;\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine-dark .ag-chart-menu {\n border-radius: 3px;\n background: #181d1f;\n background: var(--ag-background-color, #181d1f);\n}\n.ag-theme-alpine-dark .ag-chart-menu-icon {\n opacity: 0.5;\n line-height: 24px;\n font-size: 24px;\n width: 24px;\n height: 24px;\n margin: 2px 0;\n cursor: pointer;\n border-radius: 3px;\n color: #fff;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #fff));\n}\n.ag-theme-alpine-dark .ag-chart-menu-icon:hover {\n opacity: 1;\n}\n.ag-theme-alpine-dark .ag-chart-mini-thumbnail {\n border: 1px solid;\n border-color: rgba(88, 86, 82, 0.5);\n border-color: var(--ag-secondary-border-color, rgba(88, 86, 82, 0.5));\n border-radius: 5px;\n margin: 5px;\n}\n.ag-theme-alpine-dark .ag-chart-mini-thumbnail:nth-last-child(3), .ag-theme-alpine-dark .ag-chart-mini-thumbnail:nth-last-child(3) ~ .ag-chart-mini-thumbnail {\n margin-left: auto;\n margin-right: auto;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-chart-mini-thumbnail:first-child {\n margin-left: 0;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-chart-mini-thumbnail:first-child {\n margin-right: 0;\n}\n\n.ag-theme-alpine-dark .ag-ltr .ag-chart-mini-thumbnail:last-child {\n margin-right: 0;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-chart-mini-thumbnail:last-child {\n margin-left: 0;\n}\n\n.ag-theme-alpine-dark .ag-chart-mini-thumbnail.ag-selected {\n border-color: #2196f3;\n border-color: var(--ag-minichart-selected-chart-color, var(--ag-checkbox-checked-color, var(--ag-alpine-active-color, #2196f3)));\n}\n.ag-theme-alpine-dark .ag-chart-settings-card-item {\n background: #fff;\n background: var(--ag-foreground-color, #fff);\n width: 8px;\n height: 8px;\n border-radius: 4px;\n}\n.ag-theme-alpine-dark .ag-chart-settings-card-item.ag-selected {\n background-color: #2196f3;\n background-color: var(--ag-minichart-selected-page-color, var(--ag-checkbox-checked-color, var(--ag-alpine-active-color, #2196f3)));\n}\n.ag-theme-alpine-dark .ag-chart-data-column-drag-handle {\n margin-left: 6px;\n}\n.ag-theme-alpine-dark .ag-charts-settings-group-title-bar,\n.ag-theme-alpine-dark .ag-charts-data-group-title-bar,\n.ag-theme-alpine-dark .ag-charts-format-top-level-group-title-bar {\n border-top: solid 1px;\n border-top-color: rgba(88, 86, 82, 0.5);\n border-top-color: var(--ag-secondary-border-color, rgba(88, 86, 82, 0.5));\n}\n.ag-theme-alpine-dark .ag-charts-settings-group-container {\n padding: 6px;\n}\n.ag-theme-alpine-dark .ag-charts-data-group-container {\n padding: 6px 12px;\n}\n.ag-theme-alpine-dark .ag-charts-data-group-container .ag-charts-data-group-item:not(.ag-charts-format-sub-level-group) {\n height: 24px;\n}\n.ag-theme-alpine-dark .ag-charts-data-group-container .ag-list-item-hovered::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n height: 1px;\n background-color: #2196f3;\n background-color: var(--ag-range-selection-border-color, #2196f3);\n}\n.ag-theme-alpine-dark .ag-charts-data-group-container .ag-item-highlight-top::after {\n top: 0;\n}\n.ag-theme-alpine-dark .ag-charts-data-group-container .ag-item-highlight-bottom::after {\n bottom: 0;\n}\n.ag-theme-alpine-dark .ag-charts-format-top-level-group-container {\n margin-left: 12px;\n padding: 6px;\n}\n.ag-theme-alpine-dark .ag-charts-format-top-level-group-item {\n margin: 6px 0;\n}\n.ag-theme-alpine-dark .ag-charts-format-sub-level-group-container {\n padding: 12px 12px;\n padding-bottom: 3px;\n}\n.ag-theme-alpine-dark .ag-charts-format-sub-level-group-container > * {\n margin-bottom: 9px;\n}\n.ag-theme-alpine-dark .ag-charts-group-container.ag-group-container-horizontal {\n padding: 6px;\n}\n.ag-theme-alpine-dark .ag-chart-data-section,\n.ag-theme-alpine-dark .ag-chart-format-section {\n display: -webkit-box;\n display: flex;\n margin: 0;\n}\n.ag-theme-alpine-dark .ag-chart-menu-panel {\n background-color: #222628;\n background-color: var(--ag-control-panel-background-color, #222628);\n}\n.ag-theme-alpine-dark .ag-ltr .ag-chart-menu-panel {\n border-left: solid 1px;\n border-left-color: #68686e;\n border-left-color: var(--ag-border-color, #68686e);\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-chart-menu-panel {\n border-right: solid 1px;\n border-right-color: #68686e;\n border-right-color: var(--ag-border-color, #68686e);\n}\n\n.ag-theme-alpine-dark .ag-date-time-list-page-title {\n -webkit-box-flex: 1;\n flex-grow: 1;\n text-align: center;\n}\n.ag-theme-alpine-dark .ag-date-time-list-page-column-label {\n text-align: center;\n}\n.ag-theme-alpine-dark .ag-date-time-list-page-entry {\n text-align: center;\n}\n.ag-theme-alpine-dark .ag-checkbox-input-wrapper {\n font-family: \"agGridAlpine\";\n font-size: 16px;\n line-height: 16px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 16px;\n height: 16px;\n background-color: #181d1f;\n background-color: var(--ag-checkbox-background-color, var(--ag-background-color, #181d1f));\n border-radius: 3px;\n display: inline-block;\n vertical-align: middle;\n -webkit-box-flex: 0;\n flex: none;\n}\n.ag-theme-alpine-dark .ag-checkbox-input-wrapper input, .ag-theme-alpine-dark .ag-checkbox-input-wrapper input {\n -webkit-appearance: none;\n opacity: 0;\n width: 100%;\n height: 100%;\n}\n.ag-theme-alpine-dark .ag-checkbox-input-wrapper:focus-within, .ag-theme-alpine-dark .ag-checkbox-input-wrapper:active {\n outline: none;\n -webkit-box-shadow: 0 0 2px 0.5px rgba(255, 255, 255, 0.5), 0 0 4px 3px rgba(33, 150, 243, 0.6);\n box-shadow: 0 0 2px 0.5px rgba(255, 255, 255, 0.5), 0 0 4px 3px rgba(33, 150, 243, 0.6);\n}\n.ag-theme-alpine-dark .ag-checkbox-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-alpine-dark .ag-checkbox-input-wrapper::after {\n content: \"\\f108\";\n color: #999;\n color: var(--ag-checkbox-unchecked-color, #999);\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-alpine-dark .ag-checkbox-input-wrapper.ag-checked::after {\n content: \"\\f106\";\n color: #2196f3;\n color: var(--ag-checkbox-checked-color, var(--ag-alpine-active-color, #2196f3));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-alpine-dark .ag-checkbox-input-wrapper.ag-indeterminate::after {\n content: \"\\f107\";\n color: #999;\n color: var(--ag-checkbox-indeterminate-color, var(--ag-checkbox-unchecked-color, #999));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-alpine-dark .ag-toggle-button-input-wrapper {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n width: 28px;\n height: 18px;\n background-color: #999;\n background-color: var(--ag-toggle-button-off-background-color, var(--ag-checkbox-unchecked-color, #999));\n border-radius: 9px;\n position: relative;\n -webkit-box-flex: 0;\n flex: none;\n border: 1px solid;\n border-color: #999;\n border-color: var(--ag-toggle-button-off-border-color, var(--ag-checkbox-unchecked-color, #999));\n}\n.ag-theme-alpine-dark .ag-toggle-button-input-wrapper input {\n opacity: 0;\n height: 100%;\n width: 100%;\n}\n.ag-theme-alpine-dark .ag-toggle-button-input-wrapper:focus-within {\n outline: none;\n -webkit-box-shadow: 0 0 2px 0.5px rgba(255, 255, 255, 0.5), 0 0 4px 3px rgba(33, 150, 243, 0.6);\n box-shadow: 0 0 2px 0.5px rgba(255, 255, 255, 0.5), 0 0 4px 3px rgba(33, 150, 243, 0.6);\n}\n.ag-theme-alpine-dark .ag-toggle-button-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-alpine-dark .ag-toggle-button-input-wrapper.ag-checked {\n background-color: #2196f3;\n background-color: var(--ag-toggle-button-on-background-color, var(--ag-checkbox-checked-color, var(--ag-alpine-active-color, #2196f3)));\n border-color: #2196f3;\n border-color: var(--ag-toggle-button-on-border-color, var(--ag-checkbox-checked-color, var(--ag-alpine-active-color, #2196f3)));\n}\n.ag-theme-alpine-dark .ag-toggle-button-input-wrapper::before {\n content: \" \";\n position: absolute;\n top: -1px;\n left: -1px;\n display: block;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n height: 18px;\n width: 18px;\n background-color: #181d1f;\n background-color: var(--ag-toggle-button-switch-background-color, var(--ag-background-color, #181d1f));\n border-radius: 9px;\n -webkit-transition: left 100ms;\n transition: left 100ms;\n border: 1px solid;\n border-color: #999;\n border-color: var(--ag-toggle-button-switch-border-color, var(--ag-toggle-button-off-border-color, var(--ag-checkbox-unchecked-color, #999)));\n}\n.ag-theme-alpine-dark .ag-toggle-button-input-wrapper.ag-checked::before {\n left: calc(100% - 18px );\n border-color: #2196f3;\n border-color: var(--ag-toggle-button-on-border-color, var(--ag-checkbox-checked-color, var(--ag-alpine-active-color, #2196f3)));\n}\n.ag-theme-alpine-dark .ag-radio-button-input-wrapper {\n font-family: \"agGridAlpine\";\n font-size: 16px;\n line-height: 16px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 16px;\n height: 16px;\n background-color: #181d1f;\n background-color: var(--ag-checkbox-background-color, var(--ag-background-color, #181d1f));\n border-radius: 3px;\n display: inline-block;\n vertical-align: middle;\n -webkit-box-flex: 0;\n flex: none;\n border-radius: 16px;\n}\n.ag-theme-alpine-dark .ag-radio-button-input-wrapper input, .ag-theme-alpine-dark .ag-radio-button-input-wrapper input {\n -webkit-appearance: none;\n opacity: 0;\n width: 100%;\n height: 100%;\n}\n.ag-theme-alpine-dark .ag-radio-button-input-wrapper:focus-within, .ag-theme-alpine-dark .ag-radio-button-input-wrapper:active {\n outline: none;\n -webkit-box-shadow: 0 0 2px 0.5px rgba(255, 255, 255, 0.5), 0 0 4px 3px rgba(33, 150, 243, 0.6);\n box-shadow: 0 0 2px 0.5px rgba(255, 255, 255, 0.5), 0 0 4px 3px rgba(33, 150, 243, 0.6);\n}\n.ag-theme-alpine-dark .ag-radio-button-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-alpine-dark .ag-radio-button-input-wrapper::after {\n content: \"\\f126\";\n color: #999;\n color: var(--ag-checkbox-unchecked-color, #999);\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-alpine-dark .ag-radio-button-input-wrapper.ag-checked::after {\n content: \"\\f127\";\n color: #2196f3;\n color: var(--ag-checkbox-checked-color, var(--ag-alpine-active-color, #2196f3));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-alpine-dark input[class^=ag-][type=range] {\n -webkit-appearance: none;\n width: 100%;\n height: 100%;\n background: none;\n overflow: visible;\n}\n.ag-theme-alpine-dark input[class^=ag-][type=range]::-webkit-slider-runnable-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: #68686e;\n background-color: var(--ag-border-color, #68686e);\n border-radius: 3px;\n border-radius: 3px;\n}\n.ag-theme-alpine-dark input[class^=ag-][type=range]::-moz-range-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: #68686e;\n background-color: var(--ag-border-color, #68686e);\n border-radius: 3px;\n border-radius: 3px;\n}\n.ag-theme-alpine-dark input[class^=ag-][type=range]::-ms-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: #68686e;\n background-color: var(--ag-border-color, #68686e);\n border-radius: 3px;\n border-radius: 3px;\n color: transparent;\n width: calc(100% - 2px);\n}\n.ag-theme-alpine-dark input[class^=ag-][type=range]::-webkit-slider-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: 16px;\n height: 16px;\n background-color: #181d1f;\n background-color: var(--ag-background-color, #181d1f);\n border: 1px solid;\n border-color: #999;\n border-color: var(--ag-checkbox-unchecked-color, #999);\n border-radius: 16px;\n -webkit-transform: translateY(-6.5px);\n transform: translateY(-6.5px);\n}\n.ag-theme-alpine-dark input[class^=ag-][type=range]::-ms-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: 16px;\n height: 16px;\n background-color: #181d1f;\n background-color: var(--ag-background-color, #181d1f);\n border: 1px solid;\n border-color: #999;\n border-color: var(--ag-checkbox-unchecked-color, #999);\n border-radius: 16px;\n}\n.ag-theme-alpine-dark input[class^=ag-][type=range]::-moz-ag-range-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: 16px;\n height: 16px;\n background-color: #181d1f;\n background-color: var(--ag-background-color, #181d1f);\n border: 1px solid;\n border-color: #999;\n border-color: var(--ag-checkbox-unchecked-color, #999);\n border-radius: 16px;\n}\n.ag-theme-alpine-dark input[class^=ag-][type=range]:focus {\n outline: none;\n}\n.ag-theme-alpine-dark input[class^=ag-][type=range]:focus::-webkit-slider-thumb {\n -webkit-box-shadow: 0 0 2px 0.5px rgba(255, 255, 255, 0.5), 0 0 4px 3px rgba(33, 150, 243, 0.6);\n box-shadow: 0 0 2px 0.5px rgba(255, 255, 255, 0.5), 0 0 4px 3px rgba(33, 150, 243, 0.6);\n border-color: #2196f3;\n border-color: var(--ag-checkbox-checked-color, var(--ag-alpine-active-color, #2196f3));\n}\n.ag-theme-alpine-dark input[class^=ag-][type=range]:focus::-ms-thumb {\n box-shadow: 0 0 2px 0.5px rgba(255, 255, 255, 0.5), 0 0 4px 3px rgba(33, 150, 243, 0.6);\n border-color: #2196f3;\n border-color: var(--ag-checkbox-checked-color, var(--ag-alpine-active-color, #2196f3));\n}\n.ag-theme-alpine-dark input[class^=ag-][type=range]:focus::-moz-ag-range-thumb {\n box-shadow: 0 0 2px 0.5px rgba(255, 255, 255, 0.5), 0 0 4px 3px rgba(33, 150, 243, 0.6);\n border-color: #2196f3;\n border-color: var(--ag-checkbox-checked-color, var(--ag-alpine-active-color, #2196f3));\n}\n.ag-theme-alpine-dark input[class^=ag-][type=range]:active::-webkit-slider-runnable-track {\n background-color: rgba(33, 150, 243, 0.4);\n background-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine-dark input[class^=ag-][type=range]:active::-moz-ag-range-track {\n background-color: rgba(33, 150, 243, 0.4);\n background-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine-dark input[class^=ag-][type=range]:active::-ms-track {\n background-color: rgba(33, 150, 243, 0.4);\n background-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine-dark input[class^=ag-][type=range]:disabled {\n opacity: 0.5;\n}\n.ag-theme-alpine-dark .ag-filter-toolpanel-header,\n.ag-theme-alpine-dark .ag-filter-toolpanel-search,\n.ag-theme-alpine-dark .ag-status-bar,\n.ag-theme-alpine-dark .ag-header-row,\n.ag-theme-alpine-dark .ag-panel-title-bar-title,\n.ag-theme-alpine-dark .ag-multi-filter-group-title-bar {\n font-weight: 700;\n color: #fff;\n color: var(--ag-header-foreground-color, var(--ag-secondary-foreground-color, var(--ag-foreground-color, #fff)));\n}\n.ag-theme-alpine-dark .ag-rtl .ag-pinned-left-header .ag-header-row::before, .ag-theme-alpine-dark .ag-ltr .ag-pinned-right-header .ag-header-row::after {\n content: \"\";\n position: absolute;\n height: calc(100% - 20px);\n top: 10px;\n width: 1px;\n background-color: #68686e;\n background-color: var(--ag-border-color, #68686e);\n}\n.ag-theme-alpine-dark .ag-ltr .ag-pinned-right-header .ag-header-row::after {\n right: 0;\n}\n.ag-theme-alpine-dark .ag-rtl .ag-pinned-left-header .ag-header-row::before {\n left: 0;\n}\n.ag-theme-alpine-dark .ag-row {\n font-size: 14px;\n}\n.ag-theme-alpine-dark input[class^=ag-]:not([type]),\n.ag-theme-alpine-dark input[class^=ag-][type=text],\n.ag-theme-alpine-dark input[class^=ag-][type=number],\n.ag-theme-alpine-dark input[class^=ag-][type=tel],\n.ag-theme-alpine-dark input[class^=ag-][type=date],\n.ag-theme-alpine-dark input[class^=ag-][type=datetime-local],\n.ag-theme-alpine-dark textarea[class^=ag-] {\n min-height: 24px;\n border-radius: 3px;\n}\n.ag-theme-alpine-dark .ag-ltr input[class^=ag-]:not([type]),\n.ag-theme-alpine-dark .ag-ltr input[class^=ag-][type=text],\n.ag-theme-alpine-dark .ag-ltr input[class^=ag-][type=number],\n.ag-theme-alpine-dark .ag-ltr input[class^=ag-][type=tel],\n.ag-theme-alpine-dark .ag-ltr input[class^=ag-][type=date],\n.ag-theme-alpine-dark .ag-ltr input[class^=ag-][type=datetime-local],\n.ag-theme-alpine-dark .ag-ltr textarea[class^=ag-] {\n padding-left: 6px;\n}\n\n.ag-theme-alpine-dark .ag-rtl input[class^=ag-]:not([type]),\n.ag-theme-alpine-dark .ag-rtl input[class^=ag-][type=text],\n.ag-theme-alpine-dark .ag-rtl input[class^=ag-][type=number],\n.ag-theme-alpine-dark .ag-rtl input[class^=ag-][type=tel],\n.ag-theme-alpine-dark .ag-rtl input[class^=ag-][type=date],\n.ag-theme-alpine-dark .ag-rtl input[class^=ag-][type=datetime-local],\n.ag-theme-alpine-dark .ag-rtl textarea[class^=ag-] {\n padding-right: 6px;\n}\n\n.ag-theme-alpine-dark .ag-tab {\n padding: 9px;\n -webkit-transition: color 0.4s;\n transition: color 0.4s;\n}\n.ag-theme-alpine-dark .ag-tab-selected {\n color: #2196f3;\n color: var(--ag-alpine-active-color, #2196f3);\n}\n.ag-theme-alpine-dark .ag-menu {\n background-color: #222628;\n background-color: var(--ag-control-panel-background-color, #222628);\n}\n.ag-theme-alpine-dark .ag-menu-header {\n background-color: #222628;\n background-color: var(--ag-control-panel-background-color, #222628);\n padding-top: 1px;\n}\n.ag-theme-alpine-dark .ag-tabs-header {\n border-bottom: solid 1px;\n border-bottom-color: #68686e;\n border-bottom-color: var(--ag-border-color, #68686e);\n}\n.ag-theme-alpine-dark .ag-charts-settings-group-title-bar,\n.ag-theme-alpine-dark .ag-charts-data-group-title-bar,\n.ag-theme-alpine-dark .ag-charts-format-top-level-group-title-bar {\n padding: 6px 12px;\n line-height: 20px;\n}\n.ag-theme-alpine-dark .ag-chart-mini-thumbnail {\n background-color: #181d1f;\n background-color: var(--ag-background-color, #181d1f);\n}\n.ag-theme-alpine-dark .ag-chart-settings-nav-bar {\n border-top: solid 1px;\n border-top-color: rgba(88, 86, 82, 0.5);\n border-top-color: var(--ag-secondary-border-color, rgba(88, 86, 82, 0.5));\n}\n.ag-theme-alpine-dark .ag-ltr .ag-group-title-bar-icon {\n margin-right: 6px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-group-title-bar-icon {\n margin-left: 6px;\n}\n\n.ag-theme-alpine-dark .ag-charts-format-top-level-group-toolbar {\n margin-top: 6px;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-charts-format-top-level-group-toolbar {\n padding-left: 20px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-charts-format-top-level-group-toolbar {\n padding-right: 20px;\n}\n\n.ag-theme-alpine-dark .ag-charts-format-sub-level-group {\n border-left: dashed 1px;\n border-left-color: #68686e;\n border-left-color: var(--ag-border-color, #68686e);\n padding-left: 6px;\n margin-bottom: 12px;\n}\n.ag-theme-alpine-dark .ag-charts-format-sub-level-group-title-bar {\n padding-top: 0;\n padding-bottom: 0;\n background: none;\n font-weight: 700;\n}\n.ag-theme-alpine-dark .ag-charts-format-sub-level-group-container {\n padding-bottom: 0;\n}\n.ag-theme-alpine-dark .ag-charts-format-sub-level-group-item:last-child {\n margin-bottom: 0;\n}\n.ag-theme-alpine-dark .ag-dnd-ghost {\n font-size: 12px;\n font-weight: 700;\n}\n.ag-theme-alpine-dark .ag-side-buttons {\n width: 30px;\n}\n.ag-theme-alpine-dark .ag-standard-button {\n -moz-appearance: none;\n appearance: none;\n -webkit-appearance: none;\n border-radius: 3px;\n border: 1px solid;\n border-color: #2196f3;\n border-color: var(--ag-alpine-active-color, #2196f3);\n color: #2196f3;\n color: var(--ag-alpine-active-color, #2196f3);\n background-color: #181d1f;\n background-color: var(--ag-background-color, #181d1f);\n font-weight: 600;\n padding: 6px 12px;\n}\n.ag-theme-alpine-dark .ag-standard-button:hover {\n border-color: #2196f3;\n border-color: var(--ag-alpine-active-color, #2196f3);\n background-color: rgba(33, 150, 243, 0.1);\n background-color: var(--ag-row-hover-color, rgba(33, 150, 243, 0.1));\n}\n.ag-theme-alpine-dark .ag-standard-button:active {\n border-color: #2196f3;\n border-color: var(--ag-alpine-active-color, #2196f3);\n background-color: #2196f3;\n background-color: var(--ag-alpine-active-color, #2196f3);\n color: #181d1f;\n color: var(--ag-background-color, #181d1f);\n}\n.ag-theme-alpine-dark .ag-standard-button:disabled {\n color: rgba(255, 255, 255, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(255, 255, 255, 0.5));\n background-color: #282c2f;\n background-color: var(--ag-input-disabled-background-color, #282c2f);\n border-color: rgba(104, 104, 110, 0.3);\n border-color: var(--ag-input-disabled-border-color, rgba(104, 104, 110, 0.3));\n}\n.ag-theme-alpine-dark .ag-column-drop-vertical {\n min-height: 75px;\n}\n.ag-theme-alpine-dark .ag-column-drop-vertical-title-bar {\n padding: 12px;\n padding-bottom: 0px;\n}\n.ag-theme-alpine-dark .ag-column-drop-vertical-empty-message {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n border: dashed 1px;\n border-color: #68686e;\n border-color: var(--ag-border-color, #68686e);\n margin: 12px;\n padding: 12px;\n}\n.ag-theme-alpine-dark .ag-column-drop-empty-message {\n color: #fff;\n color: var(--ag-foreground-color, #fff);\n opacity: 0.75;\n}\n.ag-theme-alpine-dark .ag-status-bar {\n font-weight: normal;\n}\n.ag-theme-alpine-dark .ag-status-name-value-value {\n font-weight: 700;\n}\n.ag-theme-alpine-dark .ag-paging-number, .ag-theme-alpine-dark .ag-paging-row-summary-panel-number {\n font-weight: 700;\n}\n.ag-theme-alpine-dark .ag-column-drop-cell-button {\n opacity: 0.5;\n}\n.ag-theme-alpine-dark .ag-column-drop-cell-button:hover {\n opacity: 0.75;\n}\n.ag-theme-alpine-dark .ag-header-cell-menu-button:hover,\n.ag-theme-alpine-dark .ag-side-button-button:hover,\n.ag-theme-alpine-dark .ag-tab:hover,\n.ag-theme-alpine-dark .ag-panel-title-bar-button:hover,\n.ag-theme-alpine-dark .ag-header-expand-icon:hover,\n.ag-theme-alpine-dark .ag-column-group-icons:hover,\n.ag-theme-alpine-dark .ag-group-expanded .ag-icon:hover,\n.ag-theme-alpine-dark .ag-group-contracted .ag-icon:hover,\n.ag-theme-alpine-dark .ag-chart-settings-prev:hover,\n.ag-theme-alpine-dark .ag-chart-settings-next:hover,\n.ag-theme-alpine-dark .ag-group-title-bar-icon:hover,\n.ag-theme-alpine-dark .ag-column-select-header-icon:hover,\n.ag-theme-alpine-dark .ag-floating-filter-button-button:hover,\n.ag-theme-alpine-dark .ag-filter-toolpanel-expand:hover,\n.ag-theme-alpine-dark .ag-chart-menu-icon:hover {\n color: #2196f3;\n color: var(--ag-alpine-active-color, #2196f3);\n}\n.ag-theme-alpine-dark .ag-chart-settings-card-item.ag-not-selected:hover {\n opacity: 0.35;\n}\n.ag-theme-alpine-dark .ag-ltr .ag-panel-title-bar-button {\n margin-left: 12px;\n margin-right: 6px;\n}\n\n.ag-theme-alpine-dark .ag-rtl .ag-panel-title-bar-button {\n margin-right: 12px;\n margin-left: 6px;\n}\n\n.ag-theme-alpine-dark .ag-filter-toolpanel-group-container {\n padding-left: 6px;\n}\n.ag-theme-alpine-dark .ag-filter-toolpanel-instance-filter {\n border: none;\n background-color: #222628;\n background-color: var(--ag-control-panel-background-color, #222628);\n border-left: dashed 1px;\n border-left-color: #68686e;\n border-left-color: var(--ag-border-color, #68686e);\n margin-left: 8px;\n padding-left: 8px;\n margin-right: 12px;\n}\n.ag-theme-alpine-dark .ag-set-filter-list {\n padding-top: 3px;\n padding-bottom: 3px;\n}\n.ag-theme-alpine-dark .ag-layout-auto-height .ag-center-cols-clipper, .ag-theme-alpine-dark .ag-layout-auto-height .ag-center-cols-container, .ag-theme-alpine-dark .ag-layout-print .ag-center-cols-clipper, .ag-theme-alpine-dark .ag-layout-print .ag-center-cols-container {\n min-height: 150px;\n}\n.ag-theme-alpine-dark .ag-overlay-no-rows-wrapper.ag-layout-auto-height {\n padding-top: 60px;\n}\n.ag-theme-alpine-dark .ag-date-time-list-page-entry-is-current {\n background-color: #2196f3;\n background-color: var(--ag-alpine-active-color, #2196f3);\n}\n", ""]);
58240// Exports
58241module.exports = exports;
58242
58243
58244/***/ }),
58245/* 281 */
58246/***/ (function(module, exports, __webpack_require__) {
58247
58248var api = __webpack_require__(276);
58249 var content = __webpack_require__(282);
58250
58251 content = content.__esModule ? content.default : content;
58252
58253 if (typeof content === 'string') {
58254 content = [[module.i, content, '']];
58255 }
58256
58257var options = {};
58258
58259options.insert = "head";
58260options.singleton = false;
58261
58262var update = api(content, options);
58263
58264
58265
58266module.exports = content.locals || {};
58267
58268/***/ }),
58269/* 282 */
58270/***/ (function(module, exports, __webpack_require__) {
58271
58272// Imports
58273var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58274exports = ___CSS_LOADER_API_IMPORT___(false);
58275// Module
58276exports.push([module.i, ".ag-theme-alpine {\n -webkit-font-smoothing: antialiased;\n color: #181d1f;\n color: var(--ag-foreground-color, #181d1f);\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 13px;\n line-height: normal;\n}\n@font-face {\n font-family: \"agGridAlpine\";\n src: url(\"data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABWoAAsAAAAAJ9AAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAAmYAAAR2ZcBn9U9TLzIAAANwAAAAQQAAAFZWUVMIY21hcAAAA7QAAAIcAAAFnIMq5ipnbHlmAAAF0AAAC80AABVszjC1ZWhlYWQAABGgAAAANAAAADZ2zsSBaGhlYQAAEdQAAAAeAAAAJAfSBDFobXR4AAAR9AAAABcAAAE0xzj/+2xvY2EAABIMAAAAdQAAAJwYJx3EbWF4cAAAEoQAAAAfAAAAIAFjAKpuYW1lAAASpAAAATUAAAJG5xgJvXBvc3QAABPcAAAByQAAAqgIzxhUeJx9lEtyElEUhv+mm0gCJilFjRhjovEVXzF2uhuaRx4QEDJwYFkOnMSyyrKKcsQ6XIAryNAVuAAHrsAFOHDo2PK7h0ZMBuEWze3z+M9//3Mu8iTNaVNN5doHhy81PzwafVRFgcYf5/9/7w0/vD9SYfKGL7DfgrygpHnd1GuN9M2b90beca7sV/xX/jv/s//F/yWfqFU9JrqobVakmGeoRFXVlCqnGWwR+7oaRPs8m2a9oKvKm6ernpaoGZHTM8QN9XVPi+B0DKetPaISlsNs8xyw7mvhjIgUlDy+be1gDVBkBU3qKmtWz2HZhkmL/Ab+i9Tcp3ZIVgdfB3Z5LE32LV2Ck8sITNWe3ugpfndSh1LNchK+kQ7sPbS3NTSZRDXBqVHLYW/BYGKvgReTsQl6lajdTNEN3SK7Bk4btJZl1y17jcgYbgl9CeycMVxLWmf/Qm/pRREW45y2aTpW4CHsp/aO4aV6dMLaAmtA7BM4TK2uPw+oFdKVGPQlfEN90rG+6rt+6Kd+64/O6TJ1YjvDHuj7Z2pTQMHT0V28zX9Wd9YZZuB01MmIWU5eM3UifL1MQ1etyMmcOgn7EGti8XPwdPFd2KT0I6BGaHVdp/OsHd4jos9n09lglUzpHlOwYBPct1moMKNbum6I4zlM0XoZRLcb86uYbg3wrlnfnLruhi3am7sLrt8VurPCb8gJq6bTId5VLA5parlhWSnsHcYz/Cmsp9Ucq2VYhbqLz81Y325Hl0rrnGfMJNYduxl9m6/bMKhmN7VMDx37VtaxKxYXWZbHP0GY3fDEtHMz3YGbm4/BX0ArchMAAHicY2BkmsY4gYGVgYGpimkPAwNDD4RmfMBgyMgEFGVgZWbACgLSXFMYDjDofjRifgHkRjG/BZnCwAiSAwDkfwr5AAAAeJy11AdSG0EQheFfgSxwIOecEWCCySCiEHAJnCkcKJw5h8/me/QJ8Bt1+wC4ylv1qXdGq92ZWr0GaoCczEkesvVkdEYmq9lMdT5HY3U+z2+NC9ST1XmRK264s6X7e80WueSaW8tUR3+PjK4u0McEzzU6YoUDdjlmjXNWKbHBPnucsMUmp7pmh3XKnLHNIRUu9Pu0irzWWEudntuglTTpjs208JgntNJGOx100kU3PfTqWf0MMMgQw4wwyhjjevokU0wzw6x2U2SeBRb1/TOWWNYia3nYcfTA69OxcrB7vHa+WtKO9062NrXZnfXy2fZh5eIfbvYfjkL6yP2K0Tnpjbq028uwIi/CgbwMu/IqHMvrsCZvQrrn27Aq70JJrsKGXId9eR/25EM4kY9hSz6FTbkJp3Ib0j/vc9iRL2FdvoayfAtn8j1sy49wKD9DRe6CXqBlXMqLZR2p5lzKl+VdypjVuJQ9q3WkWudItd6RaoMj1UaXMmlNjlQLLr1Ja3ak2uJI9ZFTdrCgFGFBecKeOiULa3XKGNbmlDas3Sl3WIdTArFOpyxiXU6pxLqd8on1OCUV63XKLNbnlF6s3ynH2IBTorFBp+xiQ04px4ad8o6NOCUfG3XqAdiYUzfAxp36Ajbh1CGwSadegU05dQ1s2ql/YDMu9UubdSknNufUXbCiU5/B5p06DrbgqutfdOpCWFA/wgLLfwB3H6YceJztWHtwVNUZv9852b179/2+WUI22b3ZXNjshib7uEkWdkMSSMAQcVwwQDFEikONtqK0KBAR/2hNHavjDPgH6Uw7bcPUmUZaph0VKk6VEkeldqTtDOof1dKSqmlxGLGBvfQ7Z3dDAqnaPzttsnvej+98z9+3Agj4R6ZoXLAIAoR8sugLpUKaGiJTunV6Gi7qd2F5kMZz09PZ7PQ0W264evnqZfoR/Ugw4C6H4BOqBMEjyqKqGTRWRrCgMmt6VFZ+8PTTsZdfJlksYk/rg/39/e18JMYHyGOzOv0b+vv1T2evR7LYpbSDdggS3iNrroRL1iQ43DaZP5/Rj+pH4WJmUjfA5ckMrNGPCoSvP0APCF6hFreHRaNo9Mp+2d+spbV0Uq1X6z2iioQidUgfXNwxOKC1tmoDg++VGwNtBw+2HTjAS3pgzhRvFF4tz2LJrivx0Y4tkfMy4VLUhE9hNfxyePj48DDsGh6mtsJpZOgufUQo0Xmenhc8QoBxP2wHn8sbhESoOQspV7IRJNBkkOmDVz4JJoL4oWZeF6b0v/VNwFgfPY/9OZNXPgF/3ykYu3nu+fL851MU9g2nP144Q2I3nlw4c+/sMyk/0xVyReY7F8+k5uvOLQ5+/fpzi7yjD9CvoD6ZhEpBkECUJaBaDRiZ6Hxef3M6xcRGPtAH2rbqBchOTJw6YrEEHP6mFU1+RwB+DT/I4IT+MiybmMjabMGq+kC4qSkciCwMsuMr+B1x1POifByCEAm5QgbFlfAorgy4FBeNF54gO/TVXFbHhqdJYlgfYZIqSqukh+QInmFAGgmqD+yCVv0UmgWN66f0iZJ9FN/zMD2BrwkI1ZzzRh9qbUjmDa8fGZVGPtUrHqSBHNGtSlMeLg7rKUYyvIalAnoKXqMvNoULz5PuW5uUwvNsjnQrTYVtpLtkE0/SJ5muSYDsEiVQUV3gImzo1MdgY6d+WB/rhI1YkPScLmzEJbjdKAhXr9Cv0Q8FJ2pItdAjPCx8D6lF81ANswilSgrlLBtlfwY8Ea+dKOHGilQySxLNQfB5jeF6tREU3IAq0JzWstDsl712HMHhVDLdHKQJJr9GUBtJMgu4i5Q2FffUgF8OEjTFtNaEm4Pg9TnATsKNsITidj+9R7zzXoPep2qaStKqtvKo3gEjBKjBeZboA5I76HXKXqfZYKsMeeQ6j9lmqjB5HfJCq1zrNxKT3fwzd9hf7bI5JbtJNDmsLr/F7fRWudw1fnely2S2iRUGR9BttBjcbovNbV7aECWUmCwmA0kR0eywGkmCgtltIn81ffMRA2lRr/yWEzPy5pXv0Ad+H5BchSf/aK0JekzuqtqIL5yq9y5U3ZLDbPN5k821Df7KSrPD7ggs9jssEbfFbgm4rLLb7jIZRU+oMeKx+Sp9TrPF4fbYJItERdEgeqq/e+y4ZDGaRZvZIJ2RHCbJLp12SGanW/i/7P6rZTcnnoEqou9R0Xrpch7QYA3+Y0CDy7phEsMbrCn5rznyXvW5stZYmEumE83+GsgRJjq/z+sAGUVkh3D9EhCZMtSnkp8toviGmyTR4HW4PM6l7Wa70WZyeHx9eatZcnvdFf23VUguHPks5k48OGS3WfxOT+XGjQ63weC0uqrvedDhc9slybhvt9FkdDnc/ytvnBNDIui4RRljzgS0IL46Di3QmpsdQx5DPFElNArLmJ5ocpoZbQ0+ChjYMipGtDJAm5VxIIgWreFYmNmtpsppZouinNYaSRgql8V61g+sH91ZTam3Kx6PaZuHbhvdubCiwtc3GO/yLhjc33PLqkw01bAqGjK11N26Kurt6asL3LH/cfIj3Lu4a89as0XbrDTG0glYsXutxbx0m1R9a/PyrVpdW020uyHVsKXFG+3J1/VkNuHgLPrtiMHiSD9CA0YLJzWSJaWXcE8BBpxEH4OT6FJIRff+OwJ49xP7BxcgZfrJhTtHf8ppr+aNhRXw7eiqaHTVOlZAQNu6HK8slufW7ulixJpL9SjS1BPlRQm7DCHvRcGGFIk+0aWmQgbZp6U0OjR9bJo8Wxh/O3eWTE2PHof+6Vzu7bPZ0be5yHhxiUyh3LjVaqooM2xHLr30UmZ6Wk/l85A6cSLDMbNVsBbxBq4v4w2GwaqEGkERVKFBWCIImpJKyLO+kc/pI/4+nssd42XhjX/XmR4u/uVKdbZUIzmmmfdfT5MAiPoj+PXgPSn8qvhlYyLWIazpENPRwml+FF5BntUnsAW/0CfIDn6vvjqHd+X0ESQhm83OwzMP6jomFsizC5xlsCufJ0c5y3TrXL9oYphJY3BGDdHlZT/IfCIJTrYxyN82WbaRA+QkZiABtBLBgxEqAymlqEe8hdYgI8aNKD4WuuzQANjgyqb8MLxUGRtr3dLSsqV1bExZGn4G+vSfwy7eBuXaJFxUMsrNLQP3DbTcjK1ofgyrlWxoy46BFs7Xq1fpJMfE1/E1hPiSJRoGlhUhHQaWXJX6DHuSBb29I5e0S6RBu6QhOHsdkoVeVm7GPvkAZ/TXe3shWY8t/GjLent7d2KNn0u/g2QZjz9Dn0EqXBzTJnyAionAEj2lCph76CP9QDp0/V1MQDbo6PfIOznY9S4fox595B0+NuNzruksyiA1819Ex+UvtKKsh7Pl+9+kbxbvn7l2hpDczKWoQ2VKGFHFa/9QpmTGN44XfSNzcTLANzK6noFWGse6DVpKOnWOOnnuyaKnjGmCyBI5cu7ChdjJkzFekiCvvsXLmbcVc8IQ05V5s0JIsiZGERkaAQOICgwksYXz5Yh6RzzWu2ZT6/YGPR6ugzXYgLfCdWxwvpRRH9i0pjcWrwvr8Ybt+od1YXirYXsrHyvTdzfmDD4hKNQjfQqDWKIyN2EINfsZ/EqmgfE3lErQynF7+9p227M8O+jBUn/BFQiEAwFIFZ7Lw/fzdCjS2BjBPGIbX3Io3FSpVOKn4CaHuFsoyXAv3YMa28Z9W7r4L2v1WIFoRC4jn0SjA/mtsqQMWV6PbAG2CkOQ7E/4sanCLU+h+zZI1W1LtK32tupaCPraV2wHINTri8sH/xyDcx7JanKOphc1u2CBSSZgIgdMCJ/sbucZeOgpyWJxWBdZJMtg47KgT39v4TrrNqMhkGr4kmzB7eQJp9Nj94/aKa3S/2L0qpVJ98GKChBN7jOCmb9jnI6j9dUKi4TlwkrhJiEvbBIGhTvxXUEiu6mdiBWRRqIST5ZodYaQy48BVEsbvDILSCmuSqLqQ/wgKjLv+DkzIl45kVKNYiKlRQEZkUAH7UsgDlYjRkX0JbR6dDHUtWhFFJCe6IpF+vv6+9d6UA27C6f+PqUkiVQwAUkqtfCCObYuH5OiKxftlGLr1sXM7XXNC4JQeBX27gEYziVvagHYnYNf7WbrkRet0X0nWrr30Z/Me341710pvGqUcPnUGy4nXgZ7wMEPl+5d1N1ApFge7wGEqP5ocGXLQy+uTu37ZzoykNu7N4yrKcDeYXjoBlvknpiMZ/RT0JrRyccZlu226cLs3wO8wuKyVTmZttQytjmZVdEwh2ms38xmSgb16M4dnV1dnTt2grPcevSezRtTmpbauPlsuUHPswn9H3MXX9k7ZxFvlGyI0WJFG08zanggKPp79T8grev+zs77H2VF1xejkkyV1mMx/YUJviEXEGUMtuy3j7m/aPHMYLKNZQbXsGEvHeJxlSMZ5v8A93JEUvSDhffJkcJadNRZmOQD+uEcmSqcLt9JySEmPY8E58ABDnIIY19fSe6HKGVzEimOUqpf0C/MnUPsivRgwOS75z+zuKA092Pq4b+bsN8qNLgLPu0snNT/1AFVrPUbqOkorYuTTvZCD77mOA82HbfP8ClOxouxgeVL5GMeEqCVjGOMYKo5y88PCW7BLySYH/XxVNdvFOUssExWQcNOMMzsmwUSkmlNxpUyfjQgrxQxgBZdlswhAFj85byp8NwjbT1lpNDRtL7mvoGew8lCN3mFYYLYCsuyqjuWtg60jOXh7v2VX21vLYKFptWG9fnbcSV54V8PFbSvAAAAeJxjYGRgYADiJZeya+P5bb4ycDO/AApEcT7e1wCj///+/5v5LfNboEoOBiYgyQAAoN8P3nicY2BkYGB+wcAAIv///v+b+S0DIwMq8AUAntwHCgAAeJxjYGBgYH4Bwv9/Q+ihjekBAG/aMMwAeJxjYAACKYYghiyGJQz7GN4xSjA6MZYwTmNcxXiH8R/THeZdzFdY3Fh2sJxh1WEtY53Cuob1G5semxtbHNsitgfsbOwK7G7sEewl7Ec4mDjSOHk4FTjTOA9w3uL8xcXBJcalwmXE5cYVwpXBtY10CAAggCv3AAAAeJxjYGRgYPBlmMfAwwACTEDMBYQMDP/BfAYAIOsCDgB4nHWRPU7DQBCFnxMniBghJCREx1Y0SM5PQZEuFHGfIgWdE68dR7bXWm8ipeMYnIBjUHIETsEheDFTREjZ1a6/+fbNNAZwgy94OC4PV+19XB1csPrjLulW2Cc/CPcQ4Em4T/8sPKB9EQ7YWXKC51/S3ONNuINrvAt36T+EffKncA93+Bbu0/8ID7D0fOEAj95rnEU2T2ZFnVd6obNdEdtTdcpLbZvcVGocjk51pCttY6cTtTqoZp9NnEtVak2p5qZyuiiMqq3Z6rULN87V0+EwFR+uTYkYGSJY5EgwQ4GaVEFjwZNhRxPz9VzqnF/yWDSsDGuFMUKMzqYjnqrtiOH4TdixwoF3gz17JrQOKeuUGcO/ojBvJx/TBbehqdu3Lc2aPsSm7aoxxZA7/ZcPmeKkXwK+aWkAAAB4nG2SB2/bMBSE/cWS7dhp46ZtuvceapvuvXeb/geGomUiEimQlO3k15e1gwAB+gASd4eHe8cHtpZai+q3/l+bLNEmIaVDlx7L9BmwwiEOs8qQI6xxlGMcZ50TnOQUpznDWc5xngtc5BKXucJVrnGdG9zkFre5w10y7nGfB2zwkEc85glPecZzXvCSV7zmDW95x3s+8JFPfOYLX/nGd37wk1/8ZpM/rYEoCqcKEbQ1HeGcnfq28LIjhZGqTOVYuDCUYyW3t+wsmwOVr+8L2uQqKFdpI4Ja25cbs9e5Im1pXVbrSFw3kqYyvi+tCU7IoPJE2nonlc5635Z+ksaTbSS58jJVsxigO7+zjZ6a1SLOypfVjsp8Kfy4HVFnpMs4Ph1p50NSOF2nhbNNncSGkJRqFDqlNjFHt7Qi16boVWKmK72rkkqZphdzL5hRs5AYa9TA2JCJsrRTlad1dFHtWpu01hMberVTE20bP3TRzGZbTQjWZHY0Wj0omNTpYhwSLyaq76tol+V2avbgv1iDBZy39RY4pg5xTWvBKXVwr8tzydbK9BqzeA+CAocioLEYpngkJWO22WIW/0ZORUPNDhNG7LZafwFegLa2AAAA\") format(\"woff\");\n font-weight: normal;\n font-style: normal;\n}\n.ag-theme-alpine .ag-icon {\n font-family: \"agGridAlpine\";\n font-size: 16px;\n line-height: 16px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.ag-theme-alpine .ag-icon-aggregation::before {\n content: \"\\f101\";\n}\n.ag-theme-alpine .ag-icon-arrows::before {\n content: \"\\f102\";\n}\n.ag-theme-alpine .ag-icon-asc::before {\n content: \"\\f103\";\n}\n.ag-theme-alpine .ag-icon-cancel::before {\n content: \"\\f104\";\n}\n.ag-theme-alpine .ag-icon-chart::before {\n content: \"\\f105\";\n}\n.ag-theme-alpine .ag-icon-color-picker::before {\n content: \"\\f109\";\n}\n.ag-theme-alpine .ag-icon-columns::before {\n content: \"\\f10a\";\n}\n.ag-theme-alpine .ag-icon-contracted::before {\n content: \"\\f10b\";\n}\n.ag-theme-alpine .ag-icon-copy::before {\n content: \"\\f10c\";\n}\n.ag-theme-alpine .ag-icon-cross::before {\n content: \"\\f10d\";\n}\n.ag-theme-alpine .ag-icon-csv::before {\n content: \"\\f10e\";\n}\n.ag-theme-alpine .ag-icon-desc::before {\n content: \"\\f10f\";\n}\n.ag-theme-alpine .ag-icon-excel::before {\n content: \"\\f110\";\n}\n.ag-theme-alpine .ag-icon-expanded::before {\n content: \"\\f111\";\n}\n.ag-theme-alpine .ag-icon-eye-slash::before {\n content: \"\\f112\";\n}\n.ag-theme-alpine .ag-icon-eye::before {\n content: \"\\f113\";\n}\n.ag-theme-alpine .ag-icon-filter::before {\n content: \"\\f114\";\n}\n.ag-theme-alpine .ag-icon-first::before {\n content: \"\\f115\";\n}\n.ag-theme-alpine .ag-icon-grip::before {\n content: \"\\f116\";\n}\n.ag-theme-alpine .ag-icon-group::before {\n content: \"\\f117\";\n}\n.ag-theme-alpine .ag-icon-last::before {\n content: \"\\f118\";\n}\n.ag-theme-alpine .ag-icon-left::before {\n content: \"\\f119\";\n}\n.ag-theme-alpine .ag-icon-linked::before {\n content: \"\\f11a\";\n}\n.ag-theme-alpine .ag-icon-loading::before {\n content: \"\\f11b\";\n}\n.ag-theme-alpine .ag-icon-maximize::before {\n content: \"\\f11c\";\n}\n.ag-theme-alpine .ag-icon-menu::before {\n content: \"\\f11d\";\n}\n.ag-theme-alpine .ag-icon-minimize::before {\n content: \"\\f11e\";\n}\n.ag-theme-alpine .ag-icon-next::before {\n content: \"\\f11f\";\n}\n.ag-theme-alpine .ag-icon-none::before {\n content: \"\\f120\";\n}\n.ag-theme-alpine .ag-icon-not-allowed::before {\n content: \"\\f121\";\n}\n.ag-theme-alpine .ag-icon-paste::before {\n content: \"\\f122\";\n}\n.ag-theme-alpine .ag-icon-pin::before {\n content: \"\\f123\";\n}\n.ag-theme-alpine .ag-icon-pivot::before {\n content: \"\\f124\";\n}\n.ag-theme-alpine .ag-icon-previous::before {\n content: \"\\f125\";\n}\n.ag-theme-alpine .ag-icon-right::before {\n content: \"\\f128\";\n}\n.ag-theme-alpine .ag-icon-save::before {\n content: \"\\f129\";\n}\n.ag-theme-alpine .ag-icon-small-down::before {\n content: \"\\f12a\";\n}\n.ag-theme-alpine .ag-icon-small-left::before {\n content: \"\\f12b\";\n}\n.ag-theme-alpine .ag-icon-small-right::before {\n content: \"\\f12c\";\n}\n.ag-theme-alpine .ag-icon-small-up::before {\n content: \"\\f12d\";\n}\n.ag-theme-alpine .ag-icon-tick::before {\n content: \"\\f12e\";\n}\n.ag-theme-alpine .ag-icon-tree-closed::before {\n content: \"\\f12f\";\n}\n.ag-theme-alpine .ag-icon-tree-indeterminate::before {\n content: \"\\f130\";\n}\n.ag-theme-alpine .ag-icon-tree-open::before {\n content: \"\\f131\";\n}\n.ag-theme-alpine .ag-icon-unlinked::before {\n content: \"\\f132\";\n}\n.ag-theme-alpine .ag-icon-row-drag::before {\n content: \"\\f116\";\n}\n.ag-theme-alpine .ag-left-arrow::before {\n content: \"\\f119\";\n}\n.ag-theme-alpine .ag-right-arrow::before {\n content: \"\\f128\";\n}\n.ag-theme-alpine .ag-root-wrapper {\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n}\n.ag-theme-alpine [class^=ag-], .ag-theme-alpine [class^=ag-]:focus, .ag-theme-alpine [class^=ag-]:after, .ag-theme-alpine [class^=ag-]:before {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n outline: none;\n}\n.ag-theme-alpine [class^=ag-]::-ms-clear {\n display: none;\n}\n.ag-theme-alpine .ag-checkbox .ag-input-wrapper,\n.ag-theme-alpine .ag-radio-button .ag-input-wrapper {\n overflow: visible;\n}\n.ag-theme-alpine .ag-range-field .ag-input-wrapper {\n height: 100%;\n}\n.ag-theme-alpine .ag-toggle-button {\n -webkit-box-flex: 0;\n flex: none;\n width: unset;\n min-width: unset;\n}\n.ag-theme-alpine .ag-ltr .ag-label-align-right .ag-label {\n margin-left: 6px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-label-align-right .ag-label {\n margin-right: 6px;\n}\n\n.ag-theme-alpine input[class^=ag-] {\n margin: 0;\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n}\n.ag-theme-alpine textarea[class^=ag-],\n.ag-theme-alpine select[class^=ag-] {\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n}\n.ag-theme-alpine input[class^=ag-]:not([type]),\n.ag-theme-alpine input[class^=ag-][type=text],\n.ag-theme-alpine input[class^=ag-][type=number],\n.ag-theme-alpine input[class^=ag-][type=tel],\n.ag-theme-alpine input[class^=ag-][type=date],\n.ag-theme-alpine input[class^=ag-][type=datetime-local],\n.ag-theme-alpine textarea[class^=ag-] {\n font-size: inherit;\n line-height: inherit;\n color: inherit;\n border-width: 1px;\n border-style: solid;\n border-color: #babfc7;\n border-color: var(--ag-input-border-color, var(--ag-border-color, #babfc7));\n}\n.ag-theme-alpine input[class^=ag-]:not([type]):disabled,\n.ag-theme-alpine input[class^=ag-][type=text]:disabled,\n.ag-theme-alpine input[class^=ag-][type=number]:disabled,\n.ag-theme-alpine input[class^=ag-][type=tel]:disabled,\n.ag-theme-alpine input[class^=ag-][type=date]:disabled,\n.ag-theme-alpine input[class^=ag-][type=datetime-local]:disabled,\n.ag-theme-alpine textarea[class^=ag-]:disabled {\n color: rgba(24, 29, 31, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(24, 29, 31, 0.5));\n background-color: #f1f2f4;\n background-color: var(--ag-input-disabled-background-color, #f1f2f4);\n border-color: rgba(186, 191, 199, 0.3);\n border-color: var(--ag-input-disabled-border-color, rgba(186, 191, 199, 0.3));\n}\n.ag-theme-alpine input[class^=ag-]:not([type]):focus,\n.ag-theme-alpine input[class^=ag-][type=text]:focus,\n.ag-theme-alpine input[class^=ag-][type=number]:focus,\n.ag-theme-alpine input[class^=ag-][type=tel]:focus,\n.ag-theme-alpine input[class^=ag-][type=date]:focus,\n.ag-theme-alpine input[class^=ag-][type=datetime-local]:focus,\n.ag-theme-alpine textarea[class^=ag-]:focus {\n outline: none;\n -webkit-box-shadow: 0 0 2px 0.1rem rgba(33, 150, 243, 0.4);\n box-shadow: 0 0 2px 0.1rem rgba(33, 150, 243, 0.4);\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine input[class^=ag-]:not([type]):invalid,\n.ag-theme-alpine input[class^=ag-][type=text]:invalid,\n.ag-theme-alpine input[class^=ag-][type=number]:invalid,\n.ag-theme-alpine input[class^=ag-][type=tel]:invalid,\n.ag-theme-alpine input[class^=ag-][type=date]:invalid,\n.ag-theme-alpine input[class^=ag-][type=datetime-local]:invalid,\n.ag-theme-alpine textarea[class^=ag-]:invalid {\n border-width: 2px;\n border-style: solid;\n border-color: #e02525;\n border-color: var(--ag-input-border-color-invalid, var(--ag-invalid-color, #e02525));\n}\n.ag-theme-alpine input[class^=ag-][type=number] {\n -moz-appearance: textfield;\n}\n.ag-theme-alpine input[class^=ag-][type=number]::-webkit-outer-spin-button, .ag-theme-alpine input[class^=ag-][type=number]::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n.ag-theme-alpine input[class^=ag-][type=range] {\n padding: 0;\n}\n.ag-theme-alpine input[class^=ag-][type=button]:focus, .ag-theme-alpine button[class^=ag-]:focus {\n -webkit-box-shadow: 0 0 2px 0.1rem rgba(33, 150, 243, 0.4);\n box-shadow: 0 0 2px 0.1rem rgba(33, 150, 243, 0.4);\n}\n.ag-theme-alpine .ag-drag-handle {\n color: #181d1f;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #181d1f));\n}\n.ag-theme-alpine .ag-list-item, .ag-theme-alpine .ag-virtual-list-item {\n height: 24px;\n}\n.ag-theme-alpine .ag-keyboard-focus .ag-virtual-list-item:focus {\n outline: none;\n}\n.ag-theme-alpine .ag-keyboard-focus .ag-virtual-list-item:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine .ag-select-list {\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n overflow-y: auto;\n overflow-x: hidden;\n}\n.ag-theme-alpine .ag-list-item {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ag-theme-alpine .ag-list-item.ag-active-item {\n background-color: rgba(33, 150, 243, 0.1);\n background-color: var(--ag-row-hover-color, rgba(33, 150, 243, 0.1));\n}\n.ag-theme-alpine .ag-select-list-item {\n padding-left: 4px;\n padding-right: 4px;\n cursor: default;\n -moz-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n}\n.ag-theme-alpine .ag-select-list-item span {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n.ag-theme-alpine .ag-select .ag-picker-field-wrapper {\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n min-height: 24px;\n cursor: default;\n}\n.ag-theme-alpine .ag-select.ag-disabled .ag-picker-field-wrapper:focus {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.ag-theme-alpine .ag-select:not(.ag-cell-editor) {\n height: 24px;\n}\n.ag-theme-alpine .ag-select .ag-picker-field-display {\n margin: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ag-theme-alpine .ag-select .ag-picker-field-icon {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-alpine .ag-select.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-alpine .ag-rich-select {\n background-color: #f8f8f8;\n background-color: var(--ag-control-panel-background-color, #f8f8f8);\n}\n.ag-theme-alpine .ag-rich-select-list {\n width: 100%;\n min-width: 200px;\n height: 273px;\n}\n.ag-theme-alpine .ag-rich-select-value {\n padding: 0 6px 0 18px;\n height: 42px;\n border-bottom: solid 1px;\n border-bottom-color: #dde2eb;\n border-bottom-color: var(--ag-secondary-border-color, #dde2eb);\n}\n.ag-theme-alpine .ag-rich-select-virtual-list-item {\n cursor: default;\n height: 24px;\n}\n.ag-theme-alpine .ag-rich-select-virtual-list-item:hover {\n background-color: rgba(33, 150, 243, 0.1);\n background-color: var(--ag-row-hover-color, rgba(33, 150, 243, 0.1));\n}\n.ag-theme-alpine .ag-rich-select-row {\n padding-left: 18px;\n}\n.ag-theme-alpine .ag-rich-select-row-selected {\n background-color: rgba(33, 150, 243, 0.3);\n background-color: var(--ag-selected-row-background-color, rgba(33, 150, 243, 0.3));\n}\n.ag-theme-alpine .ag-row-drag,\n.ag-theme-alpine .ag-selection-checkbox,\n.ag-theme-alpine .ag-group-expanded,\n.ag-theme-alpine .ag-group-contracted {\n color: #181d1f;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #181d1f));\n}\n.ag-theme-alpine .ag-ltr .ag-row-drag, .ag-theme-alpine .ag-ltr .ag-selection-checkbox, .ag-theme-alpine .ag-ltr .ag-group-expanded, .ag-theme-alpine .ag-ltr .ag-group-contracted {\n margin-right: 12px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-drag, .ag-theme-alpine .ag-rtl .ag-selection-checkbox, .ag-theme-alpine .ag-rtl .ag-group-expanded, .ag-theme-alpine .ag-rtl .ag-group-contracted {\n margin-left: 12px;\n}\n\n.ag-theme-alpine .ag-cell-wrapper > *:not(.ag-cell-value):not(.ag-group-value) {\n height: min(var(--ag-line-height, 40px), 40px);\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-flex: 0;\n flex: none;\n}\n.ag-theme-alpine .ag-group-expanded,\n.ag-theme-alpine .ag-group-contracted {\n cursor: pointer;\n}\n.ag-theme-alpine .ag-group-title-bar-icon {\n cursor: pointer;\n -webkit-box-flex: 0;\n flex: none;\n color: #181d1f;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #181d1f));\n}\n.ag-theme-alpine .ag-ltr .ag-group-child-count {\n margin-left: 2px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-group-child-count {\n margin-right: 2px;\n}\n\n.ag-theme-alpine .ag-group-title-bar {\n background-color: #fff;\n background-color: var(--ag-subheader-background-color, #fff);\n padding: 6px;\n}\n.ag-theme-alpine .ag-group-toolbar {\n padding: 6px;\n}\n.ag-theme-alpine .ag-disabled-group-title-bar, .ag-theme-alpine .ag-disabled-group-container {\n opacity: 0.5;\n}\n.ag-theme-alpine .group-item {\n margin: 3px 0;\n}\n.ag-theme-alpine .ag-label {\n white-space: nowrap;\n}\n.ag-theme-alpine .ag-ltr .ag-label {\n margin-right: 6px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-label {\n margin-left: 6px;\n}\n\n.ag-theme-alpine .ag-label-align-top .ag-label {\n margin-bottom: 3px;\n}\n.ag-theme-alpine .ag-ltr .ag-slider-field, .ag-theme-alpine .ag-ltr .ag-angle-select-field {\n margin-right: 12px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-slider-field, .ag-theme-alpine .ag-rtl .ag-angle-select-field {\n margin-left: 12px;\n}\n\n.ag-theme-alpine .ag-angle-select-parent-circle {\n width: 24px;\n height: 24px;\n border-radius: 12px;\n border: solid 1px;\n border-color: #babfc7;\n border-color: var(--ag-border-color, #babfc7);\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n}\n.ag-theme-alpine .ag-angle-select-child-circle {\n top: 4px;\n left: 12px;\n width: 6px;\n height: 6px;\n margin-left: -3px;\n margin-top: -4px;\n border-radius: 3px;\n background-color: #181d1f;\n background-color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #181d1f));\n}\n.ag-theme-alpine .ag-picker-field-wrapper {\n border: 1px solid;\n border-color: #babfc7;\n border-color: var(--ag-border-color, #babfc7);\n border-radius: 5px;\n}\n.ag-theme-alpine .ag-picker-field-wrapper:focus {\n -webkit-box-shadow: 0 0 2px 0.1rem rgba(33, 150, 243, 0.4);\n box-shadow: 0 0 2px 0.1rem rgba(33, 150, 243, 0.4);\n}\n.ag-theme-alpine .ag-picker-field-button {\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n color: #181d1f;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #181d1f));\n}\n.ag-theme-alpine .ag-dialog.ag-color-dialog {\n border-radius: 5px;\n}\n.ag-theme-alpine .ag-color-picker .ag-picker-field-display {\n height: 16px;\n}\n.ag-theme-alpine .ag-color-panel {\n padding: 6px;\n}\n.ag-theme-alpine .ag-spectrum-color {\n background-color: rgb(255, 0, 0);\n border-radius: 2px;\n}\n.ag-theme-alpine .ag-spectrum-tools {\n padding: 10px;\n}\n.ag-theme-alpine .ag-spectrum-sat {\n background-image: -webkit-gradient(linear, left top, right top, from(white), to(rgba(204, 154, 129, 0)));\n background-image: linear-gradient(to right, white, rgba(204, 154, 129, 0));\n}\n.ag-theme-alpine .ag-spectrum-val {\n background-image: -webkit-gradient(linear, left bottom, left top, from(black), to(rgba(204, 154, 129, 0)));\n background-image: linear-gradient(to top, black, rgba(204, 154, 129, 0));\n}\n.ag-theme-alpine .ag-spectrum-dragger {\n border-radius: 12px;\n height: 12px;\n width: 12px;\n border: 1px solid white;\n background: black;\n -webkit-box-shadow: 0 0 2px 0px rgba(0, 0, 0, 0.24);\n box-shadow: 0 0 2px 0px rgba(0, 0, 0, 0.24);\n}\n.ag-theme-alpine .ag-spectrum-hue-background {\n border-radius: 2px;\n}\n.ag-theme-alpine .ag-spectrum-alpha-background {\n border-radius: 2px;\n}\n.ag-theme-alpine .ag-spectrum-tool {\n margin-bottom: 10px;\n height: 11px;\n border-radius: 2px;\n}\n.ag-theme-alpine .ag-spectrum-slider {\n margin-top: -12px;\n width: 13px;\n height: 13px;\n border-radius: 13px;\n background-color: rgb(248, 248, 248);\n -webkit-box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\n box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\n}\n.ag-theme-alpine .ag-recent-color {\n margin: 0 3px;\n}\n.ag-theme-alpine .ag-recent-color:first-child {\n margin-left: 0;\n}\n.ag-theme-alpine .ag-recent-color:last-child {\n margin-right: 0;\n}\n.ag-theme-alpine.ag-dnd-ghost {\n border: solid 1px;\n border-color: #babfc7;\n border-color: var(--ag-border-color, #babfc7);\n background: #fff;\n background: var(--ag-background-color, #fff);\n border-radius: 3px;\n -webkit-box-shadow: 0 1px 4px 1px rgba(186, 191, 199, 0.4);\n box-shadow: 0 1px 4px 1px rgba(186, 191, 199, 0.4);\n padding: 6px;\n overflow: hidden;\n text-overflow: ellipsis;\n border: solid 1px;\n border-color: #dde2eb;\n border-color: var(--ag-secondary-border-color, #dde2eb);\n color: #181d1f;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #181d1f));\n height: 48px !important;\n line-height: 48px;\n margin: 0;\n padding: 0 12px;\n -webkit-transform: translateY(12px);\n transform: translateY(12px);\n}\n.ag-theme-alpine .ag-dnd-ghost-icon {\n margin-right: 6px;\n color: #181d1f;\n color: var(--ag-foreground-color, #181d1f);\n}\n.ag-theme-alpine .ag-popup-child:not(.ag-tooltip-custom) {\n -webkit-box-shadow: 0 1px 4px 1px rgba(186, 191, 199, 0.4);\n box-shadow: 0 1px 4px 1px rgba(186, 191, 199, 0.4);\n}\n.ag-dragging-range-handle .ag-theme-alpine .ag-dialog, .ag-dragging-fill-handle .ag-theme-alpine .ag-dialog {\n opacity: 0.7;\n pointer-events: none;\n}\n.ag-theme-alpine .ag-dialog {\n border-radius: 3px;\n border: solid 1px;\n border-color: #babfc7;\n border-color: var(--ag-border-color, #babfc7);\n}\n.ag-theme-alpine .ag-panel {\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n}\n.ag-theme-alpine .ag-panel-title-bar {\n background-color: #f8f8f8;\n background-color: var(--ag-header-background-color, #f8f8f8);\n color: #181d1f;\n color: var(--ag-header-foreground-color, var(--ag-secondary-foreground-color, var(--ag-foreground-color, #181d1f)));\n height: 48px;\n padding: 6px 18px;\n border-bottom: solid 1px;\n border-bottom-color: #babfc7;\n border-bottom-color: var(--ag-border-color, #babfc7);\n}\n.ag-theme-alpine .ag-ltr .ag-panel-title-bar-button {\n margin-left: 6px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-panel-title-bar-button {\n margin-right: 6px;\n}\n\n.ag-theme-alpine .ag-tooltip {\n background-color: #f8f8f8;\n background-color: var(--ag-header-background-color, #f8f8f8);\n color: #181d1f;\n color: var(--ag-foreground-color, #181d1f);\n padding: 6px;\n border: solid 1px;\n border-color: #babfc7;\n border-color: var(--ag-border-color, #babfc7);\n border-radius: 3px;\n -webkit-transition: opacity 1s;\n transition: opacity 1s;\n white-space: normal;\n}\n.ag-theme-alpine .ag-tooltip.ag-tooltip-hiding {\n opacity: 0;\n}\n.ag-theme-alpine .ag-tooltip-custom {\n -webkit-transition: opacity 1s;\n transition: opacity 1s;\n}\n.ag-theme-alpine .ag-tooltip-custom.ag-tooltip-hiding {\n opacity: 0;\n}\n.ag-theme-alpine .ag-ltr .ag-column-select-indent-1 {\n padding-left: 16px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-column-select-indent-1 {\n padding-right: 16px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-column-select-indent-2 {\n padding-left: 32px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-column-select-indent-2 {\n padding-right: 32px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-column-select-indent-3 {\n padding-left: 48px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-column-select-indent-3 {\n padding-right: 48px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-column-select-indent-4 {\n padding-left: 64px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-column-select-indent-4 {\n padding-right: 64px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-column-select-indent-5 {\n padding-left: 80px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-column-select-indent-5 {\n padding-right: 80px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-column-select-indent-6 {\n padding-left: 96px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-column-select-indent-6 {\n padding-right: 96px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-column-select-indent-7 {\n padding-left: 112px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-column-select-indent-7 {\n padding-right: 112px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-column-select-indent-8 {\n padding-left: 128px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-column-select-indent-8 {\n padding-right: 128px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-column-select-indent-9 {\n padding-left: 144px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-column-select-indent-9 {\n padding-right: 144px;\n}\n\n.ag-theme-alpine .ag-column-select-header-icon {\n cursor: pointer;\n}\n.ag-theme-alpine .ag-keyboard-focus .ag-column-select-header-icon:focus {\n outline: none;\n}\n.ag-theme-alpine .ag-keyboard-focus .ag-column-select-header-icon:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 0px;\n left: 0px;\n display: block;\n width: calc(100% - 0px);\n height: calc(100% - 0px);\n border: 1px solid;\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine .ag-ltr .ag-column-group-icons:not(:last-child), .ag-theme-alpine .ag-ltr .ag-column-select-header-icon:not(:last-child), .ag-theme-alpine .ag-ltr .ag-column-select-header-checkbox:not(:last-child), .ag-theme-alpine .ag-ltr .ag-column-select-header-filter-wrapper:not(:last-child), .ag-theme-alpine .ag-ltr .ag-column-select-checkbox:not(:last-child), .ag-theme-alpine .ag-ltr .ag-column-select-column-drag-handle:not(:last-child), .ag-theme-alpine .ag-ltr .ag-column-select-column-group-drag-handle:not(:last-child), .ag-theme-alpine .ag-ltr .ag-column-select-column-label:not(:last-child) {\n margin-right: 12px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-column-group-icons:not(:last-child), .ag-theme-alpine .ag-rtl .ag-column-select-header-icon:not(:last-child), .ag-theme-alpine .ag-rtl .ag-column-select-header-checkbox:not(:last-child), .ag-theme-alpine .ag-rtl .ag-column-select-header-filter-wrapper:not(:last-child), .ag-theme-alpine .ag-rtl .ag-column-select-checkbox:not(:last-child), .ag-theme-alpine .ag-rtl .ag-column-select-column-drag-handle:not(:last-child), .ag-theme-alpine .ag-rtl .ag-column-select-column-group-drag-handle:not(:last-child), .ag-theme-alpine .ag-rtl .ag-column-select-column-label:not(:last-child) {\n margin-left: 12px;\n}\n\n.ag-theme-alpine .ag-keyboard-focus .ag-column-select-virtual-list-item:focus {\n outline: none;\n}\n.ag-theme-alpine .ag-keyboard-focus .ag-column-select-virtual-list-item:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 1px;\n left: 1px;\n display: block;\n width: calc(100% - 2px);\n height: calc(100% - 2px);\n border: 1px solid;\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine .ag-column-select-column-group:not(:last-child),\n.ag-theme-alpine .ag-column-select-column:not(:last-child) {\n margin-bottom: 9px;\n}\n.ag-theme-alpine .ag-column-select-column-readonly,\n.ag-theme-alpine .ag-column-select-column-group-readonly {\n color: rgba(24, 29, 31, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(24, 29, 31, 0.5));\n pointer-events: none;\n}\n.ag-theme-alpine .ag-ltr .ag-column-select-add-group-indent {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-column-select-add-group-indent {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-column-select-virtual-list-viewport {\n padding: 6px 0px;\n}\n.ag-theme-alpine .ag-column-select-virtual-list-item {\n padding: 0 12px;\n}\n.ag-theme-alpine .ag-rtl {\n text-align: right;\n}\n.ag-theme-alpine .ag-root-wrapper {\n border: solid 1px;\n border-color: #babfc7;\n border-color: var(--ag-border-color, #babfc7);\n}\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-1 {\n padding-left: 46px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-1 {\n padding-right: 46px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-1 {\n padding-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-1 {\n padding-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-1 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-1 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-2 {\n padding-left: 74px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-2 {\n padding-right: 74px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-2 {\n padding-left: 56px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-2 {\n padding-right: 56px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-2 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-2 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-3 {\n padding-left: 102px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-3 {\n padding-right: 102px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-3 {\n padding-left: 84px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-3 {\n padding-right: 84px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-3 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-3 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-4 {\n padding-left: 130px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-4 {\n padding-right: 130px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-4 {\n padding-left: 112px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-4 {\n padding-right: 112px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-4 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-4 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-5 {\n padding-left: 158px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-5 {\n padding-right: 158px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-5 {\n padding-left: 140px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-5 {\n padding-right: 140px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-5 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-5 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-6 {\n padding-left: 186px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-6 {\n padding-right: 186px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-6 {\n padding-left: 168px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-6 {\n padding-right: 168px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-6 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-6 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-7 {\n padding-left: 214px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-7 {\n padding-right: 214px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-7 {\n padding-left: 196px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-7 {\n padding-right: 196px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-7 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-7 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-8 {\n padding-left: 242px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-8 {\n padding-right: 242px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-8 {\n padding-left: 224px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-8 {\n padding-right: 224px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-8 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-8 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-9 {\n padding-left: 270px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-9 {\n padding-right: 270px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-9 {\n padding-left: 252px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-9 {\n padding-right: 252px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-9 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-9 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-10 {\n padding-left: 298px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-10 {\n padding-right: 298px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-10 {\n padding-left: 280px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-10 {\n padding-right: 280px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-10 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-10 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-11 {\n padding-left: 326px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-11 {\n padding-right: 326px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-11 {\n padding-left: 308px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-11 {\n padding-right: 308px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-11 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-11 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-12 {\n padding-left: 354px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-12 {\n padding-right: 354px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-12 {\n padding-left: 336px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-12 {\n padding-right: 336px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-12 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-12 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-13 {\n padding-left: 382px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-13 {\n padding-right: 382px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-13 {\n padding-left: 364px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-13 {\n padding-right: 364px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-13 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-13 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-14 {\n padding-left: 410px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-14 {\n padding-right: 410px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-14 {\n padding-left: 392px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-14 {\n padding-right: 392px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-14 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-14 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-15 {\n padding-left: 438px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-15 {\n padding-right: 438px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-15 {\n padding-left: 420px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-15 {\n padding-right: 420px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-15 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-15 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-16 {\n padding-left: 466px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-16 {\n padding-right: 466px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-16 {\n padding-left: 448px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-16 {\n padding-right: 448px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-16 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-16 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-17 {\n padding-left: 494px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-17 {\n padding-right: 494px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-17 {\n padding-left: 476px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-17 {\n padding-right: 476px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-17 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-17 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-18 {\n padding-left: 522px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-18 {\n padding-right: 522px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-18 {\n padding-left: 504px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-18 {\n padding-right: 504px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-18 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-18 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-19 {\n padding-left: 550px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-19 {\n padding-right: 550px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-19 {\n padding-left: 532px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-19 {\n padding-right: 532px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-19 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-19 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-20 {\n padding-left: 578px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-20 {\n padding-right: 578px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-20 {\n padding-left: 560px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-20 {\n padding-right: 560px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-20 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-20 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-21 {\n padding-left: 606px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-21 {\n padding-right: 606px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-21 {\n padding-left: 588px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-21 {\n padding-right: 588px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-21 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-21 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-22 {\n padding-left: 634px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-22 {\n padding-right: 634px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-22 {\n padding-left: 616px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-22 {\n padding-right: 616px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-22 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-22 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-23 {\n padding-left: 662px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-23 {\n padding-right: 662px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-23 {\n padding-left: 644px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-23 {\n padding-right: 644px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-23 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-23 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-24 {\n padding-left: 690px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-24 {\n padding-right: 690px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-24 {\n padding-left: 672px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-24 {\n padding-right: 672px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-24 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-24 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-25 {\n padding-left: 718px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-25 {\n padding-right: 718px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-25 {\n padding-left: 700px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-25 {\n padding-right: 700px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-25 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-25 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-26 {\n padding-left: 746px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-26 {\n padding-right: 746px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-26 {\n padding-left: 728px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-26 {\n padding-right: 728px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-26 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-26 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-27 {\n padding-left: 774px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-27 {\n padding-right: 774px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-27 {\n padding-left: 756px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-27 {\n padding-right: 756px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-27 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-27 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-28 {\n padding-left: 802px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-28 {\n padding-right: 802px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-28 {\n padding-left: 784px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-28 {\n padding-right: 784px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-28 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-28 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-29 {\n padding-left: 830px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-29 {\n padding-right: 830px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-29 {\n padding-left: 812px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-29 {\n padding-right: 812px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-29 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-29 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-30 {\n padding-left: 858px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-30 {\n padding-right: 858px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-30 {\n padding-left: 840px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-30 {\n padding-right: 840px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-30 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-30 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-31 {\n padding-left: 886px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-31 {\n padding-right: 886px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-31 {\n padding-left: 868px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-31 {\n padding-right: 868px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-31 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-31 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-32 {\n padding-left: 914px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-32 {\n padding-right: 914px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-32 {\n padding-left: 896px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-32 {\n padding-right: 896px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-32 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-32 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-33 {\n padding-left: 942px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-33 {\n padding-right: 942px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-33 {\n padding-left: 924px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-33 {\n padding-right: 924px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-33 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-33 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-34 {\n padding-left: 970px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-34 {\n padding-right: 970px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-34 {\n padding-left: 952px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-34 {\n padding-right: 952px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-34 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-34 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-35 {\n padding-left: 998px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-35 {\n padding-right: 998px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-35 {\n padding-left: 980px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-35 {\n padding-right: 980px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-35 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-35 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-36 {\n padding-left: 1026px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-36 {\n padding-right: 1026px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-36 {\n padding-left: 1008px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-36 {\n padding-right: 1008px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-36 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-36 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-37 {\n padding-left: 1054px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-37 {\n padding-right: 1054px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-37 {\n padding-left: 1036px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-37 {\n padding-right: 1036px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-37 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-37 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-38 {\n padding-left: 1082px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-38 {\n padding-right: 1082px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-38 {\n padding-left: 1064px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-38 {\n padding-right: 1064px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-38 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-38 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-39 {\n padding-left: 1110px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-39 {\n padding-right: 1110px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-39 {\n padding-left: 1092px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-39 {\n padding-right: 1092px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-39 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-39 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-40 {\n padding-left: 1138px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-40 {\n padding-right: 1138px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-40 {\n padding-left: 1120px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-40 {\n padding-right: 1120px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-40 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-40 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-41 {\n padding-left: 1166px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-41 {\n padding-right: 1166px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-41 {\n padding-left: 1148px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-41 {\n padding-right: 1148px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-41 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-41 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-42 {\n padding-left: 1194px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-42 {\n padding-right: 1194px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-42 {\n padding-left: 1176px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-42 {\n padding-right: 1176px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-42 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-42 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-43 {\n padding-left: 1222px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-43 {\n padding-right: 1222px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-43 {\n padding-left: 1204px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-43 {\n padding-right: 1204px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-43 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-43 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-44 {\n padding-left: 1250px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-44 {\n padding-right: 1250px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-44 {\n padding-left: 1232px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-44 {\n padding-right: 1232px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-44 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-44 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-45 {\n padding-left: 1278px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-45 {\n padding-right: 1278px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-45 {\n padding-left: 1260px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-45 {\n padding-right: 1260px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-45 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-45 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-46 {\n padding-left: 1306px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-46 {\n padding-right: 1306px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-46 {\n padding-left: 1288px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-46 {\n padding-right: 1288px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-46 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-46 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-47 {\n padding-left: 1334px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-47 {\n padding-right: 1334px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-47 {\n padding-left: 1316px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-47 {\n padding-right: 1316px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-47 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-47 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-48 {\n padding-left: 1362px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-48 {\n padding-right: 1362px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-48 {\n padding-left: 1344px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-48 {\n padding-right: 1344px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-48 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-48 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-49 {\n padding-left: 1390px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-49 {\n padding-right: 1390px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-49 {\n padding-left: 1372px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-49 {\n padding-right: 1372px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-49 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-49 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-50 {\n padding-left: 1418px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-50 {\n padding-right: 1418px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-50 {\n padding-left: 1400px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-50 {\n padding-right: 1400px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-50 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-50 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-51 {\n padding-left: 1446px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-51 {\n padding-right: 1446px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-51 {\n padding-left: 1428px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-51 {\n padding-right: 1428px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-51 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-51 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-52 {\n padding-left: 1474px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-52 {\n padding-right: 1474px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-52 {\n padding-left: 1456px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-52 {\n padding-right: 1456px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-52 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-52 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-53 {\n padding-left: 1502px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-53 {\n padding-right: 1502px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-53 {\n padding-left: 1484px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-53 {\n padding-right: 1484px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-53 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-53 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-54 {\n padding-left: 1530px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-54 {\n padding-right: 1530px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-54 {\n padding-left: 1512px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-54 {\n padding-right: 1512px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-54 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-54 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-55 {\n padding-left: 1558px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-55 {\n padding-right: 1558px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-55 {\n padding-left: 1540px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-55 {\n padding-right: 1540px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-55 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-55 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-56 {\n padding-left: 1586px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-56 {\n padding-right: 1586px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-56 {\n padding-left: 1568px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-56 {\n padding-right: 1568px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-56 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-56 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-57 {\n padding-left: 1614px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-57 {\n padding-right: 1614px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-57 {\n padding-left: 1596px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-57 {\n padding-right: 1596px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-57 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-57 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-58 {\n padding-left: 1642px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-58 {\n padding-right: 1642px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-58 {\n padding-left: 1624px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-58 {\n padding-right: 1624px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-58 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-58 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-59 {\n padding-left: 1670px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-59 {\n padding-right: 1670px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-59 {\n padding-left: 1652px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-59 {\n padding-right: 1652px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-59 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-59 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-60 {\n padding-left: 1698px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-60 {\n padding-right: 1698px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-60 {\n padding-left: 1680px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-60 {\n padding-right: 1680px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-60 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-60 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-61 {\n padding-left: 1726px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-61 {\n padding-right: 1726px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-61 {\n padding-left: 1708px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-61 {\n padding-right: 1708px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-61 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-61 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-62 {\n padding-left: 1754px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-62 {\n padding-right: 1754px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-62 {\n padding-left: 1736px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-62 {\n padding-right: 1736px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-62 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-62 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-63 {\n padding-left: 1782px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-63 {\n padding-right: 1782px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-63 {\n padding-left: 1764px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-63 {\n padding-right: 1764px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-63 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-63 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-64 {\n padding-left: 1810px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-64 {\n padding-right: 1810px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-64 {\n padding-left: 1792px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-64 {\n padding-right: 1792px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-64 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-64 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-65 {\n padding-left: 1838px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-65 {\n padding-right: 1838px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-65 {\n padding-left: 1820px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-65 {\n padding-right: 1820px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-65 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-65 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-66 {\n padding-left: 1866px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-66 {\n padding-right: 1866px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-66 {\n padding-left: 1848px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-66 {\n padding-right: 1848px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-66 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-66 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-67 {\n padding-left: 1894px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-67 {\n padding-right: 1894px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-67 {\n padding-left: 1876px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-67 {\n padding-right: 1876px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-67 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-67 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-68 {\n padding-left: 1922px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-68 {\n padding-right: 1922px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-68 {\n padding-left: 1904px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-68 {\n padding-right: 1904px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-68 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-68 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-69 {\n padding-left: 1950px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-69 {\n padding-right: 1950px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-69 {\n padding-left: 1932px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-69 {\n padding-right: 1932px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-69 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-69 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-70 {\n padding-left: 1978px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-70 {\n padding-right: 1978px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-70 {\n padding-left: 1960px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-70 {\n padding-right: 1960px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-70 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-70 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-71 {\n padding-left: 2006px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-71 {\n padding-right: 2006px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-71 {\n padding-left: 1988px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-71 {\n padding-right: 1988px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-71 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-71 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-72 {\n padding-left: 2034px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-72 {\n padding-right: 2034px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-72 {\n padding-left: 2016px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-72 {\n padding-right: 2016px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-72 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-72 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-73 {\n padding-left: 2062px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-73 {\n padding-right: 2062px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-73 {\n padding-left: 2044px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-73 {\n padding-right: 2044px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-73 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-73 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-74 {\n padding-left: 2090px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-74 {\n padding-right: 2090px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-74 {\n padding-left: 2072px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-74 {\n padding-right: 2072px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-74 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-74 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-75 {\n padding-left: 2118px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-75 {\n padding-right: 2118px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-75 {\n padding-left: 2100px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-75 {\n padding-right: 2100px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-75 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-75 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-76 {\n padding-left: 2146px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-76 {\n padding-right: 2146px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-76 {\n padding-left: 2128px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-76 {\n padding-right: 2128px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-76 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-76 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-77 {\n padding-left: 2174px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-77 {\n padding-right: 2174px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-77 {\n padding-left: 2156px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-77 {\n padding-right: 2156px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-77 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-77 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-78 {\n padding-left: 2202px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-78 {\n padding-right: 2202px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-78 {\n padding-left: 2184px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-78 {\n padding-right: 2184px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-78 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-78 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-79 {\n padding-left: 2230px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-79 {\n padding-right: 2230px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-79 {\n padding-left: 2212px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-79 {\n padding-right: 2212px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-79 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-79 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-80 {\n padding-left: 2258px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-80 {\n padding-right: 2258px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-80 {\n padding-left: 2240px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-80 {\n padding-right: 2240px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-80 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-80 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-81 {\n padding-left: 2286px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-81 {\n padding-right: 2286px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-81 {\n padding-left: 2268px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-81 {\n padding-right: 2268px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-81 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-81 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-82 {\n padding-left: 2314px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-82 {\n padding-right: 2314px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-82 {\n padding-left: 2296px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-82 {\n padding-right: 2296px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-82 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-82 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-83 {\n padding-left: 2342px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-83 {\n padding-right: 2342px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-83 {\n padding-left: 2324px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-83 {\n padding-right: 2324px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-83 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-83 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-84 {\n padding-left: 2370px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-84 {\n padding-right: 2370px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-84 {\n padding-left: 2352px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-84 {\n padding-right: 2352px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-84 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-84 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-85 {\n padding-left: 2398px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-85 {\n padding-right: 2398px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-85 {\n padding-left: 2380px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-85 {\n padding-right: 2380px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-85 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-85 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-86 {\n padding-left: 2426px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-86 {\n padding-right: 2426px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-86 {\n padding-left: 2408px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-86 {\n padding-right: 2408px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-86 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-86 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-87 {\n padding-left: 2454px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-87 {\n padding-right: 2454px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-87 {\n padding-left: 2436px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-87 {\n padding-right: 2436px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-87 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-87 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-88 {\n padding-left: 2482px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-88 {\n padding-right: 2482px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-88 {\n padding-left: 2464px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-88 {\n padding-right: 2464px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-88 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-88 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-89 {\n padding-left: 2510px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-89 {\n padding-right: 2510px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-89 {\n padding-left: 2492px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-89 {\n padding-right: 2492px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-89 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-89 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-90 {\n padding-left: 2538px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-90 {\n padding-right: 2538px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-90 {\n padding-left: 2520px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-90 {\n padding-right: 2520px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-90 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-90 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-91 {\n padding-left: 2566px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-91 {\n padding-right: 2566px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-91 {\n padding-left: 2548px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-91 {\n padding-right: 2548px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-91 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-91 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-92 {\n padding-left: 2594px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-92 {\n padding-right: 2594px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-92 {\n padding-left: 2576px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-92 {\n padding-right: 2576px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-92 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-92 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-93 {\n padding-left: 2622px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-93 {\n padding-right: 2622px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-93 {\n padding-left: 2604px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-93 {\n padding-right: 2604px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-93 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-93 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-94 {\n padding-left: 2650px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-94 {\n padding-right: 2650px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-94 {\n padding-left: 2632px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-94 {\n padding-right: 2632px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-94 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-94 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-95 {\n padding-left: 2678px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-95 {\n padding-right: 2678px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-95 {\n padding-left: 2660px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-95 {\n padding-right: 2660px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-95 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-95 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-96 {\n padding-left: 2706px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-96 {\n padding-right: 2706px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-96 {\n padding-left: 2688px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-96 {\n padding-right: 2688px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-96 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-96 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-97 {\n padding-left: 2734px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-97 {\n padding-right: 2734px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-97 {\n padding-left: 2716px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-97 {\n padding-right: 2716px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-97 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-97 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-98 {\n padding-left: 2762px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-98 {\n padding-right: 2762px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-98 {\n padding-left: 2744px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-98 {\n padding-right: 2744px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-98 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-98 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-99 {\n padding-left: 2790px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-99 {\n padding-right: 2790px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-indent-99 {\n padding-left: 2772px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-indent-99 {\n padding-right: 2772px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-level-99 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-level-99 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-row-group-leaf-indent {\n margin-left: 28px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-row-group-leaf-indent {\n margin-right: 28px;\n}\n\n.ag-theme-alpine .ag-value-change-delta {\n padding-right: 2px;\n}\n.ag-theme-alpine .ag-value-change-delta-up {\n color: #43a047;\n color: var(--ag-value-change-delta-up-color, #43a047);\n}\n.ag-theme-alpine .ag-value-change-delta-down {\n color: #e53935;\n color: var(--ag-value-change-delta-down-color, #e53935);\n}\n.ag-theme-alpine .ag-value-change-value {\n background-color: transparent;\n border-radius: 1px;\n padding-left: 1px;\n padding-right: 1px;\n -webkit-transition: background-color 1s;\n transition: background-color 1s;\n}\n.ag-theme-alpine .ag-value-change-value-highlight {\n background-color: rgba(22, 160, 133, 0.5);\n background-color: var(--ag-value-change-value-highlight-background-color, rgba(22, 160, 133, 0.5));\n -webkit-transition: background-color 0.1s;\n transition: background-color 0.1s;\n}\n.ag-theme-alpine .ag-cell-data-changed {\n background-color: rgba(22, 160, 133, 0.5) !important;\n background-color: var(--ag-value-change-value-highlight-background-color, rgba(22, 160, 133, 0.5)) !important;\n}\n.ag-theme-alpine .ag-cell-data-changed-animation {\n background-color: transparent;\n}\n.ag-theme-alpine .ag-cell-highlight {\n background-color: #2196f3 !important;\n background-color: var(--ag-range-selection-highlight-color, var(--ag-range-selection-border-color, #2196f3)) !important;\n}\n.ag-theme-alpine .ag-row {\n height: 42px;\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n color: #181d1f;\n color: var(--ag-data-color, var(--ag-foreground-color, #181d1f));\n border-width: 1px;\n border-color: #dde2eb;\n border-color: var(--ag-row-border-color, var(--ag-secondary-border-color, #dde2eb));\n border-bottom-style: solid;\n}\n.ag-theme-alpine .ag-row-highlight-above::after, .ag-theme-alpine .ag-row-highlight-below::after {\n content: \"\";\n position: absolute;\n width: calc(100% - 1px);\n height: 1px;\n background-color: #2196f3;\n background-color: var(--ag-range-selection-border-color, #2196f3);\n left: 1px;\n}\n.ag-theme-alpine .ag-row-highlight-above::after {\n top: -1px;\n}\n.ag-theme-alpine .ag-row-highlight-above.ag-row-first::after {\n top: 0;\n}\n.ag-theme-alpine .ag-row-highlight-below::after {\n bottom: 0px;\n}\n.ag-theme-alpine .ag-row-odd {\n background-color: #fcfcfc;\n background-color: var(--ag-odd-row-background-color, #fcfcfc);\n}\n.ag-theme-alpine .ag-body-horizontal-scroll:not(.ag-scrollbar-invisible) .ag-horizontal-left-spacer:not(.ag-scroller-corner) {\n border-right: solid 1px;\n border-right-color: #babfc7;\n border-right-color: var(--ag-border-color, #babfc7);\n}\n.ag-theme-alpine .ag-body-horizontal-scroll:not(.ag-scrollbar-invisible) .ag-horizontal-right-spacer:not(.ag-scroller-corner) {\n border-left: solid 1px;\n border-left-color: #babfc7;\n border-left-color: var(--ag-border-color, #babfc7);\n}\n.ag-theme-alpine .ag-row-hover {\n background-color: rgba(33, 150, 243, 0.1);\n background-color: var(--ag-row-hover-color, rgba(33, 150, 243, 0.1));\n}\n.ag-theme-alpine .ag-column-hover {\n background-color: rgba(33, 150, 243, 0.1);\n background-color: var(--ag-column-hover-color, rgba(33, 150, 243, 0.1));\n}\n.ag-theme-alpine .ag-ltr .ag-right-aligned-cell {\n text-align: right;\n}\n\n.ag-theme-alpine .ag-rtl .ag-right-aligned-cell {\n text-align: left;\n}\n\n.ag-theme-alpine .ag-ltr .ag-right-aligned-cell .ag-cell-value, .ag-theme-alpine .ag-ltr .ag-right-aligned-cell .ag-group-value {\n margin-left: auto;\n}\n\n.ag-theme-alpine .ag-rtl .ag-right-aligned-cell .ag-cell-value, .ag-theme-alpine .ag-rtl .ag-right-aligned-cell .ag-group-value {\n margin-right: auto;\n}\n\n.ag-theme-alpine .ag-cell, .ag-theme-alpine .ag-full-width-row .ag-cell-wrapper.ag-row-group {\n border: 1px solid transparent;\n line-height: min(var(--ag-line-height, 40px), 40px);\n padding-left: 17px;\n padding-right: 17px;\n -webkit-font-smoothing: subpixel-antialiased;\n}\n.ag-theme-alpine .ag-row > .ag-cell-wrapper {\n padding-left: 17px;\n padding-right: 17px;\n}\n.ag-theme-alpine .ag-row-dragging {\n cursor: move;\n opacity: 0.5;\n}\n.ag-theme-alpine .ag-cell-inline-editing {\n border: solid 1px;\n border-color: #babfc7;\n border-color: var(--ag-border-color, #babfc7);\n background: #fff;\n background: var(--ag-background-color, #fff);\n border-radius: 3px;\n -webkit-box-shadow: 0 1px 4px 1px rgba(186, 191, 199, 0.4);\n box-shadow: 0 1px 4px 1px rgba(186, 191, 199, 0.4);\n padding: 6px;\n padding: 0;\n height: 42px;\n background-color: #f8f8f8;\n background-color: var(--ag-control-panel-background-color, #f8f8f8);\n}\n.ag-theme-alpine .ag-popup-editor {\n border: solid 1px;\n border-color: #babfc7;\n border-color: var(--ag-border-color, #babfc7);\n background: #fff;\n background: var(--ag-background-color, #fff);\n border-radius: 3px;\n -webkit-box-shadow: 0 1px 4px 1px rgba(186, 191, 199, 0.4);\n box-shadow: 0 1px 4px 1px rgba(186, 191, 199, 0.4);\n padding: 6px;\n background-color: #f8f8f8;\n background-color: var(--ag-control-panel-background-color, #f8f8f8);\n padding: 0;\n}\n.ag-theme-alpine .ag-large-text-input {\n height: auto;\n padding: 18px;\n}\n.ag-theme-alpine .ag-details-row {\n padding: 30px;\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n}\n.ag-theme-alpine .ag-layout-auto-height .ag-center-cols-clipper, .ag-theme-alpine .ag-layout-auto-height .ag-center-cols-container, .ag-theme-alpine .ag-layout-print .ag-center-cols-clipper, .ag-theme-alpine .ag-layout-print .ag-center-cols-container {\n min-height: 50px;\n}\n.ag-theme-alpine .ag-overlay-loading-wrapper {\n background-color: rgba(255, 255, 255, 0.66);\n background-color: var(--ag-modal-overlay-background-color, rgba(255, 255, 255, 0.66));\n}\n.ag-theme-alpine .ag-overlay-loading-center {\n border: solid 1px;\n border-color: #babfc7;\n border-color: var(--ag-border-color, #babfc7);\n background: #fff;\n background: var(--ag-background-color, #fff);\n border-radius: 3px;\n -webkit-box-shadow: 0 1px 4px 1px rgba(186, 191, 199, 0.4);\n box-shadow: 0 1px 4px 1px rgba(186, 191, 199, 0.4);\n padding: 6px;\n}\n.ag-theme-alpine .ag-overlay-no-rows-wrapper.ag-layout-auto-height {\n padding-top: 30px;\n}\n.ag-theme-alpine .ag-loading {\n padding-left: 18px;\n display: -webkit-box;\n display: flex;\n height: 100%;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-alpine .ag-loading-icon {\n padding-right: 12px;\n}\n.ag-theme-alpine .ag-icon-loading {\n -webkit-animation-name: spin;\n animation-name: spin;\n -webkit-animation-duration: 1000ms;\n animation-duration: 1000ms;\n -webkit-animation-iteration-count: infinite;\n animation-iteration-count: infinite;\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n}\n@-webkit-keyframes spin {\n from {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@keyframes spin {\n from {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.ag-theme-alpine .ag-floating-top {\n border-bottom: solid 1px;\n border-bottom-color: #babfc7;\n border-bottom-color: var(--ag-border-color, #babfc7);\n}\n.ag-theme-alpine .ag-floating-bottom {\n border-top: solid 1px;\n border-top-color: #babfc7;\n border-top-color: var(--ag-border-color, #babfc7);\n}\n.ag-theme-alpine .ag-ltr .ag-cell {\n border-right: solid transparent;\n}\n\n.ag-theme-alpine .ag-rtl .ag-cell {\n border-left: solid transparent;\n}\n\n.ag-theme-alpine .ag-ltr .ag-cell {\n border-right-width: 1px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-cell {\n border-left-width: 1px;\n}\n\n.ag-theme-alpine .ag-cell.ag-cell-first-right-pinned:not(.ag-cell-range-left):not(.ag-cell-range-single-cell) {\n border-left: solid 1px;\n border-left-color: #babfc7;\n border-left-color: var(--ag-border-color, #babfc7);\n}\n.ag-theme-alpine .ag-cell.ag-cell-last-left-pinned:not(.ag-cell-range-right):not(.ag-cell-range-single-cell) {\n border-right: solid 1px;\n border-right-color: #babfc7;\n border-right-color: var(--ag-border-color, #babfc7);\n}\n.ag-theme-alpine .ag-row-selected {\n background-color: rgba(33, 150, 243, 0.3);\n background-color: var(--ag-selected-row-background-color, rgba(33, 150, 243, 0.3));\n}\n.ag-theme-alpine .ag-cell-range-selected:not(.ag-cell-focus),\n.ag-theme-alpine .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing) {\n background-color: rgba(33, 150, 243, 0.2);\n background-color: var(--ag-range-selection-background-color, rgba(33, 150, 243, 0.2));\n}\n.ag-theme-alpine .ag-cell-range-selected:not(.ag-cell-focus).ag-cell-range-chart,\n.ag-theme-alpine .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing).ag-cell-range-chart {\n background-color: rgba(0, 88, 255, 0.1) !important;\n background-color: var(--ag-range-selection-chart-background-color, rgba(0, 88, 255, 0.1)) !important;\n}\n.ag-theme-alpine .ag-cell-range-selected:not(.ag-cell-focus).ag-cell-range-chart.ag-cell-range-chart-category,\n.ag-theme-alpine .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing).ag-cell-range-chart.ag-cell-range-chart-category {\n background-color: rgba(0, 255, 132, 0.1) !important;\n background-color: var(--ag-range-selection-chart-category-background-color, rgba(0, 255, 132, 0.1)) !important;\n}\n.ag-theme-alpine .ag-cell-range-selected-1:not(.ag-cell-focus),\n.ag-theme-alpine .ag-root:not(.ag-context-menu-open) .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-1:not(.ag-cell-inline-editing) {\n background-color: rgba(33, 150, 243, 0.2);\n background-color: var(--ag-range-selection-background-color-1, var(--ag-range-selection-background-color, rgba(33, 150, 243, 0.2)));\n}\n.ag-theme-alpine .ag-cell-range-selected-2:not(.ag-cell-focus),\n.ag-theme-alpine .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-2 {\n background-color: rgba(33, 150, 243, 0.36);\n background-color: var(--ag-range-selection-background-color-2, rgba(33, 150, 243, 0.36));\n}\n.ag-theme-alpine .ag-cell-range-selected-3:not(.ag-cell-focus),\n.ag-theme-alpine .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-3 {\n background-color: rgba(33, 150, 243, 0.488);\n background-color: var(--ag-range-selection-background-color-3, rgba(33, 150, 243, 0.488));\n}\n.ag-theme-alpine .ag-cell-range-selected-4:not(.ag-cell-focus),\n.ag-theme-alpine .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-4 {\n background-color: rgba(33, 150, 243, 0.5904);\n background-color: var(--ag-range-selection-background-color-4, rgba(33, 150, 243, 0.5904));\n}\n.ag-theme-alpine .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-top {\n border-top-color: #2196f3;\n border-top-color: var(--ag-range-selection-border-color, #2196f3);\n}\n.ag-theme-alpine .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-right {\n border-right-color: #2196f3;\n border-right-color: var(--ag-range-selection-border-color, #2196f3);\n}\n.ag-theme-alpine .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-bottom {\n border-bottom-color: #2196f3;\n border-bottom-color: var(--ag-range-selection-border-color, #2196f3);\n}\n.ag-theme-alpine .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-left {\n border-left-color: #2196f3;\n border-left-color: var(--ag-range-selection-border-color, #2196f3);\n}\n.ag-theme-alpine .ag-ltr .ag-has-focus .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-alpine .ag-ltr .ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-alpine .ag-ltr .ag-has-focus .ag-full-width-row.ag-row-focus .ag-cell-wrapper.ag-row-group,\n.ag-theme-alpine .ag-ltr .ag-cell-range-single-cell,\n.ag-theme-alpine .ag-ltr .ag-cell-range-single-cell.ag-cell-range-handle, .ag-theme-alpine .ag-rtl .ag-has-focus .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-alpine .ag-rtl .ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-alpine .ag-rtl .ag-has-focus .ag-full-width-row.ag-row-focus .ag-cell-wrapper.ag-row-group,\n.ag-theme-alpine .ag-rtl .ag-cell-range-single-cell,\n.ag-theme-alpine .ag-rtl .ag-cell-range-single-cell.ag-cell-range-handle {\n border: 1px solid;\n border-color: #2196f3;\n border-color: var(--ag-range-selection-border-color, #2196f3);\n outline: initial;\n}\n.ag-theme-alpine .ag-cell.ag-selection-fill-top,\n.ag-theme-alpine .ag-cell.ag-selection-fill-top.ag-cell-range-selected {\n border-top: 1px dashed;\n border-top-color: #2196f3;\n border-top-color: var(--ag-range-selection-border-color, #2196f3);\n}\n.ag-theme-alpine .ag-ltr .ag-cell.ag-selection-fill-right, .ag-theme-alpine .ag-ltr .ag-cell.ag-selection-fill-right.ag-cell-range-selected {\n border-right: 1px dashed;\n border-right-color: #2196f3;\n border-right-color: var(--ag-range-selection-border-color, #2196f3);\n}\n\n.ag-theme-alpine .ag-rtl .ag-cell.ag-selection-fill-right, .ag-theme-alpine .ag-rtl .ag-cell.ag-selection-fill-right.ag-cell-range-selected {\n border-left: 1px dashed;\n border-left-color: #2196f3;\n border-left-color: var(--ag-range-selection-border-color, #2196f3);\n}\n\n.ag-theme-alpine .ag-cell.ag-selection-fill-bottom,\n.ag-theme-alpine .ag-cell.ag-selection-fill-bottom.ag-cell-range-selected {\n border-bottom: 1px dashed;\n border-bottom-color: #2196f3;\n border-bottom-color: var(--ag-range-selection-border-color, #2196f3);\n}\n.ag-theme-alpine .ag-ltr .ag-cell.ag-selection-fill-left, .ag-theme-alpine .ag-ltr .ag-cell.ag-selection-fill-left.ag-cell-range-selected {\n border-left: 1px dashed;\n border-left-color: #2196f3;\n border-left-color: var(--ag-range-selection-border-color, #2196f3);\n}\n\n.ag-theme-alpine .ag-rtl .ag-cell.ag-selection-fill-left, .ag-theme-alpine .ag-rtl .ag-cell.ag-selection-fill-left.ag-cell-range-selected {\n border-right: 1px dashed;\n border-right-color: #2196f3;\n border-right-color: var(--ag-range-selection-border-color, #2196f3);\n}\n\n.ag-theme-alpine .ag-range-handle, .ag-theme-alpine .ag-fill-handle {\n position: absolute;\n width: 6px;\n height: 6px;\n bottom: -1px;\n background-color: #2196f3;\n background-color: var(--ag-range-selection-border-color, #2196f3);\n}\n.ag-theme-alpine .ag-ltr .ag-range-handle, .ag-theme-alpine .ag-ltr .ag-fill-handle {\n right: -1px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-range-handle, .ag-theme-alpine .ag-rtl .ag-fill-handle {\n left: -1px;\n}\n\n.ag-theme-alpine .ag-fill-handle {\n cursor: cell;\n}\n.ag-theme-alpine .ag-range-handle {\n cursor: nwse-resize;\n}\n.ag-theme-alpine .ag-cell-inline-editing {\n border-color: rgba(33, 150, 243, 0.4) !important;\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4)) !important;\n}\n.ag-theme-alpine .ag-menu {\n border: solid 1px;\n border-color: #babfc7;\n border-color: var(--ag-border-color, #babfc7);\n background: #fff;\n background: var(--ag-background-color, #fff);\n border-radius: 3px;\n -webkit-box-shadow: 0 1px 4px 1px rgba(186, 191, 199, 0.4);\n box-shadow: 0 1px 4px 1px rgba(186, 191, 199, 0.4);\n padding: 6px;\n padding: 0;\n}\n.ag-theme-alpine .ag-menu-list {\n cursor: default;\n padding: 6px 0;\n}\n.ag-theme-alpine .ag-menu-separator {\n height: 13px;\n}\n.ag-theme-alpine .ag-menu-separator-part::after {\n content: \"\";\n display: block;\n border-top: solid 1px;\n border-top-color: #babfc7;\n border-top-color: var(--ag-border-color, #babfc7);\n}\n.ag-theme-alpine .ag-menu-option-active, .ag-theme-alpine .ag-compact-menu-option-active {\n background-color: rgba(33, 150, 243, 0.1);\n background-color: var(--ag-row-hover-color, rgba(33, 150, 243, 0.1));\n}\n.ag-theme-alpine .ag-menu-option-part, .ag-theme-alpine .ag-compact-menu-option-part {\n line-height: 16px;\n padding: 8px 0;\n}\n.ag-theme-alpine .ag-menu-option-disabled, .ag-theme-alpine .ag-compact-menu-option-disabled {\n opacity: 0.5;\n}\n.ag-theme-alpine .ag-menu-option-icon, .ag-theme-alpine .ag-compact-menu-option-icon {\n width: 16px;\n}\n.ag-theme-alpine .ag-ltr .ag-menu-option-icon, .ag-theme-alpine .ag-ltr .ag-compact-menu-option-icon {\n padding-left: 12px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-menu-option-icon, .ag-theme-alpine .ag-rtl .ag-compact-menu-option-icon {\n padding-right: 12px;\n}\n\n.ag-theme-alpine .ag-menu-option-text, .ag-theme-alpine .ag-compact-menu-option-text {\n padding-left: 12px;\n padding-right: 12px;\n}\n.ag-theme-alpine .ag-ltr .ag-menu-option-shortcut, .ag-theme-alpine .ag-ltr .ag-compact-menu-option-shortcut {\n padding-right: 6px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-menu-option-shortcut, .ag-theme-alpine .ag-rtl .ag-compact-menu-option-shortcut {\n padding-left: 6px;\n}\n\n.ag-theme-alpine .ag-menu-option-popup-pointer, .ag-theme-alpine .ag-compact-menu-option-popup-pointer {\n padding-right: 6px;\n}\n.ag-theme-alpine .ag-tabs {\n min-width: 240px;\n}\n.ag-theme-alpine .ag-tabs-header {\n width: 100%;\n display: -webkit-box;\n display: flex;\n}\n.ag-theme-alpine .ag-tab {\n border-bottom: 2px solid transparent;\n display: -webkit-box;\n display: flex;\n -webkit-box-flex: 0;\n flex: none;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n cursor: pointer;\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n -webkit-transition: border-bottom 0.3s;\n transition: border-bottom 0.3s;\n}\n.ag-theme-alpine .ag-keyboard-focus .ag-tab:focus {\n outline: none;\n}\n.ag-theme-alpine .ag-keyboard-focus .ag-tab:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine .ag-tab-selected {\n border-bottom-color: #2196f3;\n border-bottom-color: var(--ag-selected-tab-underline-color, var(--ag-alpine-active-color, #2196f3));\n}\n.ag-theme-alpine .ag-menu-header {\n color: #181d1f;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #181d1f));\n}\n.ag-theme-alpine .ag-filter-separator {\n border-top: solid 1px;\n border-top-color: #babfc7;\n border-top-color: var(--ag-border-color, #babfc7);\n}\n.ag-theme-alpine .ag-menu:not(.ag-tabs) .ag-filter-select {\n min-width: 155px;\n}\n.ag-theme-alpine .ag-tabs .ag-filter-select {\n min-width: 214px;\n}\n.ag-theme-alpine .ag-filter-select .ag-picker-field-wrapper {\n width: 0;\n}\n.ag-theme-alpine .ag-filter-condition-operator {\n height: 17px;\n}\n.ag-theme-alpine .ag-ltr .ag-filter-condition-operator-or {\n margin-left: 12px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-filter-condition-operator-or {\n margin-right: 12px;\n}\n\n.ag-theme-alpine .ag-set-filter-select-all {\n padding-top: 12px;\n}\n.ag-theme-alpine .ag-set-filter-list, .ag-theme-alpine .ag-filter-no-matches {\n height: 144px;\n}\n.ag-theme-alpine .ag-set-filter-filter {\n margin-top: 12px;\n margin-left: 12px;\n margin-right: 12px;\n}\n.ag-theme-alpine .ag-filter-to {\n margin-top: 9px;\n}\n.ag-theme-alpine .ag-mini-filter {\n margin: 12px 12px;\n}\n.ag-theme-alpine .ag-set-filter-item {\n margin: 0px 12px;\n}\n.ag-theme-alpine .ag-ltr .ag-set-filter-item-value {\n margin-left: 12px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-set-filter-item-value {\n margin-right: 12px;\n}\n\n.ag-theme-alpine .ag-filter-apply-panel {\n padding: 12px 12px;\n border-top: solid 1px;\n border-top-color: #dde2eb;\n border-top-color: var(--ag-secondary-border-color, #dde2eb);\n}\n.ag-theme-alpine .ag-filter-apply-panel-button {\n line-height: 1.5;\n}\n.ag-theme-alpine .ag-ltr .ag-filter-apply-panel-button {\n margin-left: 12px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-filter-apply-panel-button {\n margin-right: 12px;\n}\n\n.ag-theme-alpine .ag-simple-filter-body-wrapper {\n padding: 12px 12px;\n padding-bottom: 3px;\n}\n.ag-theme-alpine .ag-simple-filter-body-wrapper > * {\n margin-bottom: 9px;\n}\n.ag-theme-alpine .ag-filter-no-matches {\n padding: 12px 12px;\n}\n.ag-theme-alpine .ag-multi-filter-menu-item {\n margin: 6px 0;\n}\n.ag-theme-alpine .ag-multi-filter-group-title-bar {\n padding: 12px 6px;\n background-color: transparent;\n}\n.ag-theme-alpine .ag-keyboard-focus .ag-multi-filter-group-title-bar:focus {\n outline: none;\n}\n.ag-theme-alpine .ag-keyboard-focus .ag-multi-filter-group-title-bar:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine .ag-side-bar {\n position: relative;\n}\n.ag-theme-alpine .ag-tool-panel-wrapper {\n width: 250px;\n background-color: #f8f8f8;\n background-color: var(--ag-control-panel-background-color, #f8f8f8);\n}\n.ag-theme-alpine .ag-side-buttons {\n padding-top: 24px;\n width: 20px;\n position: relative;\n color: #181d1f;\n color: var(--ag-foreground-color, #181d1f);\n overflow: hidden;\n}\n.ag-theme-alpine button.ag-side-button-button {\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n background: transparent;\n padding: 12px 0 12px 0;\n width: 100%;\n margin: 0;\n min-height: 108px;\n background-position-y: center;\n background-position-x: center;\n background-repeat: no-repeat;\n border: none;\n}\n.ag-theme-alpine button.ag-side-button-button:focus {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.ag-theme-alpine .ag-keyboard-focus .ag-side-button-button:focus {\n outline: none;\n}\n.ag-theme-alpine .ag-keyboard-focus .ag-side-button-button:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine .ag-side-button-icon-wrapper {\n margin-bottom: 3px;\n}\n.ag-theme-alpine .ag-ltr .ag-side-bar-left,\n.ag-theme-alpine .ag-rtl .ag-side-bar-right {\n border-right: solid 1px;\n border-right-color: #babfc7;\n border-right-color: var(--ag-border-color, #babfc7);\n}\n.ag-theme-alpine .ag-ltr .ag-side-bar-left .ag-tool-panel-wrapper,\n.ag-theme-alpine .ag-rtl .ag-side-bar-right .ag-tool-panel-wrapper {\n border-left: solid 1px;\n border-left-color: #babfc7;\n border-left-color: var(--ag-border-color, #babfc7);\n}\n.ag-theme-alpine .ag-ltr .ag-side-bar-left .ag-side-button-button,\n.ag-theme-alpine .ag-rtl .ag-side-bar-right .ag-side-button-button {\n border-right: 2px solid transparent;\n -webkit-transition: border-right 0.3s;\n transition: border-right 0.3s;\n}\n.ag-theme-alpine .ag-ltr .ag-side-bar-left .ag-selected .ag-side-button-button,\n.ag-theme-alpine .ag-rtl .ag-side-bar-right .ag-selected .ag-side-button-button {\n border-right-color: #2196f3;\n border-right-color: var(--ag-selected-tab-underline-color, var(--ag-alpine-active-color, #2196f3));\n}\n.ag-theme-alpine .ag-rtl .ag-side-bar-left,\n.ag-theme-alpine .ag-ltr .ag-side-bar-right {\n border-left: solid 1px;\n border-left-color: #babfc7;\n border-left-color: var(--ag-border-color, #babfc7);\n}\n.ag-theme-alpine .ag-rtl .ag-side-bar-left .ag-tool-panel-wrapper,\n.ag-theme-alpine .ag-ltr .ag-side-bar-right .ag-tool-panel-wrapper {\n border-right: solid 1px;\n border-right-color: #babfc7;\n border-right-color: var(--ag-border-color, #babfc7);\n}\n.ag-theme-alpine .ag-rtl .ag-side-bar-left .ag-side-button-button,\n.ag-theme-alpine .ag-ltr .ag-side-bar-right .ag-side-button-button {\n border-left: 2px solid transparent;\n -webkit-transition: border-left 0.3s;\n transition: border-left 0.3s;\n}\n.ag-theme-alpine .ag-rtl .ag-side-bar-left .ag-selected .ag-side-button-button,\n.ag-theme-alpine .ag-ltr .ag-side-bar-right .ag-selected .ag-side-button-button {\n border-left-color: #2196f3;\n border-left-color: var(--ag-selected-tab-underline-color, var(--ag-alpine-active-color, #2196f3));\n}\n.ag-theme-alpine .ag-filter-toolpanel-header {\n height: 36px;\n}\n.ag-theme-alpine .ag-ltr .ag-filter-toolpanel-header, .ag-theme-alpine .ag-ltr .ag-filter-toolpanel-search {\n padding-left: 6px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-filter-toolpanel-header, .ag-theme-alpine .ag-rtl .ag-filter-toolpanel-search {\n padding-right: 6px;\n}\n\n.ag-theme-alpine .ag-keyboard-focus .ag-filter-toolpanel-header:focus {\n outline: none;\n}\n.ag-theme-alpine .ag-keyboard-focus .ag-filter-toolpanel-header:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n font-family: \"agGridAlpine\";\n font-size: 16px;\n line-height: 16px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n content: \"\\f114\";\n position: absolute;\n}\n.ag-theme-alpine .ag-ltr .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n padding-left: 6px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n padding-right: 6px;\n}\n\n.ag-theme-alpine .ag-filter-toolpanel-group-level-0-header {\n height: 48px;\n}\n.ag-theme-alpine .ag-filter-toolpanel-group-item {\n margin-top: 3px;\n margin-bottom: 3px;\n}\n.ag-theme-alpine .ag-filter-toolpanel-search {\n height: 48px;\n}\n.ag-theme-alpine .ag-filter-toolpanel-search-input {\n -webkit-box-flex: 1;\n flex-grow: 1;\n height: 24px;\n}\n.ag-theme-alpine .ag-ltr .ag-filter-toolpanel-search-input {\n margin-right: 6px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-filter-toolpanel-search-input {\n margin-left: 6px;\n}\n\n.ag-theme-alpine .ag-filter-toolpanel-group-level-0 {\n border-top: solid 1px;\n border-top-color: #dde2eb;\n border-top-color: var(--ag-secondary-border-color, #dde2eb);\n}\n.ag-theme-alpine .ag-ltr .ag-filter-toolpanel-expand, .ag-theme-alpine .ag-ltr .ag-filter-toolpanel-group-title-bar-icon {\n margin-right: 6px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-filter-toolpanel-expand, .ag-theme-alpine .ag-rtl .ag-filter-toolpanel-group-title-bar-icon {\n margin-left: 6px;\n}\n\n.ag-theme-alpine .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-1-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-alpine .ag-ltr .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-2-header {\n padding-left: 22px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-2-header {\n padding-right: 22px;\n}\n\n.ag-theme-alpine .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-2-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-alpine .ag-ltr .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-3-header {\n padding-left: 38px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-3-header {\n padding-right: 38px;\n}\n\n.ag-theme-alpine .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-3-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-alpine .ag-ltr .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-4-header {\n padding-left: 54px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-4-header {\n padding-right: 54px;\n}\n\n.ag-theme-alpine .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-4-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-alpine .ag-ltr .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-5-header {\n padding-left: 70px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-5-header {\n padding-right: 70px;\n}\n\n.ag-theme-alpine .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-5-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-alpine .ag-ltr .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-6-header {\n padding-left: 86px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-6-header {\n padding-right: 86px;\n}\n\n.ag-theme-alpine .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-6-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-alpine .ag-ltr .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-7-header {\n padding-left: 102px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-7-header {\n padding-right: 102px;\n}\n\n.ag-theme-alpine .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-7-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-alpine .ag-ltr .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-8-header {\n padding-left: 118px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-8-header {\n padding-right: 118px;\n}\n\n.ag-theme-alpine .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-8-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-alpine .ag-ltr .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-9-header {\n padding-left: 134px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-9-header {\n padding-right: 134px;\n}\n\n.ag-theme-alpine .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-9-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-alpine .ag-ltr .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-10-header {\n padding-left: 150px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-10-header {\n padding-right: 150px;\n}\n\n.ag-theme-alpine .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-10-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-alpine .ag-ltr .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-11-header {\n padding-left: 166px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-11-header {\n padding-right: 166px;\n}\n\n.ag-theme-alpine .ag-filter-toolpanel-instance-header.ag-filter-toolpanel-group-level-1-header {\n padding-left: 6px;\n}\n.ag-theme-alpine .ag-filter-toolpanel-instance-filter {\n border-top: solid 1px;\n border-top-color: #babfc7;\n border-top-color: var(--ag-border-color, #babfc7);\n border-bottom: solid 1px;\n border-bottom-color: #babfc7;\n border-bottom-color: var(--ag-border-color, #babfc7);\n margin-top: 6px;\n}\n.ag-theme-alpine .ag-ltr .ag-filter-toolpanel-instance-header-icon {\n margin-left: 6px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-filter-toolpanel-instance-header-icon {\n margin-right: 6px;\n}\n\n.ag-theme-alpine .ag-pivot-mode-panel {\n min-height: 48px;\n height: 48px;\n display: -webkit-box;\n display: flex;\n}\n.ag-theme-alpine .ag-pivot-mode-select {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-alpine .ag-ltr .ag-pivot-mode-select {\n margin-left: 12px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-pivot-mode-select {\n margin-right: 12px;\n}\n\n.ag-theme-alpine .ag-keyboard-focus .ag-column-select-header:focus {\n outline: none;\n}\n.ag-theme-alpine .ag-keyboard-focus .ag-column-select-header:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine .ag-column-select-header {\n height: 48px;\n -webkit-box-align: center;\n align-items: center;\n padding: 0 12px;\n border-bottom: solid 1px;\n border-bottom-color: #dde2eb;\n border-bottom-color: var(--ag-secondary-border-color, #dde2eb);\n}\n.ag-theme-alpine .ag-column-panel-column-select {\n border-bottom: solid 1px;\n border-bottom-color: #dde2eb;\n border-bottom-color: var(--ag-secondary-border-color, #dde2eb);\n border-top: solid 1px;\n border-top-color: #dde2eb;\n border-top-color: var(--ag-secondary-border-color, #dde2eb);\n}\n.ag-theme-alpine .ag-column-group-icons,\n.ag-theme-alpine .ag-column-select-header-icon {\n color: #181d1f;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #181d1f));\n}\n.ag-theme-alpine .ag-column-select-list .ag-list-item-hovered::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n height: 1px;\n background-color: #2196f3;\n background-color: var(--ag-range-selection-border-color, #2196f3);\n}\n.ag-theme-alpine .ag-column-select-list .ag-item-highlight-top::after {\n top: 0;\n}\n.ag-theme-alpine .ag-column-select-list .ag-item-highlight-bottom::after {\n bottom: 0;\n}\n.ag-theme-alpine .ag-header {\n background-color: #f8f8f8;\n background-color: var(--ag-header-background-color, #f8f8f8);\n border-bottom: solid 1px;\n border-bottom-color: #babfc7;\n border-bottom-color: var(--ag-border-color, #babfc7);\n}\n.ag-theme-alpine .ag-header-row {\n color: #181d1f;\n color: var(--ag-header-foreground-color, var(--ag-secondary-foreground-color, var(--ag-foreground-color, #181d1f)));\n height: 48px;\n}\n.ag-theme-alpine .ag-pinned-right-header {\n border-left: solid 1px;\n border-left-color: #babfc7;\n border-left-color: var(--ag-border-color, #babfc7);\n}\n.ag-theme-alpine .ag-pinned-left-header {\n border-right: solid 1px;\n border-right-color: #babfc7;\n border-right-color: var(--ag-border-color, #babfc7);\n}\n.ag-theme-alpine .ag-ltr .ag-header-cell:not(.ag-right-aligned-header) .ag-header-label-icon {\n margin-left: 6px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-header-cell:not(.ag-right-aligned-header) .ag-header-label-icon {\n margin-right: 6px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-header-cell.ag-right-aligned-header .ag-header-label-icon {\n margin-right: 6px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-header-cell.ag-right-aligned-header .ag-header-label-icon {\n margin-left: 6px;\n}\n\n.ag-theme-alpine .ag-header-cell,\n.ag-theme-alpine .ag-header-group-cell {\n padding-left: 18px;\n padding-right: 18px;\n}\n.ag-theme-alpine .ag-header-cell.ag-header-cell-moving,\n.ag-theme-alpine .ag-header-group-cell.ag-header-cell-moving {\n background-color: #fff;\n background-color: var(--ag-header-cell-moving-background-color, var(--ag-background-color, #fff));\n}\n.ag-theme-alpine .ag-keyboard-focus .ag-header-cell:focus {\n outline: none;\n}\n.ag-theme-alpine .ag-keyboard-focus .ag-header-cell:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine .ag-keyboard-focus .ag-header-group-cell:focus {\n outline: none;\n}\n.ag-theme-alpine .ag-keyboard-focus .ag-header-group-cell:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine .ag-header-icon {\n color: #181d1f;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #181d1f));\n}\n.ag-theme-alpine .ag-header-expand-icon {\n cursor: pointer;\n}\n.ag-theme-alpine .ag-ltr .ag-header-expand-icon {\n padding-left: 4px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-header-expand-icon {\n padding-right: 4px;\n}\n\n.ag-theme-alpine .ag-header-row:not(:first-child) .ag-header-cell,\n.ag-theme-alpine .ag-header-row:not(:first-child) .ag-header-group-cell.ag-header-group-cell-with-group {\n border-top: solid 1px;\n border-top-color: #babfc7;\n border-top-color: var(--ag-border-color, #babfc7);\n}\n.ag-theme-alpine .ag-header-cell-resize {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-alpine .ag-header-cell-resize::after {\n content: \"\";\n position: absolute;\n z-index: 1;\n display: block;\n left: calc(50% - 1px);\n width: 2px;\n height: 30%;\n top: calc(50% - 15%);\n background-color: rgba(186, 191, 199, 0.5);\n background-color: var(--ag-header-column-resize-handle-color, rgba(186, 191, 199, 0.5));\n}\n.ag-theme-alpine .ag-pinned-right-header .ag-header-cell-resize::after {\n left: calc(50% - 2px);\n}\n.ag-theme-alpine .ag-ltr .ag-header-select-all {\n margin-right: 18px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-header-select-all {\n margin-left: 18px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-floating-filter-button {\n margin-left: 18px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-floating-filter-button {\n margin-right: 18px;\n}\n\n.ag-theme-alpine .ag-floating-filter-button-button {\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background: transparent;\n border: none;\n height: 16px;\n padding: 0;\n width: 16px;\n}\n.ag-theme-alpine .ag-filter-loading {\n background-color: #f8f8f8;\n background-color: var(--ag-control-panel-background-color, #f8f8f8);\n height: 100%;\n padding: 12px 12px;\n position: absolute;\n width: 100%;\n z-index: 1;\n}\n.ag-theme-alpine .ag-paging-panel {\n border-top: 1px solid;\n border-top-color: #babfc7;\n border-top-color: var(--ag-border-color, #babfc7);\n color: #181d1f;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #181d1f));\n height: 48px;\n}\n.ag-theme-alpine .ag-paging-panel > * {\n margin: 0 18px;\n}\n.ag-theme-alpine .ag-paging-button {\n cursor: pointer;\n}\n.ag-theme-alpine .ag-paging-button.ag-disabled {\n cursor: default;\n color: rgba(24, 29, 31, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(24, 29, 31, 0.5));\n}\n.ag-theme-alpine .ag-keyboard-focus .ag-paging-button:focus {\n outline: none;\n}\n.ag-theme-alpine .ag-keyboard-focus .ag-paging-button:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 0px;\n left: 0px;\n display: block;\n width: calc(100% - 0px);\n height: calc(100% - 0px);\n border: 1px solid;\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine .ag-paging-button, .ag-theme-alpine .ag-paging-description {\n margin: 0 6px;\n}\n.ag-theme-alpine .ag-status-bar {\n border-top: solid 1px;\n border-top-color: #babfc7;\n border-top-color: var(--ag-border-color, #babfc7);\n color: rgba(24, 29, 31, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(24, 29, 31, 0.5));\n padding-right: 24px;\n padding-left: 24px;\n line-height: 1.5;\n}\n.ag-theme-alpine .ag-status-name-value-value {\n color: #181d1f;\n color: var(--ag-foreground-color, #181d1f);\n}\n.ag-theme-alpine .ag-status-bar-center {\n text-align: center;\n}\n.ag-theme-alpine .ag-status-name-value {\n margin-left: 6px;\n margin-right: 6px;\n padding-top: 12px;\n padding-bottom: 12px;\n}\n.ag-theme-alpine .ag-column-drop-cell {\n background: rgba(24, 29, 31, 0.07);\n background: var(--ag-chip-background-color, rgba(24, 29, 31, 0.07));\n border-radius: 24px;\n height: 24px;\n padding: 0 3px;\n border: 1px solid transparent;\n}\n.ag-theme-alpine .ag-keyboard-focus .ag-column-drop-cell:focus {\n outline: none;\n}\n.ag-theme-alpine .ag-keyboard-focus .ag-column-drop-cell:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 2px;\n left: 2px;\n display: block;\n width: calc(100% - 4px);\n height: calc(100% - 4px);\n border: 1px solid;\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine .ag-column-drop-cell-text {\n margin: 0 6px;\n}\n.ag-theme-alpine .ag-column-drop-cell-button {\n min-width: 24px;\n margin: 0 3px;\n color: #181d1f;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #181d1f));\n}\n.ag-theme-alpine .ag-column-drop-cell-drag-handle {\n margin-left: 12px;\n}\n.ag-theme-alpine .ag-column-drop-cell-ghost {\n opacity: 0.5;\n}\n.ag-theme-alpine .ag-column-drop-horizontal {\n background-color: #f8f8f8;\n background-color: var(--ag-control-panel-background-color, #f8f8f8);\n color: #181d1f;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #181d1f));\n height: 42px;\n border-bottom: solid 1px;\n border-bottom-color: #babfc7;\n border-bottom-color: var(--ag-border-color, #babfc7);\n}\n.ag-theme-alpine .ag-ltr .ag-column-drop-horizontal {\n padding-left: 18px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-column-drop-horizontal {\n padding-right: 18px;\n}\n\n.ag-theme-alpine .ag-ltr .ag-column-drop-horizontal-half-width:not(:last-child) {\n border-right: solid 1px;\n border-right-color: #babfc7;\n border-right-color: var(--ag-border-color, #babfc7);\n}\n\n.ag-theme-alpine .ag-rtl .ag-column-drop-horizontal-half-width:not(:last-child) {\n border-left: solid 1px;\n border-left-color: #babfc7;\n border-left-color: var(--ag-border-color, #babfc7);\n}\n\n.ag-theme-alpine .ag-column-drop-horizontal-cell-separator {\n margin: 0 6px;\n color: #181d1f;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #181d1f));\n}\n.ag-theme-alpine .ag-column-drop-horizontal-empty-message {\n color: rgba(24, 29, 31, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(24, 29, 31, 0.5));\n}\n.ag-theme-alpine .ag-ltr .ag-column-drop-horizontal-icon {\n margin-right: 18px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-column-drop-horizontal-icon {\n margin-left: 18px;\n}\n\n.ag-theme-alpine .ag-column-drop-vertical-list {\n padding-bottom: 6px;\n padding-right: 6px;\n padding-left: 6px;\n}\n.ag-theme-alpine .ag-column-drop-vertical-cell {\n margin-top: 6px;\n}\n.ag-theme-alpine .ag-column-drop-vertical {\n min-height: 50px;\n border-bottom: solid 1px;\n border-bottom-color: #dde2eb;\n border-bottom-color: var(--ag-secondary-border-color, #dde2eb);\n}\n.ag-theme-alpine .ag-column-drop-vertical.ag-last-column-drop {\n border-bottom: none;\n}\n.ag-theme-alpine .ag-column-drop-vertical-icon {\n margin-left: 6px;\n margin-right: 6px;\n}\n.ag-theme-alpine .ag-column-drop-vertical-empty-message {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n overflow: hidden;\n color: rgba(24, 29, 31, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(24, 29, 31, 0.5));\n margin-top: 6px;\n}\n.ag-theme-alpine .ag-select-agg-func-popup {\n border: solid 1px;\n border-color: #babfc7;\n border-color: var(--ag-border-color, #babfc7);\n background: #fff;\n background: var(--ag-background-color, #fff);\n border-radius: 3px;\n -webkit-box-shadow: 0 1px 4px 1px rgba(186, 191, 199, 0.4);\n box-shadow: 0 1px 4px 1px rgba(186, 191, 199, 0.4);\n padding: 6px;\n background: #fff;\n background: var(--ag-background-color, #fff);\n height: 105px;\n padding: 0;\n}\n.ag-theme-alpine .ag-select-agg-func-virtual-list-item {\n cursor: default;\n padding-left: 12px;\n}\n.ag-theme-alpine .ag-select-agg-func-virtual-list-item:hover {\n background-color: rgba(33, 150, 243, 0.3);\n background-color: var(--ag-selected-row-background-color, rgba(33, 150, 243, 0.3));\n}\n.ag-theme-alpine .ag-keyboard-focus .ag-select-agg-func-virtual-list-item:focus {\n outline: none;\n}\n.ag-theme-alpine .ag-keyboard-focus .ag-select-agg-func-virtual-list-item:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 1px;\n left: 1px;\n display: block;\n width: calc(100% - 2px);\n height: calc(100% - 2px);\n border: 1px solid;\n border-color: rgba(33, 150, 243, 0.4);\n border-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine .ag-chart-menu {\n border-radius: 3px;\n background: #fff;\n background: var(--ag-background-color, #fff);\n}\n.ag-theme-alpine .ag-chart-menu-icon {\n opacity: 0.5;\n line-height: 24px;\n font-size: 24px;\n width: 24px;\n height: 24px;\n margin: 2px 0;\n cursor: pointer;\n border-radius: 3px;\n color: #181d1f;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #181d1f));\n}\n.ag-theme-alpine .ag-chart-menu-icon:hover {\n opacity: 1;\n}\n.ag-theme-alpine .ag-chart-mini-thumbnail {\n border: 1px solid;\n border-color: #dde2eb;\n border-color: var(--ag-secondary-border-color, #dde2eb);\n border-radius: 5px;\n margin: 5px;\n}\n.ag-theme-alpine .ag-chart-mini-thumbnail:nth-last-child(3), .ag-theme-alpine .ag-chart-mini-thumbnail:nth-last-child(3) ~ .ag-chart-mini-thumbnail {\n margin-left: auto;\n margin-right: auto;\n}\n.ag-theme-alpine .ag-ltr .ag-chart-mini-thumbnail:first-child {\n margin-left: 0;\n}\n\n.ag-theme-alpine .ag-rtl .ag-chart-mini-thumbnail:first-child {\n margin-right: 0;\n}\n\n.ag-theme-alpine .ag-ltr .ag-chart-mini-thumbnail:last-child {\n margin-right: 0;\n}\n\n.ag-theme-alpine .ag-rtl .ag-chart-mini-thumbnail:last-child {\n margin-left: 0;\n}\n\n.ag-theme-alpine .ag-chart-mini-thumbnail.ag-selected {\n border-color: #2196f3;\n border-color: var(--ag-minichart-selected-chart-color, var(--ag-checkbox-checked-color, var(--ag-alpine-active-color, #2196f3)));\n}\n.ag-theme-alpine .ag-chart-settings-card-item {\n background: #181d1f;\n background: var(--ag-foreground-color, #181d1f);\n width: 8px;\n height: 8px;\n border-radius: 4px;\n}\n.ag-theme-alpine .ag-chart-settings-card-item.ag-selected {\n background-color: #2196f3;\n background-color: var(--ag-minichart-selected-page-color, var(--ag-checkbox-checked-color, var(--ag-alpine-active-color, #2196f3)));\n}\n.ag-theme-alpine .ag-chart-data-column-drag-handle {\n margin-left: 6px;\n}\n.ag-theme-alpine .ag-charts-settings-group-title-bar,\n.ag-theme-alpine .ag-charts-data-group-title-bar,\n.ag-theme-alpine .ag-charts-format-top-level-group-title-bar {\n border-top: solid 1px;\n border-top-color: #dde2eb;\n border-top-color: var(--ag-secondary-border-color, #dde2eb);\n}\n.ag-theme-alpine .ag-charts-settings-group-container {\n padding: 6px;\n}\n.ag-theme-alpine .ag-charts-data-group-container {\n padding: 6px 12px;\n}\n.ag-theme-alpine .ag-charts-data-group-container .ag-charts-data-group-item:not(.ag-charts-format-sub-level-group) {\n height: 24px;\n}\n.ag-theme-alpine .ag-charts-data-group-container .ag-list-item-hovered::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n height: 1px;\n background-color: #2196f3;\n background-color: var(--ag-range-selection-border-color, #2196f3);\n}\n.ag-theme-alpine .ag-charts-data-group-container .ag-item-highlight-top::after {\n top: 0;\n}\n.ag-theme-alpine .ag-charts-data-group-container .ag-item-highlight-bottom::after {\n bottom: 0;\n}\n.ag-theme-alpine .ag-charts-format-top-level-group-container {\n margin-left: 12px;\n padding: 6px;\n}\n.ag-theme-alpine .ag-charts-format-top-level-group-item {\n margin: 6px 0;\n}\n.ag-theme-alpine .ag-charts-format-sub-level-group-container {\n padding: 12px 12px;\n padding-bottom: 3px;\n}\n.ag-theme-alpine .ag-charts-format-sub-level-group-container > * {\n margin-bottom: 9px;\n}\n.ag-theme-alpine .ag-charts-group-container.ag-group-container-horizontal {\n padding: 6px;\n}\n.ag-theme-alpine .ag-chart-data-section,\n.ag-theme-alpine .ag-chart-format-section {\n display: -webkit-box;\n display: flex;\n margin: 0;\n}\n.ag-theme-alpine .ag-chart-menu-panel {\n background-color: #f8f8f8;\n background-color: var(--ag-control-panel-background-color, #f8f8f8);\n}\n.ag-theme-alpine .ag-ltr .ag-chart-menu-panel {\n border-left: solid 1px;\n border-left-color: #babfc7;\n border-left-color: var(--ag-border-color, #babfc7);\n}\n\n.ag-theme-alpine .ag-rtl .ag-chart-menu-panel {\n border-right: solid 1px;\n border-right-color: #babfc7;\n border-right-color: var(--ag-border-color, #babfc7);\n}\n\n.ag-theme-alpine .ag-date-time-list-page-title {\n -webkit-box-flex: 1;\n flex-grow: 1;\n text-align: center;\n}\n.ag-theme-alpine .ag-date-time-list-page-column-label {\n text-align: center;\n}\n.ag-theme-alpine .ag-date-time-list-page-entry {\n text-align: center;\n}\n.ag-theme-alpine .ag-checkbox-input-wrapper {\n font-family: \"agGridAlpine\";\n font-size: 16px;\n line-height: 16px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 16px;\n height: 16px;\n background-color: #fff;\n background-color: var(--ag-checkbox-background-color, var(--ag-background-color, #fff));\n border-radius: 3px;\n display: inline-block;\n vertical-align: middle;\n -webkit-box-flex: 0;\n flex: none;\n}\n.ag-theme-alpine .ag-checkbox-input-wrapper input, .ag-theme-alpine .ag-checkbox-input-wrapper input {\n -webkit-appearance: none;\n opacity: 0;\n width: 100%;\n height: 100%;\n}\n.ag-theme-alpine .ag-checkbox-input-wrapper:focus-within, .ag-theme-alpine .ag-checkbox-input-wrapper:active {\n outline: none;\n -webkit-box-shadow: 0 0 2px 0.1rem rgba(33, 150, 243, 0.4);\n box-shadow: 0 0 2px 0.1rem rgba(33, 150, 243, 0.4);\n}\n.ag-theme-alpine .ag-checkbox-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-alpine .ag-checkbox-input-wrapper::after {\n content: \"\\f108\";\n color: #999;\n color: var(--ag-checkbox-unchecked-color, #999);\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-alpine .ag-checkbox-input-wrapper.ag-checked::after {\n content: \"\\f106\";\n color: #2196f3;\n color: var(--ag-checkbox-checked-color, var(--ag-alpine-active-color, #2196f3));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-alpine .ag-checkbox-input-wrapper.ag-indeterminate::after {\n content: \"\\f107\";\n color: #999;\n color: var(--ag-checkbox-indeterminate-color, var(--ag-checkbox-unchecked-color, #999));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-alpine .ag-toggle-button-input-wrapper {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n width: 28px;\n height: 18px;\n background-color: #999;\n background-color: var(--ag-toggle-button-off-background-color, var(--ag-checkbox-unchecked-color, #999));\n border-radius: 9px;\n position: relative;\n -webkit-box-flex: 0;\n flex: none;\n border: 1px solid;\n border-color: #999;\n border-color: var(--ag-toggle-button-off-border-color, var(--ag-checkbox-unchecked-color, #999));\n}\n.ag-theme-alpine .ag-toggle-button-input-wrapper input {\n opacity: 0;\n height: 100%;\n width: 100%;\n}\n.ag-theme-alpine .ag-toggle-button-input-wrapper:focus-within {\n outline: none;\n -webkit-box-shadow: 0 0 2px 0.1rem rgba(33, 150, 243, 0.4);\n box-shadow: 0 0 2px 0.1rem rgba(33, 150, 243, 0.4);\n}\n.ag-theme-alpine .ag-toggle-button-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-alpine .ag-toggle-button-input-wrapper.ag-checked {\n background-color: #2196f3;\n background-color: var(--ag-toggle-button-on-background-color, var(--ag-checkbox-checked-color, var(--ag-alpine-active-color, #2196f3)));\n border-color: #2196f3;\n border-color: var(--ag-toggle-button-on-border-color, var(--ag-checkbox-checked-color, var(--ag-alpine-active-color, #2196f3)));\n}\n.ag-theme-alpine .ag-toggle-button-input-wrapper::before {\n content: \" \";\n position: absolute;\n top: -1px;\n left: -1px;\n display: block;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n height: 18px;\n width: 18px;\n background-color: #fff;\n background-color: var(--ag-toggle-button-switch-background-color, var(--ag-background-color, #fff));\n border-radius: 9px;\n -webkit-transition: left 100ms;\n transition: left 100ms;\n border: 1px solid;\n border-color: #999;\n border-color: var(--ag-toggle-button-switch-border-color, var(--ag-toggle-button-off-border-color, var(--ag-checkbox-unchecked-color, #999)));\n}\n.ag-theme-alpine .ag-toggle-button-input-wrapper.ag-checked::before {\n left: calc(100% - 18px );\n border-color: #2196f3;\n border-color: var(--ag-toggle-button-on-border-color, var(--ag-checkbox-checked-color, var(--ag-alpine-active-color, #2196f3)));\n}\n.ag-theme-alpine .ag-radio-button-input-wrapper {\n font-family: \"agGridAlpine\";\n font-size: 16px;\n line-height: 16px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 16px;\n height: 16px;\n background-color: #fff;\n background-color: var(--ag-checkbox-background-color, var(--ag-background-color, #fff));\n border-radius: 3px;\n display: inline-block;\n vertical-align: middle;\n -webkit-box-flex: 0;\n flex: none;\n border-radius: 16px;\n}\n.ag-theme-alpine .ag-radio-button-input-wrapper input, .ag-theme-alpine .ag-radio-button-input-wrapper input {\n -webkit-appearance: none;\n opacity: 0;\n width: 100%;\n height: 100%;\n}\n.ag-theme-alpine .ag-radio-button-input-wrapper:focus-within, .ag-theme-alpine .ag-radio-button-input-wrapper:active {\n outline: none;\n -webkit-box-shadow: 0 0 2px 0.1rem rgba(33, 150, 243, 0.4);\n box-shadow: 0 0 2px 0.1rem rgba(33, 150, 243, 0.4);\n}\n.ag-theme-alpine .ag-radio-button-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-alpine .ag-radio-button-input-wrapper::after {\n content: \"\\f126\";\n color: #999;\n color: var(--ag-checkbox-unchecked-color, #999);\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-alpine .ag-radio-button-input-wrapper.ag-checked::after {\n content: \"\\f127\";\n color: #2196f3;\n color: var(--ag-checkbox-checked-color, var(--ag-alpine-active-color, #2196f3));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-alpine input[class^=ag-][type=range] {\n -webkit-appearance: none;\n width: 100%;\n height: 100%;\n background: none;\n overflow: visible;\n}\n.ag-theme-alpine input[class^=ag-][type=range]::-webkit-slider-runnable-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: #babfc7;\n background-color: var(--ag-border-color, #babfc7);\n border-radius: 3px;\n border-radius: 3px;\n}\n.ag-theme-alpine input[class^=ag-][type=range]::-moz-range-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: #babfc7;\n background-color: var(--ag-border-color, #babfc7);\n border-radius: 3px;\n border-radius: 3px;\n}\n.ag-theme-alpine input[class^=ag-][type=range]::-ms-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: #babfc7;\n background-color: var(--ag-border-color, #babfc7);\n border-radius: 3px;\n border-radius: 3px;\n color: transparent;\n width: calc(100% - 2px);\n}\n.ag-theme-alpine input[class^=ag-][type=range]::-webkit-slider-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: 16px;\n height: 16px;\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n border: 1px solid;\n border-color: #999;\n border-color: var(--ag-checkbox-unchecked-color, #999);\n border-radius: 16px;\n -webkit-transform: translateY(-6.5px);\n transform: translateY(-6.5px);\n}\n.ag-theme-alpine input[class^=ag-][type=range]::-ms-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: 16px;\n height: 16px;\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n border: 1px solid;\n border-color: #999;\n border-color: var(--ag-checkbox-unchecked-color, #999);\n border-radius: 16px;\n}\n.ag-theme-alpine input[class^=ag-][type=range]::-moz-ag-range-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: 16px;\n height: 16px;\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n border: 1px solid;\n border-color: #999;\n border-color: var(--ag-checkbox-unchecked-color, #999);\n border-radius: 16px;\n}\n.ag-theme-alpine input[class^=ag-][type=range]:focus {\n outline: none;\n}\n.ag-theme-alpine input[class^=ag-][type=range]:focus::-webkit-slider-thumb {\n -webkit-box-shadow: 0 0 2px 0.1rem rgba(33, 150, 243, 0.4);\n box-shadow: 0 0 2px 0.1rem rgba(33, 150, 243, 0.4);\n border-color: #2196f3;\n border-color: var(--ag-checkbox-checked-color, var(--ag-alpine-active-color, #2196f3));\n}\n.ag-theme-alpine input[class^=ag-][type=range]:focus::-ms-thumb {\n box-shadow: 0 0 2px 0.1rem rgba(33, 150, 243, 0.4);\n border-color: #2196f3;\n border-color: var(--ag-checkbox-checked-color, var(--ag-alpine-active-color, #2196f3));\n}\n.ag-theme-alpine input[class^=ag-][type=range]:focus::-moz-ag-range-thumb {\n box-shadow: 0 0 2px 0.1rem rgba(33, 150, 243, 0.4);\n border-color: #2196f3;\n border-color: var(--ag-checkbox-checked-color, var(--ag-alpine-active-color, #2196f3));\n}\n.ag-theme-alpine input[class^=ag-][type=range]:active::-webkit-slider-runnable-track {\n background-color: rgba(33, 150, 243, 0.4);\n background-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine input[class^=ag-][type=range]:active::-moz-ag-range-track {\n background-color: rgba(33, 150, 243, 0.4);\n background-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine input[class^=ag-][type=range]:active::-ms-track {\n background-color: rgba(33, 150, 243, 0.4);\n background-color: var(--ag-input-focus-border-color, rgba(33, 150, 243, 0.4));\n}\n.ag-theme-alpine input[class^=ag-][type=range]:disabled {\n opacity: 0.5;\n}\n.ag-theme-alpine .ag-filter-toolpanel-header,\n.ag-theme-alpine .ag-filter-toolpanel-search,\n.ag-theme-alpine .ag-status-bar,\n.ag-theme-alpine .ag-header-row,\n.ag-theme-alpine .ag-panel-title-bar-title,\n.ag-theme-alpine .ag-multi-filter-group-title-bar {\n font-weight: 700;\n color: #181d1f;\n color: var(--ag-header-foreground-color, var(--ag-secondary-foreground-color, var(--ag-foreground-color, #181d1f)));\n}\n.ag-theme-alpine .ag-rtl .ag-pinned-left-header .ag-header-row::before, .ag-theme-alpine .ag-ltr .ag-pinned-right-header .ag-header-row::after {\n content: \"\";\n position: absolute;\n height: calc(100% - 20px);\n top: 10px;\n width: 1px;\n background-color: #babfc7;\n background-color: var(--ag-border-color, #babfc7);\n}\n.ag-theme-alpine .ag-ltr .ag-pinned-right-header .ag-header-row::after {\n right: 0;\n}\n.ag-theme-alpine .ag-rtl .ag-pinned-left-header .ag-header-row::before {\n left: 0;\n}\n.ag-theme-alpine .ag-row {\n font-size: 14px;\n}\n.ag-theme-alpine input[class^=ag-]:not([type]),\n.ag-theme-alpine input[class^=ag-][type=text],\n.ag-theme-alpine input[class^=ag-][type=number],\n.ag-theme-alpine input[class^=ag-][type=tel],\n.ag-theme-alpine input[class^=ag-][type=date],\n.ag-theme-alpine input[class^=ag-][type=datetime-local],\n.ag-theme-alpine textarea[class^=ag-] {\n min-height: 24px;\n border-radius: 3px;\n}\n.ag-theme-alpine .ag-ltr input[class^=ag-]:not([type]),\n.ag-theme-alpine .ag-ltr input[class^=ag-][type=text],\n.ag-theme-alpine .ag-ltr input[class^=ag-][type=number],\n.ag-theme-alpine .ag-ltr input[class^=ag-][type=tel],\n.ag-theme-alpine .ag-ltr input[class^=ag-][type=date],\n.ag-theme-alpine .ag-ltr input[class^=ag-][type=datetime-local],\n.ag-theme-alpine .ag-ltr textarea[class^=ag-] {\n padding-left: 6px;\n}\n\n.ag-theme-alpine .ag-rtl input[class^=ag-]:not([type]),\n.ag-theme-alpine .ag-rtl input[class^=ag-][type=text],\n.ag-theme-alpine .ag-rtl input[class^=ag-][type=number],\n.ag-theme-alpine .ag-rtl input[class^=ag-][type=tel],\n.ag-theme-alpine .ag-rtl input[class^=ag-][type=date],\n.ag-theme-alpine .ag-rtl input[class^=ag-][type=datetime-local],\n.ag-theme-alpine .ag-rtl textarea[class^=ag-] {\n padding-right: 6px;\n}\n\n.ag-theme-alpine .ag-tab {\n padding: 9px;\n -webkit-transition: color 0.4s;\n transition: color 0.4s;\n}\n.ag-theme-alpine .ag-tab-selected {\n color: #2196f3;\n color: var(--ag-alpine-active-color, #2196f3);\n}\n.ag-theme-alpine .ag-menu {\n background-color: #f8f8f8;\n background-color: var(--ag-control-panel-background-color, #f8f8f8);\n}\n.ag-theme-alpine .ag-menu-header {\n background-color: #f8f8f8;\n background-color: var(--ag-control-panel-background-color, #f8f8f8);\n padding-top: 1px;\n}\n.ag-theme-alpine .ag-tabs-header {\n border-bottom: solid 1px;\n border-bottom-color: #babfc7;\n border-bottom-color: var(--ag-border-color, #babfc7);\n}\n.ag-theme-alpine .ag-charts-settings-group-title-bar,\n.ag-theme-alpine .ag-charts-data-group-title-bar,\n.ag-theme-alpine .ag-charts-format-top-level-group-title-bar {\n padding: 6px 12px;\n line-height: 20px;\n}\n.ag-theme-alpine .ag-chart-mini-thumbnail {\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n}\n.ag-theme-alpine .ag-chart-settings-nav-bar {\n border-top: solid 1px;\n border-top-color: #dde2eb;\n border-top-color: var(--ag-secondary-border-color, #dde2eb);\n}\n.ag-theme-alpine .ag-ltr .ag-group-title-bar-icon {\n margin-right: 6px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-group-title-bar-icon {\n margin-left: 6px;\n}\n\n.ag-theme-alpine .ag-charts-format-top-level-group-toolbar {\n margin-top: 6px;\n}\n.ag-theme-alpine .ag-ltr .ag-charts-format-top-level-group-toolbar {\n padding-left: 20px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-charts-format-top-level-group-toolbar {\n padding-right: 20px;\n}\n\n.ag-theme-alpine .ag-charts-format-sub-level-group {\n border-left: dashed 1px;\n border-left-color: #babfc7;\n border-left-color: var(--ag-border-color, #babfc7);\n padding-left: 6px;\n margin-bottom: 12px;\n}\n.ag-theme-alpine .ag-charts-format-sub-level-group-title-bar {\n padding-top: 0;\n padding-bottom: 0;\n background: none;\n font-weight: 700;\n}\n.ag-theme-alpine .ag-charts-format-sub-level-group-container {\n padding-bottom: 0;\n}\n.ag-theme-alpine .ag-charts-format-sub-level-group-item:last-child {\n margin-bottom: 0;\n}\n.ag-theme-alpine .ag-dnd-ghost {\n font-size: 12px;\n font-weight: 700;\n}\n.ag-theme-alpine .ag-side-buttons {\n width: 30px;\n}\n.ag-theme-alpine .ag-standard-button {\n -moz-appearance: none;\n appearance: none;\n -webkit-appearance: none;\n border-radius: 3px;\n border: 1px solid;\n border-color: #2196f3;\n border-color: var(--ag-alpine-active-color, #2196f3);\n color: #2196f3;\n color: var(--ag-alpine-active-color, #2196f3);\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n font-weight: 600;\n padding: 6px 12px;\n}\n.ag-theme-alpine .ag-standard-button:hover {\n border-color: #2196f3;\n border-color: var(--ag-alpine-active-color, #2196f3);\n background-color: rgba(33, 150, 243, 0.1);\n background-color: var(--ag-row-hover-color, rgba(33, 150, 243, 0.1));\n}\n.ag-theme-alpine .ag-standard-button:active {\n border-color: #2196f3;\n border-color: var(--ag-alpine-active-color, #2196f3);\n background-color: #2196f3;\n background-color: var(--ag-alpine-active-color, #2196f3);\n color: #fff;\n color: var(--ag-background-color, #fff);\n}\n.ag-theme-alpine .ag-standard-button:disabled {\n color: rgba(24, 29, 31, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(24, 29, 31, 0.5));\n background-color: #f1f2f4;\n background-color: var(--ag-input-disabled-background-color, #f1f2f4);\n border-color: rgba(186, 191, 199, 0.3);\n border-color: var(--ag-input-disabled-border-color, rgba(186, 191, 199, 0.3));\n}\n.ag-theme-alpine .ag-column-drop-vertical {\n min-height: 75px;\n}\n.ag-theme-alpine .ag-column-drop-vertical-title-bar {\n padding: 12px;\n padding-bottom: 0px;\n}\n.ag-theme-alpine .ag-column-drop-vertical-empty-message {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n border: dashed 1px;\n border-color: #babfc7;\n border-color: var(--ag-border-color, #babfc7);\n margin: 12px;\n padding: 12px;\n}\n.ag-theme-alpine .ag-column-drop-empty-message {\n color: #181d1f;\n color: var(--ag-foreground-color, #181d1f);\n opacity: 0.75;\n}\n.ag-theme-alpine .ag-status-bar {\n font-weight: normal;\n}\n.ag-theme-alpine .ag-status-name-value-value {\n font-weight: 700;\n}\n.ag-theme-alpine .ag-paging-number, .ag-theme-alpine .ag-paging-row-summary-panel-number {\n font-weight: 700;\n}\n.ag-theme-alpine .ag-column-drop-cell-button {\n opacity: 0.5;\n}\n.ag-theme-alpine .ag-column-drop-cell-button:hover {\n opacity: 0.75;\n}\n.ag-theme-alpine .ag-header-cell-menu-button:hover,\n.ag-theme-alpine .ag-side-button-button:hover,\n.ag-theme-alpine .ag-tab:hover,\n.ag-theme-alpine .ag-panel-title-bar-button:hover,\n.ag-theme-alpine .ag-header-expand-icon:hover,\n.ag-theme-alpine .ag-column-group-icons:hover,\n.ag-theme-alpine .ag-group-expanded .ag-icon:hover,\n.ag-theme-alpine .ag-group-contracted .ag-icon:hover,\n.ag-theme-alpine .ag-chart-settings-prev:hover,\n.ag-theme-alpine .ag-chart-settings-next:hover,\n.ag-theme-alpine .ag-group-title-bar-icon:hover,\n.ag-theme-alpine .ag-column-select-header-icon:hover,\n.ag-theme-alpine .ag-floating-filter-button-button:hover,\n.ag-theme-alpine .ag-filter-toolpanel-expand:hover,\n.ag-theme-alpine .ag-chart-menu-icon:hover {\n color: #2196f3;\n color: var(--ag-alpine-active-color, #2196f3);\n}\n.ag-theme-alpine .ag-chart-settings-card-item.ag-not-selected:hover {\n opacity: 0.35;\n}\n.ag-theme-alpine .ag-ltr .ag-panel-title-bar-button {\n margin-left: 12px;\n margin-right: 6px;\n}\n\n.ag-theme-alpine .ag-rtl .ag-panel-title-bar-button {\n margin-right: 12px;\n margin-left: 6px;\n}\n\n.ag-theme-alpine .ag-filter-toolpanel-group-container {\n padding-left: 6px;\n}\n.ag-theme-alpine .ag-filter-toolpanel-instance-filter {\n border: none;\n background-color: #f8f8f8;\n background-color: var(--ag-control-panel-background-color, #f8f8f8);\n border-left: dashed 1px;\n border-left-color: #babfc7;\n border-left-color: var(--ag-border-color, #babfc7);\n margin-left: 8px;\n padding-left: 8px;\n margin-right: 12px;\n}\n.ag-theme-alpine .ag-set-filter-list {\n padding-top: 3px;\n padding-bottom: 3px;\n}\n.ag-theme-alpine .ag-layout-auto-height .ag-center-cols-clipper, .ag-theme-alpine .ag-layout-auto-height .ag-center-cols-container, .ag-theme-alpine .ag-layout-print .ag-center-cols-clipper, .ag-theme-alpine .ag-layout-print .ag-center-cols-container {\n min-height: 150px;\n}\n.ag-theme-alpine .ag-overlay-no-rows-wrapper.ag-layout-auto-height {\n padding-top: 60px;\n}\n.ag-theme-alpine .ag-date-time-list-page-entry-is-current {\n background-color: #2196f3;\n background-color: var(--ag-alpine-active-color, #2196f3);\n}\n", ""]);
58277// Exports
58278module.exports = exports;
58279
58280
58281/***/ }),
58282/* 283 */
58283/***/ (function(module, exports, __webpack_require__) {
58284
58285var api = __webpack_require__(276);
58286 var content = __webpack_require__(284);
58287
58288 content = content.__esModule ? content.default : content;
58289
58290 if (typeof content === 'string') {
58291 content = [[module.i, content, '']];
58292 }
58293
58294var options = {};
58295
58296options.insert = "head";
58297options.singleton = false;
58298
58299var update = api(content, options);
58300
58301
58302
58303module.exports = content.locals || {};
58304
58305/***/ }),
58306/* 284 */
58307/***/ (function(module, exports, __webpack_require__) {
58308
58309// Imports
58310var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58311exports = ___CSS_LOADER_API_IMPORT___(false);
58312// Module
58313exports.push([module.i, ".ag-theme-balham-dark {\n color-scheme: dark;\n -webkit-font-smoothing: antialiased;\n color: #F5F5F5;\n color: var(--ag-foreground-color, #F5F5F5);\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 12px;\n line-height: normal;\n}\n@font-face {\n font-family: \"agGridBalham\";\n src: url(\"data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABgoAAsAAAAALEgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAAmMAAAR2YfRkQU9TLzIAAANsAAAAQQAAAFZWUFLwY21hcAAAA7AAAAIMAAAFnGSNxkJnbHlmAAAFvAAADpIAABo4y6JNTGhlYWQAABRQAAAANAAAADZ2zcSBaGhlYQAAFIQAAAAaAAAAJAfQBDFobXR4AAAUoAAAABoAAAEgs7L//WxvY2EAABS8AAAAawAAAJJHu0GKbWF4cAAAFSgAAAAfAAAAIAFeAKpuYW1lAAAVSAAAATUAAAJG0OP3eXBvc3QAABaAAAABqAAAAm9qOX49eJx9lM1SE1EQhc8wAYFEoDQqRkRQ/IvKMD8Zk/CTkJBoWS5cWJYLN1hWWVZRrngOH8AnYOkT+AAufAIfwIVL15ZfdwaDLMitTO50n+4+fW7fKJA0qw3taGJv+Pyl5g72Dz+qppJGH/Of3AcHH97va/r4DV/Jf6cVlCqa00291qG+BXPBYXA0UQ1r4avwXfg5/BL+UghqReugy1TcUKyEZ6RUmRrKNaEpbDH7x2qCDnm23HpBVzXpnp76WqRmTEzfM9b1THe0QJ6u5+loG1TKspwdnkPWXc2fgch1j/wZbDaxllBkmf2WqprRHiw7MGkT38R/kZo71I6I6uLrwm4SS4t9W5fgZBElV/Wp3ugRfuvUsmRFTMo31q6/R/5WZh2jWuRpUMty12FwbG9QNSHiIdkzUFuFonVUL+NNwUTEtl1Biy6DTOCWapWd9ZnAtaI1MC/01qvuFjEd13SkQB32Y3vX8+V0ftLaJtcQ7AM4jK12PvepFWngXS2COdAnHemrvuuHfuq3/uicLlMn8R62yb5zpjbTKHga3cPb+me1XqeYgdOo/xEzdN5wdWJ8/UJDq1amM1MnZR9hTR0/C0/D92CTcx4lakRe1056krXJewz6fDGdTVbFle4zBfM+wQOfhRoTlui6ZxzNYY7WS2S03YhfzXVrku+an5upazdswd/sLth51zj/ZX4jOsxcpyd4V7BYprHlhkflsLcc6/hzWI+rGaslWGU+0TZjA78dPSrdop8Rk0S3/WYMfL7WYJAVN7XKGRr7dnFiVxwXe1TAP0FU3PDUtbOZ7sLN5mP4F/iHapMAeJxjYGSqZ5zAwMrAwFTFtIeBgaEHQjM+YDBkZAKKMrAyM2AFAWmuKQwHGHQ/GjG/AHKjmN8wsABpRpAcANz2CuAAAAB4nLXUZ1IbQRCG4VeBKIEDOeNEVkAgssjhh0+BM4UDhTPn8Nl8jz4B/ma7fQBc5al61Duzo9FMrb4F2oCCLEkR8p3kdEUur9FcNl6gOxsv8lv9Mp3kdV3hgiturHF7q9EK51xybbms97flNLvMODOsqbdHjRab7NPglDrbrLLDFge62+SIZTZY4ZAT1tnlmDN9P+2iqD2206Hf7dJOSlqxh17u84A++hlgkCGGGWGUMf3WBJNMMa15j3jME57yTPNmmGWOeRZ0XWJRpyppzwtUtcl27tb27jg/tVprc79xWt/WibcO1po67MbK4cn67vHZPyz2H1o5fRR+Re856Ym6dNrzUJMXoSUvw6a8CvvyOjTkTTiVt6Eu78K2XIRVuQw78j5syYdwIB9D+ld9Ck25CkdyHZblc9iQL2FFvoZD+RZO5HtYlx9hV36GY7kJeoCWcykvlnekWnApX1Z0KWPW5lL2rN2Raocj1U5Hql2OVLtdyqSVHKmWXXqS1uNItdeR6j2n7GBBKcKCsoE9dEoW1ueUMazfKW3YgFPusEGnBGJDTlnEhp1SiY045RMbdUoqNuaUWWzcKb3YhFOOsUmnRGNTLjvvtFPKsaC8Y0HJx4LeAVjQ2wAL2XlnHKnOOlKdc6Q670h1wZHqosvWWXLZ3iqOdL/q0vvVai6bU3cpY7bssjUbjuofQy2jW3ic7VlrkBzVde5ze2d6et7d04+Z2Z33a3deu/OWZnd79EDL7gr0YldCBqQoEnKwVhgpwsJCC7ZwBBI4JlIBdkXxq8qmoCouJ65QlC3ZKeKCpYIWhUAShCs/sBML4mAcq1LljaaVc3t6VlqhAPa/VLLT3ff07XvPPfecc8/57l2GZfCP/Q77HUZlSsx2hoEwUUXWTbieVJFkiE8jjaQlbvWAVZbUMKg9KQ0aIluETDoRt1oStYSsqObPyhk/uVKryLFMtVFvYNt6o57O0F8txgr9a7LQ0wPZNf36T/WfXnmDkP7z1DIAtodUExCGcKJKHA6kp+5a8V/wZGsBfI5o2K04vHa/J5p2qwst/Rj0cLJ7pVu2WsORITEEcJB95nqsIWS8raqnbv/6+j/6VJe1OQzLLrRYj+hUFKdP7FuluPwht+ptzToG5aTkHHL6PEKfPylFE6upqsDQ15fZLzMRhvGpXKahcjHBKDJCzCgaMcEoVGFuPH/yZH4cXEtL/dfm+xvXr1/87jLHIy+yEmPDF3OcBLxxtPDaa4WjGjl1NP/aa/mj+jIqliHbHnYPIzEDTA3bx6k5JGqaMrVDldqBK9N3iX4x7FKnX3zIFzkj/0wDLu7eMl2uVMrTW17pErunJ8ayuVx2bOJZSkAWqelvFb797cK3jCe7Z0lzg9CWNjco/dfdHvhkFmX2s36kOMaBOq0ICXo3KnLi3OzsuwcOvHPvveQu/ZNkvP38woLR/PJlfFxg32F8TIZBNgMQL0JNqGpQiZXDIAuSG9hY3E2pMK3T6NcicID6A7ba/lzplqGhW0qkUw62Z0PlEF7kIaPs17e9UvkKfPpKi5LRg/1mqBRqH8YHXuQL+PgVtix/Be65Vqbcx5eJjeG6+CiJVrZ/TEY+Why9OG64y2X8Q1kuGLIw0B0+EVsUyXI9SapXMaeDHblGCvbC1V9pOXatBKY972N3MRb0WD/D8MCpPLCNCHRig6SU6zXqiOTf9O3NnXobtLm5l77rcAQ8SmlNSfEE4AX4xjB+0P8GRufmNJcr3JsOxEuleCDVF6bse4wxCqzb9BkPw6QSQsVn3kDv51qtH2ja6VarfVbT3iLl9vyVe3Edk5OsBeVEGanfkxP6+/mf/SwPFzulOZebcT35mAQzREfpKnB4UaksRkEkFKyp46c0jm7YXI5hPfnzi7mJXHYiT4vcRPpSul43HnrPiuxEDp7QP5mqzeI3qBgNcvpZfJByPa3/mDaFkXRddxIxN55r1VJX5H6RvEjXCixZtVctRxK9eplZGebyJfZu9heMF2cSYsaZzzF/hr3p8rd0pEcvqNfYRA2EmGpVcTK+lOQmON2eWlUjFTpZyRpPZ4pAp4tuU6axvayo1K3iWF2r1sthtkJti6mhSKgOymFidur0iYCihklDxYBT0qgCJdkDboI6HWSxu8Lu5XbfY9HXZRqNDKlnGmPf01fBMQKsxXue6Nt5MSx5Vclrt7j8MZ+a9Nldth6b5FH7nGpUsRKb2/4XYlwJCS4v77ZxNo9TUByiV+oVxIgi+gWb3cX1WDxh0eqwiKLDJdpHclnCEpvDZiE1wtk9TiupsGAXbeTnts8csZBlmUuvGsIcO3fpOHvfGwFeaD/+j85I2GcTe6MpOV5LS30ZkffYXbJULUdzit9v97g9gQHF40iJDrcjIDhV0S3YrJwvVkz5XLJf9todHtHn4h08y3EWzhf64x+c5h1WO+eyW/jXeY+Nd/PzHt7uFamp/992/3tttzR3m5igQnxm7oabOrkb5joxbYmdJz7Sxg2avKv1SlmJQItQkymy5AHEaGjXeHoQOOoE6Vr1w01T2LqW5yySR/B5R1bY3VaXzeOT10057bwoiT23bunhBaz5MKXOfXaP2+VQvD7/Jz7hES0Wr1MI7f2sRxbdPG998JDVZhU8IvN/ZI5L8gqmPo4HcgKTif4+eMk/0eziBS82sRi55Wm2iZllOXMTM81sw/b1RgXhdwdF08juhkwHOzcMlIZhXnWDBwywTV+tRkKqNkCDFhQJ9ql31juXMlZtpdwCY1Un4hwktt8l3v7M55MuQewNRtOj+Ym1z26cumFjyevjHQ6vN98ayWtDN6mQ3rh+x523K1Jfc2Jk13AeHh5aq0L4wBNfW5toTgzf2czp88HcjbnBTD6YHc8OZsivSiy77pFb++LhbF8sgIxToiSXmpt7i5JfDsujudH8U5Fba2SrNirJYau9Lze8a3iiqf9ddGuNjN89ysbjWDMy0TzfP4gcg/nMYA6LK7n+aTbB9DJFZhg1ZexQTBVZr1YP7jVUN+lqp6MRrtxxlSJgUFOpJhD3hIAGQUQ90F7Ux9q9n/r0/q0byqYuWn89Azd98e6IqYuNn09QBYw3dzSbOw7sWL58xz9kx6fGs8aDTSxOfl0y4fasaG4xJz69q6dFRmfWdCYeCt67ns42shxZdPj8PWQpkyzpFNR1TGxTwP0Yokgw5xkCrlE3J5sehZhFMvdccqPWcQ1cOgUY8K9q+G2nAQhw/vqqwADZ1z5rMyh0kc5XciEzFBoeCvLOP3xsen/TYQuURsNDyTUtgQ+WRkNDqSODU9iiWQrygikPWTD8me96tEVICOQ3plfrv6ctOraiO+Ei4+zMgby3iM98OJte3DElDGw8yDCNRK2iXnWnPuJ9wcByVxDd9V8WZjt/LbPUzBLFsS3Z59ZwzY0yK5k1Rgz6rXa8PpTGgpg9dU35O+5tT83OwkH9JViuH1uknEhd1Cfhud9tO9v+d03TWubNMB+wYQftUpRMcibi/WdN66Le9n+iBbt+uJ/tRc0J1O4IaKnpWbWRwdlieMy04Jh+sHVcPw/p+fnSLLyth2dL5HHttHYc0pDWz8+X0QLlLq99iKOzzBbDp1GtHCoYwxvVar0FtXSmhH7uBnTpMDSwRqOhzxc3WmEljXZF8wPtLeEHrC4Z697gkiB+3GvEeu32vpnQLf3JKmdVAqKTFVPePo/bm8gdXp6NzBT8ITW7K3tzaM+g2qfmwjbgUgHZIdIuuQaokggOVky4+yS7Y3UxnSVreKeld9NAOrQn5HO5RtOJsaDIJlJiUs7sHColc72qJ7qn+PBwMQJ8FLl+YXgoGuYdlsiugopcfW7P+mKoJhl9Yr7kHYXSep+364+Pso9+YI0w1KMoprfgbXgX3g3znUMaPVS7Zy4/By/k5/IQWFhozy8srEWabMNaXCnbFiJI4JUvowdswxKvuWcWrvhCm7QRWbpwtx2hzsClBgF3Eo1fsG+O7d+4H/7WLOfOs7T8aqcw90MF8mp3rw7oCd0fW2h/CaONeUOghbZvdW0fx/htjGcOZA4Lr/YYA/1JZ7z/eLMHi33wozfZsX2b9pt9n8V9XscHuwgKXbdzEALNx4pvnS8+thL+aiVSbw0+Bhseyp09m3sIzrTn4UyHphga+RxhDzIKRp8G02LWMlPIj7qaqhhul0kb3tXQiEpfOavphxh0qW9hK1qZQcTBg2KE20FATAJGp3pDNYK02kjDwh2bN+61O7Ppmyeev/WO1aMrCElF73505YbxG27j+VR607oz66azCZtt69jkU1Grdf3oqslqKQOH9F9WZgayCFHOrFrerx9NOvzBenMTr1XLsiJejrCfIdXS09vuvG3DslpKVlrLvjq1ZXLlznqL5LNf3DB98/pizpItbJ6Y3vh4rvDy6MTYbDzJWYIK3K8/5e1NpavN4VdIWNGPtk6sXD1QsGjsQP+INnzZvngGM8Pej97Xz4ygZoyDIuPwSE588KAgwZUVujmo1iGG4Euo1odBjtUoOBMkK9nndAcimyMBt3M2vjyOF1zslAtCIBAPBMChO4PJZLAFB7VgKsWGRMnvFkW3XxKxkT5pdnoOH4I/6ser/fVUAJ4LJmdnk0F9MpBajE+HDZmbKHEXIdXRCFhQY3E0QdIwg4uJ5tEIcGmcEnSs11CVioGhYOMJID0WPtQcbOx0N0NRCMsr1vwB5lBWkgvqkxge/8XHO23eU/X+sgBBm0rARp6w4VbALXpfhwdOIGLwOPsdvGNHcTQs62/3TTvvtFoCtdyQ6sDu5Eter8+tnHKzbK/+r1Yp46+KT2Iw52zi64z9qrwURe2vZMYM77yN2cHs/h9yU0xQjINVC01PEYQxndUgI9DhEp0jScVQRkpSK7WMlavUGllARVQwscoV6tEpa4KTK410Qq58WOKCQ+2XfvkeZhW+bQPMMVH4vj0/PZXns2P9B/j89HTeviJZDoah/TIcvh9gtlVdi5nuUAvOHKLtURfLsw/+aNmND35oKrvUftnKY/P3zgpeHAzuB4/BnL+n/8Yc4fNTOA7gdkvJhseWPfDDydqDv6mntrcOH47ThAdweBYeWPQJeu5Fzz/N008v9YIoVYf3mtPPuLG5oF/g4iMH9q2+4YbV+w6At0s9cnD3zubISHPn7veQGB5Ggr1AP+jvL22sLWlDiZHumurKov1W0lxzNmu0+bgiwnevc+r6seXWJ6eX9qTMrsUCFD9gwMdkpCIowGieYffp54+39INwrHW8NKuH4e3Z0vw8IorzxykaOE5hwPy8yYeeT7swEjO4z0Mcae77BEs3urP+9vO3lOJkPF7SvzfTPHeuOTOFrH4CSf0n9BQQkn0zw+fODc/AycXzeAs5aZzj0QMKtkd/34AyZDeFp0gw17YDemaGeCzfga1HOuVimxe6Z4IqttFP/CVu0VeRJ5AoPAyrFnkViESt7EMdnDaSnk9bjKV72Rm0ew7xJeOLI5BEtI6Zhm7GMLJiPvEhpgkTBDMZ7goGygBFO6qxtOk/Uzq0cW7zNCFJQv4Ulr1LLAalz71LvEU1pGz6/Z1JraAl7sr6Y5xNDmoF+MbAuhBWCYXA4GZRECJIR6JWpXfnMnYPdraQU/rcO8gQrOQUNN4l+n0IX7B9xGDk7PUW+5KTvchoMmrwUVhLOd+/Ffm0Iptv7y8N4wz/G4A9L1cAAHicY2BkYGAAYgWvvDnx/DZfGbiZXwAFojgf72uA0f/////D/IL5DVAlBwMTkGQAAHb/DvN4nGNgZGBgfsHAACL//wezGRlQgQcAdFMFCgAAeJxjYGBgYH6BDf//j8C41AwspgcAANyGMDUAAHicY2AAghkMFxieMTowRjEuYXzFpMEUxVTD1Md0g+kT8wWWdSxHWM1YV7DuYQtgO8EuwK7FXsL+iYOHw4hjD8cPTjFOA04/ziIuJq4YrgPcadxreIR4zHgSeEp42nhm8azglSEdAgCdlRu1AHicY2BkYGDwYJjHwMMAAkxAzAWEDAz/wXwGACBkAgkAeJx1jz9OwzAYxV9oWkSLEBISYsMTC1L6Z2Do2KHZO3RgcxsnbZXEkeNW6sYxOAHHYOQInIJD8BK+oUKqLTk///zeJwXALb4QoFkBrtuzWRe45O2PO6Q74ZD8KNzFAM/CPfoX4T7tTHjAZsEJQXhF84A34Qvc4F24Q/8hHJI/hbu4x7dwj/5HuI9lEAoP8BS86ix222Sm840uFibb59qdqlNeGldvbanG0ehUx6Y0TnuTqNVR1Yds4n2qUmcLNbelN3luVeXszqx9tPG+mg6HqfhobQtoZIjhsEXCP9fIseFZYAHDlz3vmq/nUuf8km2Hmt6ihMIYEUZn0zHTZdvQ8PwmbKxw5FnjwM6E1iPlPWXGsqEwbyc36Zzb0lTt245mTR9xdtOqMMWQO/2Xj5jipF9al2jJAAAAeJxtkQdv2zAQhf3Fku3YaeO6bbr3Hmrr7p3upj+DpmiZiEQKJOWRX18iLgIE6AE8vPdwvHu4a2201tFv/T/22KBNQkqHLj026TNgixOcZJshpxhxmjOcZYdznOcCF7nEZa5wlWtc5wY3ucVt7nCXe9znAQ95xGMynvCUZ4x5zgte8orXvOEt73jPBz7yic/s8oWvfOM7P/jJL36zx5/WQBSFU4UI2pqOcM4ufFt42ZHCSFWmciZcGMqZkvsTu8wOgcp3jgRtchWUq7QRQY2O5Mb8q9yStrQuq3UkrhtJUxnfl9YEJ2RQeSJtvUqls963pZ+n8WXjJFdepmoZDXQPczbuqWUt4qx8U61U5kvhZ+2IOlNdxvHpVDsfksLpOi2cbeokFoSkVNPQKbWJPrqlFbk2Ra8SS13pA5VUyjS96HvNjDVqYGzIRFnahcrTOjZQ7VqbtNZzG4YufrfZpAnBmsxOp9vHBZM6XcxC4sVc9X0Vu2S5XZjeGkZDIW5gFJxSx1fWa8zaIIIChyKgsRgWeCQlM/aZsIwnzqloqFkxZ8pBq/UXq/Gj5g==\") format(\"woff\");\n font-weight: normal;\n font-style: normal;\n}\n.ag-theme-balham-dark .ag-icon {\n font-family: \"agGridBalham\";\n font-size: 16px;\n line-height: 16px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.ag-theme-balham-dark .ag-icon-aggregation::before {\n content: \"\\f101\";\n}\n.ag-theme-balham-dark .ag-icon-arrows::before {\n content: \"\\f102\";\n}\n.ag-theme-balham-dark .ag-icon-asc::before {\n content: \"\\f103\";\n}\n.ag-theme-balham-dark .ag-icon-cancel::before {\n content: \"\\f104\";\n}\n.ag-theme-balham-dark .ag-icon-chart::before {\n content: \"\\f105\";\n}\n.ag-theme-balham-dark .ag-icon-color-picker::before {\n content: \"\\f109\";\n}\n.ag-theme-balham-dark .ag-icon-columns::before {\n content: \"\\f10a\";\n}\n.ag-theme-balham-dark .ag-icon-contracted::before {\n content: \"\\f10b\";\n}\n.ag-theme-balham-dark .ag-icon-copy::before {\n content: \"\\f10c\";\n}\n.ag-theme-balham-dark .ag-icon-cross::before {\n content: \"\\f10d\";\n}\n.ag-theme-balham-dark .ag-icon-csv::before {\n content: \"\\f10e\";\n}\n.ag-theme-balham-dark .ag-icon-desc::before {\n content: \"\\f10f\";\n}\n.ag-theme-balham-dark .ag-icon-excel::before {\n content: \"\\f110\";\n}\n.ag-theme-balham-dark .ag-icon-expanded::before {\n content: \"\\f111\";\n}\n.ag-theme-balham-dark .ag-icon-eye-slash::before {\n content: \"\\f112\";\n}\n.ag-theme-balham-dark .ag-icon-eye::before {\n content: \"\\f113\";\n}\n.ag-theme-balham-dark .ag-icon-filter::before {\n content: \"\\f114\";\n}\n.ag-theme-balham-dark .ag-icon-first::before {\n content: \"\\f115\";\n}\n.ag-theme-balham-dark .ag-icon-grip::before {\n content: \"\\f116\";\n}\n.ag-theme-balham-dark .ag-icon-group::before {\n content: \"\\f117\";\n}\n.ag-theme-balham-dark .ag-icon-last::before {\n content: \"\\f118\";\n}\n.ag-theme-balham-dark .ag-icon-left::before {\n content: \"\\f119\";\n}\n.ag-theme-balham-dark .ag-icon-linked::before {\n content: \"\\f11a\";\n}\n.ag-theme-balham-dark .ag-icon-loading::before {\n content: \"\\f11b\";\n}\n.ag-theme-balham-dark .ag-icon-maximize::before {\n content: \"\\f11c\";\n}\n.ag-theme-balham-dark .ag-icon-menu::before {\n content: \"\\f11d\";\n}\n.ag-theme-balham-dark .ag-icon-minimize::before {\n content: \"\\f11e\";\n}\n.ag-theme-balham-dark .ag-icon-next::before {\n content: \"\\f11f\";\n}\n.ag-theme-balham-dark .ag-icon-none::before {\n content: \"\\f120\";\n}\n.ag-theme-balham-dark .ag-icon-not-allowed::before {\n content: \"\\f121\";\n}\n.ag-theme-balham-dark .ag-icon-paste::before {\n content: \"\\f122\";\n}\n.ag-theme-balham-dark .ag-icon-pin::before {\n content: \"\\f123\";\n}\n.ag-theme-balham-dark .ag-icon-pivot::before {\n content: \"\\f124\";\n}\n.ag-theme-balham-dark .ag-icon-previous::before {\n content: \"\\f125\";\n}\n.ag-theme-balham-dark .ag-icon-right::before {\n content: \"\\f128\";\n}\n.ag-theme-balham-dark .ag-icon-save::before {\n content: \"\\f129\";\n}\n.ag-theme-balham-dark .ag-icon-small-down::before {\n content: \"\\f12a\";\n}\n.ag-theme-balham-dark .ag-icon-small-left::before {\n content: \"\\f12b\";\n}\n.ag-theme-balham-dark .ag-icon-small-right::before {\n content: \"\\f12c\";\n}\n.ag-theme-balham-dark .ag-icon-small-up::before {\n content: \"\\f12d\";\n}\n.ag-theme-balham-dark .ag-icon-tick::before {\n content: \"\\f12e\";\n}\n.ag-theme-balham-dark .ag-icon-tree-closed::before {\n content: \"\\f12f\";\n}\n.ag-theme-balham-dark .ag-icon-tree-indeterminate::before {\n content: \"\\f130\";\n}\n.ag-theme-balham-dark .ag-icon-tree-open::before {\n content: \"\\f131\";\n}\n.ag-theme-balham-dark .ag-icon-unlinked::before {\n content: \"\\f132\";\n}\n.ag-theme-balham-dark .ag-icon-row-drag::before {\n content: \"\\f116\";\n}\n.ag-theme-balham-dark .ag-left-arrow::before {\n content: \"\\f119\";\n}\n.ag-theme-balham-dark .ag-right-arrow::before {\n content: \"\\f128\";\n}\n.ag-theme-balham-dark .ag-root-wrapper {\n background-color: #2d3436;\n background-color: var(--ag-background-color, #2d3436);\n}\n.ag-theme-balham-dark [class^=ag-], .ag-theme-balham-dark [class^=ag-]:focus, .ag-theme-balham-dark [class^=ag-]:after, .ag-theme-balham-dark [class^=ag-]:before {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n outline: none;\n}\n.ag-theme-balham-dark [class^=ag-]::-ms-clear {\n display: none;\n}\n.ag-theme-balham-dark .ag-checkbox .ag-input-wrapper,\n.ag-theme-balham-dark .ag-radio-button .ag-input-wrapper {\n overflow: visible;\n}\n.ag-theme-balham-dark .ag-range-field .ag-input-wrapper {\n height: 100%;\n}\n.ag-theme-balham-dark .ag-toggle-button {\n -webkit-box-flex: 0;\n flex: none;\n width: unset;\n min-width: unset;\n}\n.ag-theme-balham-dark .ag-ltr .ag-label-align-right .ag-label {\n margin-left: 4px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-label-align-right .ag-label {\n margin-right: 4px;\n}\n\n.ag-theme-balham-dark input[class^=ag-] {\n margin: 0;\n background-color: #2d3436;\n background-color: var(--ag-background-color, #2d3436);\n}\n.ag-theme-balham-dark textarea[class^=ag-],\n.ag-theme-balham-dark select[class^=ag-] {\n background-color: #2d3436;\n background-color: var(--ag-background-color, #2d3436);\n}\n.ag-theme-balham-dark input[class^=ag-]:not([type]),\n.ag-theme-balham-dark input[class^=ag-][type=text],\n.ag-theme-balham-dark input[class^=ag-][type=number],\n.ag-theme-balham-dark input[class^=ag-][type=tel],\n.ag-theme-balham-dark input[class^=ag-][type=date],\n.ag-theme-balham-dark input[class^=ag-][type=datetime-local],\n.ag-theme-balham-dark textarea[class^=ag-] {\n font-size: inherit;\n line-height: inherit;\n color: inherit;\n border-width: 1px;\n border-style: solid;\n border-color: #f0f0f0;\n border-color: var(--ag-input-border-color, #f0f0f0);\n}\n.ag-theme-balham-dark input[class^=ag-]:not([type]):disabled,\n.ag-theme-balham-dark input[class^=ag-][type=text]:disabled,\n.ag-theme-balham-dark input[class^=ag-][type=number]:disabled,\n.ag-theme-balham-dark input[class^=ag-][type=tel]:disabled,\n.ag-theme-balham-dark input[class^=ag-][type=date]:disabled,\n.ag-theme-balham-dark input[class^=ag-][type=datetime-local]:disabled,\n.ag-theme-balham-dark textarea[class^=ag-]:disabled {\n color: rgba(245, 245, 245, 0.38);\n color: var(--ag-disabled-foreground-color, rgba(245, 245, 245, 0.38));\n background-color: rgba(48, 46, 46, 0.3);\n background-color: var(--ag-input-disabled-background-color, rgba(48, 46, 46, 0.3));\n border-color: rgba(240, 240, 240, 0.3);\n border-color: var(--ag-input-disabled-border-color, rgba(240, 240, 240, 0.3));\n}\n.ag-theme-balham-dark input[class^=ag-]:not([type]):focus,\n.ag-theme-balham-dark input[class^=ag-][type=text]:focus,\n.ag-theme-balham-dark input[class^=ag-][type=number]:focus,\n.ag-theme-balham-dark input[class^=ag-][type=tel]:focus,\n.ag-theme-balham-dark input[class^=ag-][type=date]:focus,\n.ag-theme-balham-dark input[class^=ag-][type=datetime-local]:focus,\n.ag-theme-balham-dark textarea[class^=ag-]:focus {\n outline: none;\n -webkit-box-shadow: 0 0 4px 1.5px #719ECE;\n box-shadow: 0 0 4px 1.5px #719ECE;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham-dark input[class^=ag-]:not([type]):invalid,\n.ag-theme-balham-dark input[class^=ag-][type=text]:invalid,\n.ag-theme-balham-dark input[class^=ag-][type=number]:invalid,\n.ag-theme-balham-dark input[class^=ag-][type=tel]:invalid,\n.ag-theme-balham-dark input[class^=ag-][type=date]:invalid,\n.ag-theme-balham-dark input[class^=ag-][type=datetime-local]:invalid,\n.ag-theme-balham-dark textarea[class^=ag-]:invalid {\n border-width: 2px;\n border-style: solid;\n border-color: #e02525;\n border-color: var(--ag-input-border-color-invalid, var(--ag-invalid-color, #e02525));\n}\n.ag-theme-balham-dark input[class^=ag-][type=number] {\n -moz-appearance: textfield;\n}\n.ag-theme-balham-dark input[class^=ag-][type=number]::-webkit-outer-spin-button, .ag-theme-balham-dark input[class^=ag-][type=number]::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n.ag-theme-balham-dark input[class^=ag-][type=range] {\n padding: 0;\n}\n.ag-theme-balham-dark input[class^=ag-][type=button]:focus, .ag-theme-balham-dark button[class^=ag-]:focus {\n -webkit-box-shadow: 0 0 4px 1.5px #719ECE;\n box-shadow: 0 0 4px 1.5px #719ECE;\n}\n.ag-theme-balham-dark .ag-drag-handle {\n color: #F5F5F5;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #F5F5F5));\n}\n.ag-theme-balham-dark .ag-list-item, .ag-theme-balham-dark .ag-virtual-list-item {\n height: 24px;\n}\n.ag-theme-balham-dark .ag-keyboard-focus .ag-virtual-list-item:focus {\n outline: none;\n}\n.ag-theme-balham-dark .ag-keyboard-focus .ag-virtual-list-item:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham-dark .ag-select-list {\n background-color: #2d3436;\n background-color: var(--ag-background-color, #2d3436);\n overflow-y: auto;\n overflow-x: hidden;\n}\n.ag-theme-balham-dark .ag-list-item {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ag-theme-balham-dark .ag-list-item.ag-active-item {\n background-color: #3d4749;\n background-color: var(--ag-row-hover-color, #3d4749);\n}\n.ag-theme-balham-dark .ag-select-list-item {\n padding-left: 4px;\n padding-right: 4px;\n cursor: default;\n -moz-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n}\n.ag-theme-balham-dark .ag-select-list-item span {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n.ag-theme-balham-dark .ag-select .ag-picker-field-wrapper {\n background-color: #2d3436;\n background-color: var(--ag-background-color, #2d3436);\n min-height: 24px;\n cursor: default;\n}\n.ag-theme-balham-dark .ag-select.ag-disabled .ag-picker-field-wrapper:focus {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.ag-theme-balham-dark .ag-select:not(.ag-cell-editor) {\n height: 24px;\n}\n.ag-theme-balham-dark .ag-select .ag-picker-field-display {\n margin: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ag-theme-balham-dark .ag-select .ag-picker-field-icon {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-balham-dark .ag-select.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-balham-dark .ag-rich-select {\n background-color: #202020;\n background-color: var(--ag-control-panel-background-color, #202020);\n}\n.ag-theme-balham-dark .ag-rich-select-list {\n width: 100%;\n min-width: 200px;\n height: 182px;\n}\n.ag-theme-balham-dark .ag-rich-select-value {\n padding: 0 4px 0 12px;\n height: 28px;\n border-bottom: solid 1px;\n border-bottom-color: #424242;\n border-bottom-color: var(--ag-secondary-border-color, var(--ag-border-color, #424242));\n}\n.ag-theme-balham-dark .ag-rich-select-virtual-list-item {\n cursor: default;\n height: 24px;\n}\n.ag-theme-balham-dark .ag-rich-select-virtual-list-item:hover {\n background-color: #3d4749;\n background-color: var(--ag-row-hover-color, #3d4749);\n}\n.ag-theme-balham-dark .ag-rich-select-row {\n padding-left: 12px;\n}\n.ag-theme-balham-dark .ag-rich-select-row-selected {\n background-color: #005880;\n background-color: var(--ag-selected-row-background-color, #005880);\n}\n.ag-theme-balham-dark .ag-row-drag,\n.ag-theme-balham-dark .ag-selection-checkbox,\n.ag-theme-balham-dark .ag-group-expanded,\n.ag-theme-balham-dark .ag-group-contracted {\n color: #F5F5F5;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #F5F5F5));\n}\n.ag-theme-balham-dark .ag-ltr .ag-row-drag, .ag-theme-balham-dark .ag-ltr .ag-selection-checkbox, .ag-theme-balham-dark .ag-ltr .ag-group-expanded, .ag-theme-balham-dark .ag-ltr .ag-group-contracted {\n margin-right: 12px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-drag, .ag-theme-balham-dark .ag-rtl .ag-selection-checkbox, .ag-theme-balham-dark .ag-rtl .ag-group-expanded, .ag-theme-balham-dark .ag-rtl .ag-group-contracted {\n margin-left: 12px;\n}\n\n.ag-theme-balham-dark .ag-cell-wrapper > *:not(.ag-cell-value):not(.ag-group-value) {\n height: min(var(--ag-line-height, 26px), 26px);\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-flex: 0;\n flex: none;\n}\n.ag-theme-balham-dark .ag-group-expanded,\n.ag-theme-balham-dark .ag-group-contracted {\n cursor: pointer;\n}\n.ag-theme-balham-dark .ag-group-title-bar-icon {\n cursor: pointer;\n -webkit-box-flex: 0;\n flex: none;\n color: #F5F5F5;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #F5F5F5));\n}\n.ag-theme-balham-dark .ag-ltr .ag-group-child-count {\n margin-left: 2px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-group-child-count {\n margin-right: 2px;\n}\n\n.ag-theme-balham-dark .ag-group-title-bar {\n background-color: #111;\n background-color: var(--ag-subheader-background-color, #111);\n padding: 4px;\n}\n.ag-theme-balham-dark .ag-group-toolbar {\n padding: 4px;\n}\n.ag-theme-balham-dark .ag-disabled-group-title-bar, .ag-theme-balham-dark .ag-disabled-group-container {\n opacity: 0.5;\n}\n.ag-theme-balham-dark .group-item {\n margin: 2px 0;\n}\n.ag-theme-balham-dark .ag-label {\n white-space: nowrap;\n}\n.ag-theme-balham-dark .ag-ltr .ag-label {\n margin-right: 4px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-label {\n margin-left: 4px;\n}\n\n.ag-theme-balham-dark .ag-label-align-top .ag-label {\n margin-bottom: 2px;\n}\n.ag-theme-balham-dark .ag-ltr .ag-slider-field, .ag-theme-balham-dark .ag-ltr .ag-angle-select-field {\n margin-right: 8px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-slider-field, .ag-theme-balham-dark .ag-rtl .ag-angle-select-field {\n margin-left: 8px;\n}\n\n.ag-theme-balham-dark .ag-angle-select-parent-circle {\n width: 24px;\n height: 24px;\n border-radius: 12px;\n border: solid 1px;\n border-color: #424242;\n border-color: var(--ag-border-color, #424242);\n background-color: #2d3436;\n background-color: var(--ag-background-color, #2d3436);\n}\n.ag-theme-balham-dark .ag-angle-select-child-circle {\n top: 4px;\n left: 12px;\n width: 6px;\n height: 6px;\n margin-left: -3px;\n margin-top: -4px;\n border-radius: 3px;\n background-color: #F5F5F5;\n background-color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #F5F5F5));\n}\n.ag-theme-balham-dark .ag-picker-field-wrapper {\n border: 1px solid;\n border-color: #424242;\n border-color: var(--ag-border-color, #424242);\n border-radius: 5px;\n}\n.ag-theme-balham-dark .ag-picker-field-wrapper:focus {\n -webkit-box-shadow: 0 0 4px 1.5px #719ECE;\n box-shadow: 0 0 4px 1.5px #719ECE;\n}\n.ag-theme-balham-dark .ag-picker-field-button {\n background-color: #2d3436;\n background-color: var(--ag-background-color, #2d3436);\n color: #F5F5F5;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #F5F5F5));\n}\n.ag-theme-balham-dark .ag-dialog.ag-color-dialog {\n border-radius: 5px;\n}\n.ag-theme-balham-dark .ag-color-picker .ag-picker-field-display {\n height: 16px;\n}\n.ag-theme-balham-dark .ag-color-panel {\n padding: 4px;\n}\n.ag-theme-balham-dark .ag-spectrum-color {\n background-color: rgb(255, 0, 0);\n border-radius: 2px;\n}\n.ag-theme-balham-dark .ag-spectrum-tools {\n padding: 10px;\n}\n.ag-theme-balham-dark .ag-spectrum-sat {\n background-image: -webkit-gradient(linear, left top, right top, from(white), to(rgba(204, 154, 129, 0)));\n background-image: linear-gradient(to right, white, rgba(204, 154, 129, 0));\n}\n.ag-theme-balham-dark .ag-spectrum-val {\n background-image: -webkit-gradient(linear, left bottom, left top, from(black), to(rgba(204, 154, 129, 0)));\n background-image: linear-gradient(to top, black, rgba(204, 154, 129, 0));\n}\n.ag-theme-balham-dark .ag-spectrum-dragger {\n border-radius: 12px;\n height: 12px;\n width: 12px;\n border: 1px solid white;\n background: black;\n -webkit-box-shadow: 0 0 2px 0px rgba(0, 0, 0, 0.24);\n box-shadow: 0 0 2px 0px rgba(0, 0, 0, 0.24);\n}\n.ag-theme-balham-dark .ag-spectrum-hue-background {\n border-radius: 2px;\n}\n.ag-theme-balham-dark .ag-spectrum-alpha-background {\n border-radius: 2px;\n}\n.ag-theme-balham-dark .ag-spectrum-tool {\n margin-bottom: 10px;\n height: 11px;\n border-radius: 2px;\n}\n.ag-theme-balham-dark .ag-spectrum-slider {\n margin-top: -12px;\n width: 13px;\n height: 13px;\n border-radius: 13px;\n background-color: rgb(248, 248, 248);\n -webkit-box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\n box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\n}\n.ag-theme-balham-dark .ag-recent-color {\n margin: 0 3px;\n}\n.ag-theme-balham-dark .ag-recent-color:first-child {\n margin-left: 0;\n}\n.ag-theme-balham-dark .ag-recent-color:last-child {\n margin-right: 0;\n}\n.ag-theme-balham-dark.ag-dnd-ghost {\n border: solid 1px;\n border-color: #424242;\n border-color: var(--ag-border-color, #424242);\n background: #2d3436;\n background: var(--ag-background-color, #2d3436);\n border-radius: 2px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n overflow: hidden;\n text-overflow: ellipsis;\n border: solid 1px;\n border-color: #424242;\n border-color: var(--ag-secondary-border-color, var(--ag-border-color, #424242));\n color: #F5F5F5;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #F5F5F5));\n height: 32px !important;\n line-height: 32px;\n margin: 0;\n padding: 0 8px;\n -webkit-transform: translateY(8px);\n transform: translateY(8px);\n}\n.ag-theme-balham-dark .ag-dnd-ghost-icon {\n margin-right: 4px;\n color: #F5F5F5;\n color: var(--ag-foreground-color, #F5F5F5);\n}\n.ag-theme-balham-dark .ag-popup-child:not(.ag-tooltip-custom) {\n -webkit-box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.3);\n box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.3);\n}\n.ag-dragging-range-handle .ag-theme-balham-dark .ag-dialog, .ag-dragging-fill-handle .ag-theme-balham-dark .ag-dialog {\n opacity: 0.7;\n pointer-events: none;\n}\n.ag-theme-balham-dark .ag-dialog {\n border-radius: 2px;\n border: solid 1px;\n border-color: #424242;\n border-color: var(--ag-border-color, #424242);\n}\n.ag-theme-balham-dark .ag-panel {\n background-color: #2d3436;\n background-color: var(--ag-background-color, #2d3436);\n}\n.ag-theme-balham-dark .ag-panel-title-bar {\n background-color: #1c1c1c;\n background-color: var(--ag-header-background-color, #1c1c1c);\n color: rgba(245, 245, 245, 0.64);\n color: var(--ag-header-foreground-color, rgba(245, 245, 245, 0.64));\n height: 32px;\n padding: 4px 12px;\n border-bottom: solid 1px;\n border-bottom-color: #424242;\n border-bottom-color: var(--ag-border-color, #424242);\n}\n.ag-theme-balham-dark .ag-ltr .ag-panel-title-bar-button {\n margin-left: 4px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-panel-title-bar-button {\n margin-right: 4px;\n}\n\n.ag-theme-balham-dark .ag-tooltip {\n background-color: #1c1c1c;\n background-color: var(--ag-header-background-color, #1c1c1c);\n color: #F5F5F5;\n color: var(--ag-foreground-color, #F5F5F5);\n padding: 4px;\n border: solid 1px;\n border-color: #424242;\n border-color: var(--ag-border-color, #424242);\n border-radius: 2px;\n -webkit-transition: opacity 1s;\n transition: opacity 1s;\n white-space: normal;\n}\n.ag-theme-balham-dark .ag-tooltip.ag-tooltip-hiding {\n opacity: 0;\n}\n.ag-theme-balham-dark .ag-tooltip-custom {\n -webkit-transition: opacity 1s;\n transition: opacity 1s;\n}\n.ag-theme-balham-dark .ag-tooltip-custom.ag-tooltip-hiding {\n opacity: 0;\n}\n.ag-theme-balham-dark .ag-ltr .ag-column-select-indent-1 {\n padding-left: 20px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-column-select-indent-1 {\n padding-right: 20px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-column-select-indent-2 {\n padding-left: 40px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-column-select-indent-2 {\n padding-right: 40px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-column-select-indent-3 {\n padding-left: 60px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-column-select-indent-3 {\n padding-right: 60px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-column-select-indent-4 {\n padding-left: 80px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-column-select-indent-4 {\n padding-right: 80px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-column-select-indent-5 {\n padding-left: 100px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-column-select-indent-5 {\n padding-right: 100px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-column-select-indent-6 {\n padding-left: 120px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-column-select-indent-6 {\n padding-right: 120px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-column-select-indent-7 {\n padding-left: 140px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-column-select-indent-7 {\n padding-right: 140px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-column-select-indent-8 {\n padding-left: 160px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-column-select-indent-8 {\n padding-right: 160px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-column-select-indent-9 {\n padding-left: 180px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-column-select-indent-9 {\n padding-right: 180px;\n}\n\n.ag-theme-balham-dark .ag-column-select-header-icon {\n cursor: pointer;\n}\n.ag-theme-balham-dark .ag-keyboard-focus .ag-column-select-header-icon:focus {\n outline: none;\n}\n.ag-theme-balham-dark .ag-keyboard-focus .ag-column-select-header-icon:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 0px;\n left: 0px;\n display: block;\n width: calc(100% - 0px);\n height: calc(100% - 0px);\n border: 1px solid;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham-dark .ag-ltr .ag-column-group-icons:not(:last-child), .ag-theme-balham-dark .ag-ltr .ag-column-select-header-icon:not(:last-child), .ag-theme-balham-dark .ag-ltr .ag-column-select-header-checkbox:not(:last-child), .ag-theme-balham-dark .ag-ltr .ag-column-select-header-filter-wrapper:not(:last-child), .ag-theme-balham-dark .ag-ltr .ag-column-select-checkbox:not(:last-child), .ag-theme-balham-dark .ag-ltr .ag-column-select-column-drag-handle:not(:last-child), .ag-theme-balham-dark .ag-ltr .ag-column-select-column-group-drag-handle:not(:last-child), .ag-theme-balham-dark .ag-ltr .ag-column-select-column-label:not(:last-child) {\n margin-right: 8px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-column-group-icons:not(:last-child), .ag-theme-balham-dark .ag-rtl .ag-column-select-header-icon:not(:last-child), .ag-theme-balham-dark .ag-rtl .ag-column-select-header-checkbox:not(:last-child), .ag-theme-balham-dark .ag-rtl .ag-column-select-header-filter-wrapper:not(:last-child), .ag-theme-balham-dark .ag-rtl .ag-column-select-checkbox:not(:last-child), .ag-theme-balham-dark .ag-rtl .ag-column-select-column-drag-handle:not(:last-child), .ag-theme-balham-dark .ag-rtl .ag-column-select-column-group-drag-handle:not(:last-child), .ag-theme-balham-dark .ag-rtl .ag-column-select-column-label:not(:last-child) {\n margin-left: 8px;\n}\n\n.ag-theme-balham-dark .ag-keyboard-focus .ag-column-select-virtual-list-item:focus {\n outline: none;\n}\n.ag-theme-balham-dark .ag-keyboard-focus .ag-column-select-virtual-list-item:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 1px;\n left: 1px;\n display: block;\n width: calc(100% - 2px);\n height: calc(100% - 2px);\n border: 1px solid;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham-dark .ag-column-select-column-group:not(:last-child),\n.ag-theme-balham-dark .ag-column-select-column:not(:last-child) {\n margin-bottom: 4px;\n}\n.ag-theme-balham-dark .ag-column-select-column-readonly,\n.ag-theme-balham-dark .ag-column-select-column-group-readonly {\n color: rgba(245, 245, 245, 0.38);\n color: var(--ag-disabled-foreground-color, rgba(245, 245, 245, 0.38));\n pointer-events: none;\n}\n.ag-theme-balham-dark .ag-ltr .ag-column-select-add-group-indent {\n margin-left: 24px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-column-select-add-group-indent {\n margin-right: 24px;\n}\n\n.ag-theme-balham-dark .ag-column-select-virtual-list-viewport {\n padding: 3px 0px;\n}\n.ag-theme-balham-dark .ag-column-select-virtual-list-item {\n padding: 0 6px;\n}\n.ag-theme-balham-dark .ag-rtl {\n text-align: right;\n}\n.ag-theme-balham-dark .ag-root-wrapper {\n border: solid 1px;\n border-color: #424242;\n border-color: var(--ag-border-color, #424242);\n}\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-1 {\n padding-left: 40px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-1 {\n padding-right: 40px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-1 {\n padding-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-1 {\n padding-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-1 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-1 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-2 {\n padding-left: 68px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-2 {\n padding-right: 68px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-2 {\n padding-left: 56px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-2 {\n padding-right: 56px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-2 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-2 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-3 {\n padding-left: 96px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-3 {\n padding-right: 96px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-3 {\n padding-left: 84px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-3 {\n padding-right: 84px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-3 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-3 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-4 {\n padding-left: 124px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-4 {\n padding-right: 124px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-4 {\n padding-left: 112px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-4 {\n padding-right: 112px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-4 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-4 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-5 {\n padding-left: 152px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-5 {\n padding-right: 152px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-5 {\n padding-left: 140px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-5 {\n padding-right: 140px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-5 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-5 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-6 {\n padding-left: 180px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-6 {\n padding-right: 180px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-6 {\n padding-left: 168px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-6 {\n padding-right: 168px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-6 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-6 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-7 {\n padding-left: 208px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-7 {\n padding-right: 208px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-7 {\n padding-left: 196px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-7 {\n padding-right: 196px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-7 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-7 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-8 {\n padding-left: 236px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-8 {\n padding-right: 236px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-8 {\n padding-left: 224px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-8 {\n padding-right: 224px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-8 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-8 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-9 {\n padding-left: 264px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-9 {\n padding-right: 264px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-9 {\n padding-left: 252px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-9 {\n padding-right: 252px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-9 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-9 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-10 {\n padding-left: 292px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-10 {\n padding-right: 292px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-10 {\n padding-left: 280px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-10 {\n padding-right: 280px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-10 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-10 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-11 {\n padding-left: 320px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-11 {\n padding-right: 320px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-11 {\n padding-left: 308px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-11 {\n padding-right: 308px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-11 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-11 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-12 {\n padding-left: 348px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-12 {\n padding-right: 348px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-12 {\n padding-left: 336px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-12 {\n padding-right: 336px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-12 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-12 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-13 {\n padding-left: 376px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-13 {\n padding-right: 376px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-13 {\n padding-left: 364px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-13 {\n padding-right: 364px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-13 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-13 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-14 {\n padding-left: 404px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-14 {\n padding-right: 404px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-14 {\n padding-left: 392px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-14 {\n padding-right: 392px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-14 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-14 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-15 {\n padding-left: 432px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-15 {\n padding-right: 432px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-15 {\n padding-left: 420px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-15 {\n padding-right: 420px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-15 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-15 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-16 {\n padding-left: 460px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-16 {\n padding-right: 460px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-16 {\n padding-left: 448px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-16 {\n padding-right: 448px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-16 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-16 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-17 {\n padding-left: 488px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-17 {\n padding-right: 488px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-17 {\n padding-left: 476px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-17 {\n padding-right: 476px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-17 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-17 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-18 {\n padding-left: 516px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-18 {\n padding-right: 516px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-18 {\n padding-left: 504px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-18 {\n padding-right: 504px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-18 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-18 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-19 {\n padding-left: 544px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-19 {\n padding-right: 544px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-19 {\n padding-left: 532px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-19 {\n padding-right: 532px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-19 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-19 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-20 {\n padding-left: 572px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-20 {\n padding-right: 572px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-20 {\n padding-left: 560px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-20 {\n padding-right: 560px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-20 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-20 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-21 {\n padding-left: 600px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-21 {\n padding-right: 600px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-21 {\n padding-left: 588px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-21 {\n padding-right: 588px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-21 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-21 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-22 {\n padding-left: 628px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-22 {\n padding-right: 628px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-22 {\n padding-left: 616px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-22 {\n padding-right: 616px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-22 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-22 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-23 {\n padding-left: 656px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-23 {\n padding-right: 656px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-23 {\n padding-left: 644px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-23 {\n padding-right: 644px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-23 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-23 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-24 {\n padding-left: 684px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-24 {\n padding-right: 684px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-24 {\n padding-left: 672px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-24 {\n padding-right: 672px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-24 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-24 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-25 {\n padding-left: 712px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-25 {\n padding-right: 712px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-25 {\n padding-left: 700px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-25 {\n padding-right: 700px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-25 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-25 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-26 {\n padding-left: 740px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-26 {\n padding-right: 740px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-26 {\n padding-left: 728px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-26 {\n padding-right: 728px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-26 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-26 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-27 {\n padding-left: 768px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-27 {\n padding-right: 768px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-27 {\n padding-left: 756px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-27 {\n padding-right: 756px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-27 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-27 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-28 {\n padding-left: 796px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-28 {\n padding-right: 796px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-28 {\n padding-left: 784px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-28 {\n padding-right: 784px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-28 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-28 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-29 {\n padding-left: 824px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-29 {\n padding-right: 824px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-29 {\n padding-left: 812px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-29 {\n padding-right: 812px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-29 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-29 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-30 {\n padding-left: 852px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-30 {\n padding-right: 852px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-30 {\n padding-left: 840px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-30 {\n padding-right: 840px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-30 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-30 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-31 {\n padding-left: 880px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-31 {\n padding-right: 880px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-31 {\n padding-left: 868px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-31 {\n padding-right: 868px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-31 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-31 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-32 {\n padding-left: 908px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-32 {\n padding-right: 908px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-32 {\n padding-left: 896px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-32 {\n padding-right: 896px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-32 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-32 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-33 {\n padding-left: 936px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-33 {\n padding-right: 936px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-33 {\n padding-left: 924px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-33 {\n padding-right: 924px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-33 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-33 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-34 {\n padding-left: 964px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-34 {\n padding-right: 964px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-34 {\n padding-left: 952px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-34 {\n padding-right: 952px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-34 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-34 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-35 {\n padding-left: 992px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-35 {\n padding-right: 992px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-35 {\n padding-left: 980px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-35 {\n padding-right: 980px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-35 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-35 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-36 {\n padding-left: 1020px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-36 {\n padding-right: 1020px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-36 {\n padding-left: 1008px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-36 {\n padding-right: 1008px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-36 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-36 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-37 {\n padding-left: 1048px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-37 {\n padding-right: 1048px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-37 {\n padding-left: 1036px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-37 {\n padding-right: 1036px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-37 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-37 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-38 {\n padding-left: 1076px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-38 {\n padding-right: 1076px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-38 {\n padding-left: 1064px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-38 {\n padding-right: 1064px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-38 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-38 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-39 {\n padding-left: 1104px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-39 {\n padding-right: 1104px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-39 {\n padding-left: 1092px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-39 {\n padding-right: 1092px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-39 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-39 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-40 {\n padding-left: 1132px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-40 {\n padding-right: 1132px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-40 {\n padding-left: 1120px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-40 {\n padding-right: 1120px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-40 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-40 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-41 {\n padding-left: 1160px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-41 {\n padding-right: 1160px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-41 {\n padding-left: 1148px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-41 {\n padding-right: 1148px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-41 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-41 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-42 {\n padding-left: 1188px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-42 {\n padding-right: 1188px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-42 {\n padding-left: 1176px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-42 {\n padding-right: 1176px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-42 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-42 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-43 {\n padding-left: 1216px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-43 {\n padding-right: 1216px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-43 {\n padding-left: 1204px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-43 {\n padding-right: 1204px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-43 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-43 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-44 {\n padding-left: 1244px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-44 {\n padding-right: 1244px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-44 {\n padding-left: 1232px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-44 {\n padding-right: 1232px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-44 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-44 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-45 {\n padding-left: 1272px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-45 {\n padding-right: 1272px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-45 {\n padding-left: 1260px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-45 {\n padding-right: 1260px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-45 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-45 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-46 {\n padding-left: 1300px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-46 {\n padding-right: 1300px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-46 {\n padding-left: 1288px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-46 {\n padding-right: 1288px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-46 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-46 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-47 {\n padding-left: 1328px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-47 {\n padding-right: 1328px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-47 {\n padding-left: 1316px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-47 {\n padding-right: 1316px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-47 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-47 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-48 {\n padding-left: 1356px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-48 {\n padding-right: 1356px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-48 {\n padding-left: 1344px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-48 {\n padding-right: 1344px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-48 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-48 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-49 {\n padding-left: 1384px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-49 {\n padding-right: 1384px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-49 {\n padding-left: 1372px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-49 {\n padding-right: 1372px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-49 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-49 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-50 {\n padding-left: 1412px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-50 {\n padding-right: 1412px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-50 {\n padding-left: 1400px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-50 {\n padding-right: 1400px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-50 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-50 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-51 {\n padding-left: 1440px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-51 {\n padding-right: 1440px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-51 {\n padding-left: 1428px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-51 {\n padding-right: 1428px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-51 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-51 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-52 {\n padding-left: 1468px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-52 {\n padding-right: 1468px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-52 {\n padding-left: 1456px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-52 {\n padding-right: 1456px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-52 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-52 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-53 {\n padding-left: 1496px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-53 {\n padding-right: 1496px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-53 {\n padding-left: 1484px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-53 {\n padding-right: 1484px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-53 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-53 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-54 {\n padding-left: 1524px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-54 {\n padding-right: 1524px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-54 {\n padding-left: 1512px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-54 {\n padding-right: 1512px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-54 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-54 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-55 {\n padding-left: 1552px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-55 {\n padding-right: 1552px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-55 {\n padding-left: 1540px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-55 {\n padding-right: 1540px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-55 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-55 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-56 {\n padding-left: 1580px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-56 {\n padding-right: 1580px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-56 {\n padding-left: 1568px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-56 {\n padding-right: 1568px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-56 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-56 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-57 {\n padding-left: 1608px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-57 {\n padding-right: 1608px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-57 {\n padding-left: 1596px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-57 {\n padding-right: 1596px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-57 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-57 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-58 {\n padding-left: 1636px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-58 {\n padding-right: 1636px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-58 {\n padding-left: 1624px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-58 {\n padding-right: 1624px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-58 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-58 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-59 {\n padding-left: 1664px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-59 {\n padding-right: 1664px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-59 {\n padding-left: 1652px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-59 {\n padding-right: 1652px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-59 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-59 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-60 {\n padding-left: 1692px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-60 {\n padding-right: 1692px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-60 {\n padding-left: 1680px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-60 {\n padding-right: 1680px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-60 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-60 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-61 {\n padding-left: 1720px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-61 {\n padding-right: 1720px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-61 {\n padding-left: 1708px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-61 {\n padding-right: 1708px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-61 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-61 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-62 {\n padding-left: 1748px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-62 {\n padding-right: 1748px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-62 {\n padding-left: 1736px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-62 {\n padding-right: 1736px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-62 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-62 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-63 {\n padding-left: 1776px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-63 {\n padding-right: 1776px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-63 {\n padding-left: 1764px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-63 {\n padding-right: 1764px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-63 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-63 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-64 {\n padding-left: 1804px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-64 {\n padding-right: 1804px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-64 {\n padding-left: 1792px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-64 {\n padding-right: 1792px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-64 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-64 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-65 {\n padding-left: 1832px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-65 {\n padding-right: 1832px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-65 {\n padding-left: 1820px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-65 {\n padding-right: 1820px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-65 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-65 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-66 {\n padding-left: 1860px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-66 {\n padding-right: 1860px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-66 {\n padding-left: 1848px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-66 {\n padding-right: 1848px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-66 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-66 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-67 {\n padding-left: 1888px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-67 {\n padding-right: 1888px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-67 {\n padding-left: 1876px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-67 {\n padding-right: 1876px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-67 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-67 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-68 {\n padding-left: 1916px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-68 {\n padding-right: 1916px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-68 {\n padding-left: 1904px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-68 {\n padding-right: 1904px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-68 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-68 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-69 {\n padding-left: 1944px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-69 {\n padding-right: 1944px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-69 {\n padding-left: 1932px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-69 {\n padding-right: 1932px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-69 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-69 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-70 {\n padding-left: 1972px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-70 {\n padding-right: 1972px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-70 {\n padding-left: 1960px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-70 {\n padding-right: 1960px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-70 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-70 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-71 {\n padding-left: 2000px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-71 {\n padding-right: 2000px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-71 {\n padding-left: 1988px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-71 {\n padding-right: 1988px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-71 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-71 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-72 {\n padding-left: 2028px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-72 {\n padding-right: 2028px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-72 {\n padding-left: 2016px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-72 {\n padding-right: 2016px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-72 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-72 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-73 {\n padding-left: 2056px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-73 {\n padding-right: 2056px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-73 {\n padding-left: 2044px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-73 {\n padding-right: 2044px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-73 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-73 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-74 {\n padding-left: 2084px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-74 {\n padding-right: 2084px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-74 {\n padding-left: 2072px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-74 {\n padding-right: 2072px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-74 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-74 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-75 {\n padding-left: 2112px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-75 {\n padding-right: 2112px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-75 {\n padding-left: 2100px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-75 {\n padding-right: 2100px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-75 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-75 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-76 {\n padding-left: 2140px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-76 {\n padding-right: 2140px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-76 {\n padding-left: 2128px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-76 {\n padding-right: 2128px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-76 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-76 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-77 {\n padding-left: 2168px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-77 {\n padding-right: 2168px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-77 {\n padding-left: 2156px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-77 {\n padding-right: 2156px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-77 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-77 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-78 {\n padding-left: 2196px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-78 {\n padding-right: 2196px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-78 {\n padding-left: 2184px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-78 {\n padding-right: 2184px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-78 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-78 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-79 {\n padding-left: 2224px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-79 {\n padding-right: 2224px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-79 {\n padding-left: 2212px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-79 {\n padding-right: 2212px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-79 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-79 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-80 {\n padding-left: 2252px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-80 {\n padding-right: 2252px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-80 {\n padding-left: 2240px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-80 {\n padding-right: 2240px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-80 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-80 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-81 {\n padding-left: 2280px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-81 {\n padding-right: 2280px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-81 {\n padding-left: 2268px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-81 {\n padding-right: 2268px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-81 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-81 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-82 {\n padding-left: 2308px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-82 {\n padding-right: 2308px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-82 {\n padding-left: 2296px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-82 {\n padding-right: 2296px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-82 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-82 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-83 {\n padding-left: 2336px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-83 {\n padding-right: 2336px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-83 {\n padding-left: 2324px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-83 {\n padding-right: 2324px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-83 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-83 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-84 {\n padding-left: 2364px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-84 {\n padding-right: 2364px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-84 {\n padding-left: 2352px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-84 {\n padding-right: 2352px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-84 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-84 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-85 {\n padding-left: 2392px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-85 {\n padding-right: 2392px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-85 {\n padding-left: 2380px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-85 {\n padding-right: 2380px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-85 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-85 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-86 {\n padding-left: 2420px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-86 {\n padding-right: 2420px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-86 {\n padding-left: 2408px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-86 {\n padding-right: 2408px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-86 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-86 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-87 {\n padding-left: 2448px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-87 {\n padding-right: 2448px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-87 {\n padding-left: 2436px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-87 {\n padding-right: 2436px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-87 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-87 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-88 {\n padding-left: 2476px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-88 {\n padding-right: 2476px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-88 {\n padding-left: 2464px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-88 {\n padding-right: 2464px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-88 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-88 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-89 {\n padding-left: 2504px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-89 {\n padding-right: 2504px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-89 {\n padding-left: 2492px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-89 {\n padding-right: 2492px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-89 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-89 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-90 {\n padding-left: 2532px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-90 {\n padding-right: 2532px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-90 {\n padding-left: 2520px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-90 {\n padding-right: 2520px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-90 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-90 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-91 {\n padding-left: 2560px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-91 {\n padding-right: 2560px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-91 {\n padding-left: 2548px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-91 {\n padding-right: 2548px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-91 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-91 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-92 {\n padding-left: 2588px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-92 {\n padding-right: 2588px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-92 {\n padding-left: 2576px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-92 {\n padding-right: 2576px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-92 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-92 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-93 {\n padding-left: 2616px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-93 {\n padding-right: 2616px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-93 {\n padding-left: 2604px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-93 {\n padding-right: 2604px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-93 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-93 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-94 {\n padding-left: 2644px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-94 {\n padding-right: 2644px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-94 {\n padding-left: 2632px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-94 {\n padding-right: 2632px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-94 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-94 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-95 {\n padding-left: 2672px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-95 {\n padding-right: 2672px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-95 {\n padding-left: 2660px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-95 {\n padding-right: 2660px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-95 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-95 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-96 {\n padding-left: 2700px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-96 {\n padding-right: 2700px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-96 {\n padding-left: 2688px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-96 {\n padding-right: 2688px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-96 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-96 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-97 {\n padding-left: 2728px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-97 {\n padding-right: 2728px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-97 {\n padding-left: 2716px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-97 {\n padding-right: 2716px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-97 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-97 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-98 {\n padding-left: 2756px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-98 {\n padding-right: 2756px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-98 {\n padding-left: 2744px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-98 {\n padding-right: 2744px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-98 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-98 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-99 {\n padding-left: 2784px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-99 {\n padding-right: 2784px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-indent-99 {\n padding-left: 2772px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-indent-99 {\n padding-right: 2772px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-level-99 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-level-99 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-row-group-leaf-indent {\n margin-left: 28px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-row-group-leaf-indent {\n margin-right: 28px;\n}\n\n.ag-theme-balham-dark .ag-value-change-delta {\n padding-right: 2px;\n}\n.ag-theme-balham-dark .ag-value-change-delta-up {\n color: #43a047;\n color: var(--ag-value-change-delta-up-color, #43a047);\n}\n.ag-theme-balham-dark .ag-value-change-delta-down {\n color: #e53935;\n color: var(--ag-value-change-delta-down-color, #e53935);\n}\n.ag-theme-balham-dark .ag-value-change-value {\n background-color: transparent;\n border-radius: 1px;\n padding-left: 1px;\n padding-right: 1px;\n -webkit-transition: background-color 1s;\n transition: background-color 1s;\n}\n.ag-theme-balham-dark .ag-value-change-value-highlight {\n background-color: rgba(22, 160, 133, 0.5);\n background-color: var(--ag-value-change-value-highlight-background-color, rgba(22, 160, 133, 0.5));\n -webkit-transition: background-color 0.1s;\n transition: background-color 0.1s;\n}\n.ag-theme-balham-dark .ag-cell-data-changed {\n background-color: rgba(22, 160, 133, 0.5) !important;\n background-color: var(--ag-value-change-value-highlight-background-color, rgba(22, 160, 133, 0.5)) !important;\n}\n.ag-theme-balham-dark .ag-cell-data-changed-animation {\n background-color: transparent;\n}\n.ag-theme-balham-dark .ag-cell-highlight {\n background-color: #00B0FF !important;\n background-color: var(--ag-range-selection-highlight-color, var(--ag-balham-active-color, #00B0FF)) !important;\n}\n.ag-theme-balham-dark .ag-row {\n height: 28px;\n background-color: #2d3436;\n background-color: var(--ag-background-color, #2d3436);\n color: #F5F5F5;\n color: var(--ag-data-color, var(--ag-foreground-color, #F5F5F5));\n border-width: 1px;\n border-color: #5c5c5c;\n border-color: var(--ag-row-border-color, #5c5c5c);\n border-bottom-style: solid;\n}\n.ag-theme-balham-dark .ag-row-highlight-above::after, .ag-theme-balham-dark .ag-row-highlight-below::after {\n content: \"\";\n position: absolute;\n width: calc(100% - 1px);\n height: 1px;\n background-color: #00B0FF;\n background-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #00B0FF));\n left: 1px;\n}\n.ag-theme-balham-dark .ag-row-highlight-above::after {\n top: -1px;\n}\n.ag-theme-balham-dark .ag-row-highlight-above.ag-row-first::after {\n top: 0;\n}\n.ag-theme-balham-dark .ag-row-highlight-below::after {\n bottom: 0px;\n}\n.ag-theme-balham-dark .ag-row-odd {\n background-color: #262c2e;\n background-color: var(--ag-odd-row-background-color, #262c2e);\n}\n.ag-theme-balham-dark .ag-body-horizontal-scroll:not(.ag-scrollbar-invisible) .ag-horizontal-left-spacer:not(.ag-scroller-corner) {\n border-right: solid 1px;\n border-right-color: #424242;\n border-right-color: var(--ag-border-color, #424242);\n}\n.ag-theme-balham-dark .ag-body-horizontal-scroll:not(.ag-scrollbar-invisible) .ag-horizontal-right-spacer:not(.ag-scroller-corner) {\n border-left: solid 1px;\n border-left-color: #424242;\n border-left-color: var(--ag-border-color, #424242);\n}\n.ag-theme-balham-dark .ag-row-hover {\n background-color: #3d4749;\n background-color: var(--ag-row-hover-color, #3d4749);\n}\n.ag-theme-balham-dark .ag-column-hover {\n background-color: #3d4749;\n background-color: var(--ag-column-hover-color, #3d4749);\n}\n.ag-theme-balham-dark .ag-ltr .ag-right-aligned-cell {\n text-align: right;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-right-aligned-cell {\n text-align: left;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-right-aligned-cell .ag-cell-value, .ag-theme-balham-dark .ag-ltr .ag-right-aligned-cell .ag-group-value {\n margin-left: auto;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-right-aligned-cell .ag-cell-value, .ag-theme-balham-dark .ag-rtl .ag-right-aligned-cell .ag-group-value {\n margin-right: auto;\n}\n\n.ag-theme-balham-dark .ag-cell, .ag-theme-balham-dark .ag-full-width-row .ag-cell-wrapper.ag-row-group {\n border: 1px solid transparent;\n line-height: min(var(--ag-line-height, 26px), 26px);\n padding-left: 11px;\n padding-right: 11px;\n -webkit-font-smoothing: subpixel-antialiased;\n}\n.ag-theme-balham-dark .ag-row > .ag-cell-wrapper {\n padding-left: 11px;\n padding-right: 11px;\n}\n.ag-theme-balham-dark .ag-row-dragging {\n cursor: move;\n opacity: 0.5;\n}\n.ag-theme-balham-dark .ag-cell-inline-editing {\n border: solid 1px;\n border-color: #424242;\n border-color: var(--ag-border-color, #424242);\n background: #2d3436;\n background: var(--ag-background-color, #2d3436);\n border-radius: 2px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n padding: 0;\n height: 28px;\n background-color: #202020;\n background-color: var(--ag-control-panel-background-color, #202020);\n}\n.ag-theme-balham-dark .ag-popup-editor {\n border: solid 1px;\n border-color: #424242;\n border-color: var(--ag-border-color, #424242);\n background: #2d3436;\n background: var(--ag-background-color, #2d3436);\n border-radius: 2px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n background-color: #202020;\n background-color: var(--ag-control-panel-background-color, #202020);\n padding: 0;\n}\n.ag-theme-balham-dark .ag-large-text-input {\n height: auto;\n padding: 12px;\n}\n.ag-theme-balham-dark .ag-details-row {\n padding: 20px;\n background-color: #2d3436;\n background-color: var(--ag-background-color, #2d3436);\n}\n.ag-theme-balham-dark .ag-layout-auto-height .ag-center-cols-clipper, .ag-theme-balham-dark .ag-layout-auto-height .ag-center-cols-container, .ag-theme-balham-dark .ag-layout-print .ag-center-cols-clipper, .ag-theme-balham-dark .ag-layout-print .ag-center-cols-container {\n min-height: 50px;\n}\n.ag-theme-balham-dark .ag-overlay-loading-wrapper {\n background-color: rgba(45, 52, 54, 0.66);\n background-color: var(--ag-modal-overlay-background-color, rgba(45, 52, 54, 0.66));\n}\n.ag-theme-balham-dark .ag-overlay-loading-center {\n border: solid 1px;\n border-color: #424242;\n border-color: var(--ag-border-color, #424242);\n background: #2d3436;\n background: var(--ag-background-color, #2d3436);\n border-radius: 2px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n}\n.ag-theme-balham-dark .ag-overlay-no-rows-wrapper.ag-layout-auto-height {\n padding-top: 30px;\n}\n.ag-theme-balham-dark .ag-loading {\n padding-left: 12px;\n display: -webkit-box;\n display: flex;\n height: 100%;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-balham-dark .ag-loading-icon {\n padding-right: 12px;\n}\n.ag-theme-balham-dark .ag-icon-loading {\n -webkit-animation-name: spin;\n animation-name: spin;\n -webkit-animation-duration: 1000ms;\n animation-duration: 1000ms;\n -webkit-animation-iteration-count: infinite;\n animation-iteration-count: infinite;\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n}\n@-webkit-keyframes spin {\n from {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@keyframes spin {\n from {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.ag-theme-balham-dark .ag-floating-top {\n border-bottom: solid 1px;\n border-bottom-color: #424242;\n border-bottom-color: var(--ag-border-color, #424242);\n}\n.ag-theme-balham-dark .ag-floating-bottom {\n border-top: solid 1px;\n border-top-color: #424242;\n border-top-color: var(--ag-border-color, #424242);\n}\n.ag-theme-balham-dark .ag-ltr .ag-cell {\n border-right: solid transparent;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-cell {\n border-left: solid transparent;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-cell {\n border-right-width: 1px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-cell {\n border-left-width: 1px;\n}\n\n.ag-theme-balham-dark .ag-cell.ag-cell-first-right-pinned:not(.ag-cell-range-left):not(.ag-cell-range-single-cell) {\n border-left: solid 1px;\n border-left-color: #424242;\n border-left-color: var(--ag-border-color, #424242);\n}\n.ag-theme-balham-dark .ag-cell.ag-cell-last-left-pinned:not(.ag-cell-range-right):not(.ag-cell-range-single-cell) {\n border-right: solid 1px;\n border-right-color: #424242;\n border-right-color: var(--ag-border-color, #424242);\n}\n.ag-theme-balham-dark .ag-row-selected {\n background-color: #005880;\n background-color: var(--ag-selected-row-background-color, #005880);\n}\n.ag-theme-balham-dark .ag-cell-range-selected:not(.ag-cell-focus),\n.ag-theme-balham-dark .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing) {\n background-color: rgba(0, 176, 255, 0.2);\n background-color: var(--ag-range-selection-background-color, rgba(0, 176, 255, 0.2));\n}\n.ag-theme-balham-dark .ag-cell-range-selected:not(.ag-cell-focus).ag-cell-range-chart,\n.ag-theme-balham-dark .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing).ag-cell-range-chart {\n background-color: rgba(45, 166, 255, 0.5) !important;\n background-color: var(--ag-range-selection-chart-background-color, rgba(45, 166, 255, 0.5)) !important;\n}\n.ag-theme-balham-dark .ag-cell-range-selected:not(.ag-cell-focus).ag-cell-range-chart.ag-cell-range-chart-category,\n.ag-theme-balham-dark .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing).ag-cell-range-chart.ag-cell-range-chart-category {\n background-color: rgba(26, 177, 74, 0.5) !important;\n background-color: var(--ag-range-selection-chart-category-background-color, rgba(26, 177, 74, 0.5)) !important;\n}\n.ag-theme-balham-dark .ag-cell-range-selected-1:not(.ag-cell-focus),\n.ag-theme-balham-dark .ag-root:not(.ag-context-menu-open) .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-1:not(.ag-cell-inline-editing) {\n background-color: rgba(0, 176, 255, 0.2);\n background-color: var(--ag-range-selection-background-color-1, var(--ag-range-selection-background-color, rgba(0, 176, 255, 0.2)));\n}\n.ag-theme-balham-dark .ag-cell-range-selected-2:not(.ag-cell-focus),\n.ag-theme-balham-dark .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-2 {\n background-color: rgba(0, 176, 255, 0.36);\n background-color: var(--ag-range-selection-background-color-2, rgba(0, 176, 255, 0.36));\n}\n.ag-theme-balham-dark .ag-cell-range-selected-3:not(.ag-cell-focus),\n.ag-theme-balham-dark .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-3 {\n background-color: rgba(0, 176, 255, 0.488);\n background-color: var(--ag-range-selection-background-color-3, rgba(0, 176, 255, 0.488));\n}\n.ag-theme-balham-dark .ag-cell-range-selected-4:not(.ag-cell-focus),\n.ag-theme-balham-dark .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-4 {\n background-color: rgba(0, 176, 255, 0.5904);\n background-color: var(--ag-range-selection-background-color-4, rgba(0, 176, 255, 0.5904));\n}\n.ag-theme-balham-dark .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-top {\n border-top-color: #00B0FF;\n border-top-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #00B0FF));\n}\n.ag-theme-balham-dark .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-right {\n border-right-color: #00B0FF;\n border-right-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #00B0FF));\n}\n.ag-theme-balham-dark .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-bottom {\n border-bottom-color: #00B0FF;\n border-bottom-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #00B0FF));\n}\n.ag-theme-balham-dark .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-left {\n border-left-color: #00B0FF;\n border-left-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #00B0FF));\n}\n.ag-theme-balham-dark .ag-ltr .ag-has-focus .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-balham-dark .ag-ltr .ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-balham-dark .ag-ltr .ag-has-focus .ag-full-width-row.ag-row-focus .ag-cell-wrapper.ag-row-group,\n.ag-theme-balham-dark .ag-ltr .ag-cell-range-single-cell,\n.ag-theme-balham-dark .ag-ltr .ag-cell-range-single-cell.ag-cell-range-handle, .ag-theme-balham-dark .ag-rtl .ag-has-focus .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-balham-dark .ag-rtl .ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-balham-dark .ag-rtl .ag-has-focus .ag-full-width-row.ag-row-focus .ag-cell-wrapper.ag-row-group,\n.ag-theme-balham-dark .ag-rtl .ag-cell-range-single-cell,\n.ag-theme-balham-dark .ag-rtl .ag-cell-range-single-cell.ag-cell-range-handle {\n border: 1px solid;\n border-color: #00B0FF;\n border-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #00B0FF));\n outline: initial;\n}\n.ag-theme-balham-dark .ag-cell.ag-selection-fill-top,\n.ag-theme-balham-dark .ag-cell.ag-selection-fill-top.ag-cell-range-selected {\n border-top: 1px dashed;\n border-top-color: #00B0FF;\n border-top-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #00B0FF));\n}\n.ag-theme-balham-dark .ag-ltr .ag-cell.ag-selection-fill-right, .ag-theme-balham-dark .ag-ltr .ag-cell.ag-selection-fill-right.ag-cell-range-selected {\n border-right: 1px dashed;\n border-right-color: #00B0FF;\n border-right-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #00B0FF));\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-cell.ag-selection-fill-right, .ag-theme-balham-dark .ag-rtl .ag-cell.ag-selection-fill-right.ag-cell-range-selected {\n border-left: 1px dashed;\n border-left-color: #00B0FF;\n border-left-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #00B0FF));\n}\n\n.ag-theme-balham-dark .ag-cell.ag-selection-fill-bottom,\n.ag-theme-balham-dark .ag-cell.ag-selection-fill-bottom.ag-cell-range-selected {\n border-bottom: 1px dashed;\n border-bottom-color: #00B0FF;\n border-bottom-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #00B0FF));\n}\n.ag-theme-balham-dark .ag-ltr .ag-cell.ag-selection-fill-left, .ag-theme-balham-dark .ag-ltr .ag-cell.ag-selection-fill-left.ag-cell-range-selected {\n border-left: 1px dashed;\n border-left-color: #00B0FF;\n border-left-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #00B0FF));\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-cell.ag-selection-fill-left, .ag-theme-balham-dark .ag-rtl .ag-cell.ag-selection-fill-left.ag-cell-range-selected {\n border-right: 1px dashed;\n border-right-color: #00B0FF;\n border-right-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #00B0FF));\n}\n\n.ag-theme-balham-dark .ag-range-handle, .ag-theme-balham-dark .ag-fill-handle {\n position: absolute;\n width: 6px;\n height: 6px;\n bottom: -1px;\n background-color: #00B0FF;\n background-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #00B0FF));\n}\n.ag-theme-balham-dark .ag-ltr .ag-range-handle, .ag-theme-balham-dark .ag-ltr .ag-fill-handle {\n right: -1px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-range-handle, .ag-theme-balham-dark .ag-rtl .ag-fill-handle {\n left: -1px;\n}\n\n.ag-theme-balham-dark .ag-fill-handle {\n cursor: cell;\n}\n.ag-theme-balham-dark .ag-range-handle {\n cursor: nwse-resize;\n}\n.ag-theme-balham-dark .ag-cell-inline-editing {\n border-color: #719ECE !important;\n border-color: var(--ag-input-focus-border-color, #719ECE) !important;\n}\n.ag-theme-balham-dark .ag-menu {\n border: solid 1px;\n border-color: #424242;\n border-color: var(--ag-border-color, #424242);\n background: #2d3436;\n background: var(--ag-background-color, #2d3436);\n border-radius: 2px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n padding: 0;\n}\n.ag-theme-balham-dark .ag-menu-list {\n cursor: default;\n padding: 4px 0;\n}\n.ag-theme-balham-dark .ag-menu-separator {\n height: 9px;\n}\n.ag-theme-balham-dark .ag-menu-separator-part::after {\n content: \"\";\n display: block;\n border-top: solid 1px;\n border-top-color: #424242;\n border-top-color: var(--ag-border-color, #424242);\n}\n.ag-theme-balham-dark .ag-menu-option-active, .ag-theme-balham-dark .ag-compact-menu-option-active {\n background-color: #3d4749;\n background-color: var(--ag-row-hover-color, #3d4749);\n}\n.ag-theme-balham-dark .ag-menu-option-part, .ag-theme-balham-dark .ag-compact-menu-option-part {\n line-height: 16px;\n padding: 6px 0;\n}\n.ag-theme-balham-dark .ag-menu-option-disabled, .ag-theme-balham-dark .ag-compact-menu-option-disabled {\n opacity: 0.5;\n}\n.ag-theme-balham-dark .ag-menu-option-icon, .ag-theme-balham-dark .ag-compact-menu-option-icon {\n width: 16px;\n}\n.ag-theme-balham-dark .ag-ltr .ag-menu-option-icon, .ag-theme-balham-dark .ag-ltr .ag-compact-menu-option-icon {\n padding-left: 8px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-menu-option-icon, .ag-theme-balham-dark .ag-rtl .ag-compact-menu-option-icon {\n padding-right: 8px;\n}\n\n.ag-theme-balham-dark .ag-menu-option-text, .ag-theme-balham-dark .ag-compact-menu-option-text {\n padding-left: 8px;\n padding-right: 8px;\n}\n.ag-theme-balham-dark .ag-ltr .ag-menu-option-shortcut, .ag-theme-balham-dark .ag-ltr .ag-compact-menu-option-shortcut {\n padding-right: 4px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-menu-option-shortcut, .ag-theme-balham-dark .ag-rtl .ag-compact-menu-option-shortcut {\n padding-left: 4px;\n}\n\n.ag-theme-balham-dark .ag-menu-option-popup-pointer, .ag-theme-balham-dark .ag-compact-menu-option-popup-pointer {\n padding-right: 4px;\n}\n.ag-theme-balham-dark .ag-tabs {\n min-width: 220px;\n}\n.ag-theme-balham-dark .ag-tabs-header {\n width: 100%;\n display: -webkit-box;\n display: flex;\n}\n.ag-theme-balham-dark .ag-tab {\n border-bottom: 0 solid transparent;\n display: -webkit-box;\n display: flex;\n -webkit-box-flex: 0;\n flex: none;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n cursor: pointer;\n}\n.ag-theme-balham-dark .ag-keyboard-focus .ag-tab:focus {\n outline: none;\n}\n.ag-theme-balham-dark .ag-keyboard-focus .ag-tab:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham-dark .ag-tab-selected {\n border-bottom-color: #00B0FF;\n border-bottom-color: var(--ag-selected-tab-underline-color, var(--ag-range-selection-border-color, var(--ag-balham-active-color, #00B0FF)));\n}\n.ag-theme-balham-dark .ag-menu-header {\n color: #F5F5F5;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #F5F5F5));\n}\n.ag-theme-balham-dark .ag-filter-separator {\n border-top: solid 1px;\n border-top-color: #424242;\n border-top-color: var(--ag-border-color, #424242);\n}\n.ag-theme-balham-dark .ag-menu:not(.ag-tabs) .ag-filter-select {\n min-width: 167px;\n}\n.ag-theme-balham-dark .ag-tabs .ag-filter-select {\n min-width: 206px;\n}\n.ag-theme-balham-dark .ag-filter-select .ag-picker-field-wrapper {\n width: 0;\n}\n.ag-theme-balham-dark .ag-filter-condition-operator {\n height: 17px;\n}\n.ag-theme-balham-dark .ag-ltr .ag-filter-condition-operator-or {\n margin-left: 8px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-filter-condition-operator-or {\n margin-right: 8px;\n}\n\n.ag-theme-balham-dark .ag-set-filter-select-all {\n padding-top: 6px;\n}\n.ag-theme-balham-dark .ag-set-filter-list, .ag-theme-balham-dark .ag-filter-no-matches {\n height: 144px;\n}\n.ag-theme-balham-dark .ag-set-filter-filter {\n margin-top: 6px;\n margin-left: 6px;\n margin-right: 6px;\n}\n.ag-theme-balham-dark .ag-filter-to {\n margin-top: 4px;\n}\n.ag-theme-balham-dark .ag-mini-filter {\n margin: 6px 6px;\n}\n.ag-theme-balham-dark .ag-set-filter-item {\n margin: 0px 6px;\n}\n.ag-theme-balham-dark .ag-ltr .ag-set-filter-item-value {\n margin-left: 6px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-set-filter-item-value {\n margin-right: 6px;\n}\n\n.ag-theme-balham-dark .ag-filter-apply-panel {\n padding: 6px 6px;\n border-top: solid 1px;\n border-top-color: #424242;\n border-top-color: var(--ag-secondary-border-color, var(--ag-border-color, #424242));\n}\n.ag-theme-balham-dark .ag-filter-apply-panel-button {\n line-height: 1.5;\n}\n.ag-theme-balham-dark .ag-ltr .ag-filter-apply-panel-button {\n margin-left: 8px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-filter-apply-panel-button {\n margin-right: 8px;\n}\n\n.ag-theme-balham-dark .ag-simple-filter-body-wrapper {\n padding: 6px 6px;\n padding-bottom: 2px;\n}\n.ag-theme-balham-dark .ag-simple-filter-body-wrapper > * {\n margin-bottom: 4px;\n}\n.ag-theme-balham-dark .ag-filter-no-matches {\n padding: 6px 6px;\n}\n.ag-theme-balham-dark .ag-multi-filter-menu-item {\n margin: 4px 0;\n}\n.ag-theme-balham-dark .ag-multi-filter-group-title-bar {\n padding: 8px 4px;\n background-color: transparent;\n}\n.ag-theme-balham-dark .ag-keyboard-focus .ag-multi-filter-group-title-bar:focus {\n outline: none;\n}\n.ag-theme-balham-dark .ag-keyboard-focus .ag-multi-filter-group-title-bar:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham-dark .ag-side-bar {\n position: relative;\n}\n.ag-theme-balham-dark .ag-tool-panel-wrapper {\n width: 200px;\n background-color: #202020;\n background-color: var(--ag-control-panel-background-color, #202020);\n}\n.ag-theme-balham-dark .ag-side-buttons {\n padding-top: 16px;\n width: 20px;\n position: relative;\n color: #F5F5F5;\n color: var(--ag-foreground-color, #F5F5F5);\n overflow: hidden;\n}\n.ag-theme-balham-dark button.ag-side-button-button {\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n background: transparent;\n padding: 8px 0 8px 0;\n width: calc(100% + 1px);\n margin: 0;\n min-height: 72px;\n background-position-y: center;\n background-position-x: center;\n background-repeat: no-repeat;\n border: none;\n border-top: solid 1px;\n border-top-color: #424242;\n border-top-color: var(--ag-border-color, #424242);\n border-bottom: solid 1px;\n border-bottom-color: #424242;\n border-bottom-color: var(--ag-border-color, #424242);\n}\n.ag-theme-balham-dark button.ag-side-button-button:focus {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.ag-theme-balham-dark .ag-keyboard-focus .ag-side-button-button:focus {\n outline: none;\n}\n.ag-theme-balham-dark .ag-keyboard-focus .ag-side-button-button:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham-dark .ag-selected .ag-side-button-button {\n background-color: #202020;\n background-color: var(--ag-control-panel-background-color, #202020);\n border-top-color: #424242;\n border-top-color: var(--ag-border-color, #424242);\n border-bottom-color: #424242;\n border-bottom-color: var(--ag-border-color, #424242);\n}\n.ag-theme-balham-dark .ag-side-button-icon-wrapper {\n margin-bottom: 3px;\n}\n.ag-theme-balham-dark .ag-ltr .ag-side-bar-left,\n.ag-theme-balham-dark .ag-rtl .ag-side-bar-right {\n border-right: solid 1px;\n border-right-color: #424242;\n border-right-color: var(--ag-border-color, #424242);\n}\n.ag-theme-balham-dark .ag-ltr .ag-side-bar-left .ag-tool-panel-wrapper,\n.ag-theme-balham-dark .ag-rtl .ag-side-bar-right .ag-tool-panel-wrapper {\n border-left: solid 1px;\n border-left-color: #424242;\n border-left-color: var(--ag-border-color, #424242);\n}\n.ag-theme-balham-dark .ag-ltr .ag-side-bar-left .ag-side-button-button,\n.ag-theme-balham-dark .ag-rtl .ag-side-bar-right .ag-side-button-button {\n border-right: 0 solid transparent;\n margin-right: -1px;\n padding-right: 1px;\n}\n.ag-theme-balham-dark .ag-ltr .ag-side-bar-left .ag-selected .ag-side-button-button,\n.ag-theme-balham-dark .ag-rtl .ag-side-bar-right .ag-selected .ag-side-button-button {\n border-right-color: #00B0FF;\n border-right-color: var(--ag-selected-tab-underline-color, var(--ag-range-selection-border-color, var(--ag-balham-active-color, #00B0FF)));\n}\n.ag-theme-balham-dark .ag-rtl .ag-side-bar-left,\n.ag-theme-balham-dark .ag-ltr .ag-side-bar-right {\n border-left: solid 1px;\n border-left-color: #424242;\n border-left-color: var(--ag-border-color, #424242);\n}\n.ag-theme-balham-dark .ag-rtl .ag-side-bar-left .ag-tool-panel-wrapper,\n.ag-theme-balham-dark .ag-ltr .ag-side-bar-right .ag-tool-panel-wrapper {\n border-right: solid 1px;\n border-right-color: #424242;\n border-right-color: var(--ag-border-color, #424242);\n}\n.ag-theme-balham-dark .ag-rtl .ag-side-bar-left .ag-side-button-button,\n.ag-theme-balham-dark .ag-ltr .ag-side-bar-right .ag-side-button-button {\n border-left: 0 solid transparent;\n margin-left: -1px;\n padding-left: 1px;\n}\n.ag-theme-balham-dark .ag-rtl .ag-side-bar-left .ag-selected .ag-side-button-button,\n.ag-theme-balham-dark .ag-ltr .ag-side-bar-right .ag-selected .ag-side-button-button {\n border-left-color: #00B0FF;\n border-left-color: var(--ag-selected-tab-underline-color, var(--ag-range-selection-border-color, var(--ag-balham-active-color, #00B0FF)));\n}\n.ag-theme-balham-dark .ag-filter-toolpanel-header {\n height: 24px;\n}\n.ag-theme-balham-dark .ag-ltr .ag-filter-toolpanel-header, .ag-theme-balham-dark .ag-ltr .ag-filter-toolpanel-search {\n padding-left: 4px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-filter-toolpanel-header, .ag-theme-balham-dark .ag-rtl .ag-filter-toolpanel-search {\n padding-right: 4px;\n}\n\n.ag-theme-balham-dark .ag-keyboard-focus .ag-filter-toolpanel-header:focus {\n outline: none;\n}\n.ag-theme-balham-dark .ag-keyboard-focus .ag-filter-toolpanel-header:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham-dark .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n font-family: \"agGridBalham\";\n font-size: 16px;\n line-height: 16px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n content: \"\\f114\";\n position: absolute;\n}\n.ag-theme-balham-dark .ag-ltr .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n padding-left: 4px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n padding-right: 4px;\n}\n\n.ag-theme-balham-dark .ag-filter-toolpanel-group-level-0-header {\n height: 32px;\n}\n.ag-theme-balham-dark .ag-filter-toolpanel-group-item {\n margin-top: 2px;\n margin-bottom: 2px;\n}\n.ag-theme-balham-dark .ag-filter-toolpanel-search {\n height: 32px;\n}\n.ag-theme-balham-dark .ag-filter-toolpanel-search-input {\n -webkit-box-flex: 1;\n flex-grow: 1;\n height: 16px;\n}\n.ag-theme-balham-dark .ag-ltr .ag-filter-toolpanel-search-input {\n margin-right: 4px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-filter-toolpanel-search-input {\n margin-left: 4px;\n}\n\n.ag-theme-balham-dark .ag-filter-toolpanel-group-level-0 {\n border-top: solid 1px;\n border-top-color: #424242;\n border-top-color: var(--ag-secondary-border-color, var(--ag-border-color, #424242));\n}\n.ag-theme-balham-dark .ag-ltr .ag-filter-toolpanel-expand, .ag-theme-balham-dark .ag-ltr .ag-filter-toolpanel-group-title-bar-icon {\n margin-right: 4px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-filter-toolpanel-expand, .ag-theme-balham-dark .ag-rtl .ag-filter-toolpanel-group-title-bar-icon {\n margin-left: 4px;\n}\n\n.ag-theme-balham-dark .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-1-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-balham-dark .ag-ltr .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-2-header {\n padding-left: 20px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-2-header {\n padding-right: 20px;\n}\n\n.ag-theme-balham-dark .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-2-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-balham-dark .ag-ltr .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-3-header {\n padding-left: 36px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-3-header {\n padding-right: 36px;\n}\n\n.ag-theme-balham-dark .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-3-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-balham-dark .ag-ltr .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-4-header {\n padding-left: 52px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-4-header {\n padding-right: 52px;\n}\n\n.ag-theme-balham-dark .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-4-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-balham-dark .ag-ltr .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-5-header {\n padding-left: 68px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-5-header {\n padding-right: 68px;\n}\n\n.ag-theme-balham-dark .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-5-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-balham-dark .ag-ltr .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-6-header {\n padding-left: 84px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-6-header {\n padding-right: 84px;\n}\n\n.ag-theme-balham-dark .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-6-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-balham-dark .ag-ltr .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-7-header {\n padding-left: 100px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-7-header {\n padding-right: 100px;\n}\n\n.ag-theme-balham-dark .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-7-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-balham-dark .ag-ltr .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-8-header {\n padding-left: 116px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-8-header {\n padding-right: 116px;\n}\n\n.ag-theme-balham-dark .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-8-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-balham-dark .ag-ltr .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-9-header {\n padding-left: 132px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-9-header {\n padding-right: 132px;\n}\n\n.ag-theme-balham-dark .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-9-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-balham-dark .ag-ltr .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-10-header {\n padding-left: 148px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-10-header {\n padding-right: 148px;\n}\n\n.ag-theme-balham-dark .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-10-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-balham-dark .ag-ltr .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-11-header {\n padding-left: 164px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-11-header {\n padding-right: 164px;\n}\n\n.ag-theme-balham-dark .ag-filter-toolpanel-instance-header.ag-filter-toolpanel-group-level-1-header {\n padding-left: 4px;\n}\n.ag-theme-balham-dark .ag-filter-toolpanel-instance-filter {\n border-top: solid 1px;\n border-top-color: #424242;\n border-top-color: var(--ag-border-color, #424242);\n border-bottom: solid 1px;\n border-bottom-color: #424242;\n border-bottom-color: var(--ag-border-color, #424242);\n margin-top: 4px;\n}\n.ag-theme-balham-dark .ag-ltr .ag-filter-toolpanel-instance-header-icon {\n margin-left: 4px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-filter-toolpanel-instance-header-icon {\n margin-right: 4px;\n}\n\n.ag-theme-balham-dark .ag-pivot-mode-panel {\n min-height: 32px;\n height: 32px;\n display: -webkit-box;\n display: flex;\n}\n.ag-theme-balham-dark .ag-pivot-mode-select {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-balham-dark .ag-ltr .ag-pivot-mode-select {\n margin-left: 6px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-pivot-mode-select {\n margin-right: 6px;\n}\n\n.ag-theme-balham-dark .ag-keyboard-focus .ag-column-select-header:focus {\n outline: none;\n}\n.ag-theme-balham-dark .ag-keyboard-focus .ag-column-select-header:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham-dark .ag-column-select-header {\n height: 32px;\n -webkit-box-align: center;\n align-items: center;\n padding: 0 6px;\n border-bottom: solid 1px;\n border-bottom-color: #424242;\n border-bottom-color: var(--ag-secondary-border-color, var(--ag-border-color, #424242));\n}\n.ag-theme-balham-dark .ag-column-panel-column-select {\n border-bottom: solid 1px;\n border-bottom-color: #424242;\n border-bottom-color: var(--ag-secondary-border-color, var(--ag-border-color, #424242));\n border-top: solid 1px;\n border-top-color: #424242;\n border-top-color: var(--ag-secondary-border-color, var(--ag-border-color, #424242));\n}\n.ag-theme-balham-dark .ag-column-group-icons,\n.ag-theme-balham-dark .ag-column-select-header-icon {\n color: #F5F5F5;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #F5F5F5));\n}\n.ag-theme-balham-dark .ag-column-select-list .ag-list-item-hovered::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n height: 1px;\n background-color: #00B0FF;\n background-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #00B0FF));\n}\n.ag-theme-balham-dark .ag-column-select-list .ag-item-highlight-top::after {\n top: 0;\n}\n.ag-theme-balham-dark .ag-column-select-list .ag-item-highlight-bottom::after {\n bottom: 0;\n}\n.ag-theme-balham-dark .ag-header {\n background-color: #1c1c1c;\n background-color: var(--ag-header-background-color, #1c1c1c);\n border-bottom: solid 1px;\n border-bottom-color: #424242;\n border-bottom-color: var(--ag-border-color, #424242);\n}\n.ag-theme-balham-dark .ag-header-row {\n color: rgba(245, 245, 245, 0.64);\n color: var(--ag-header-foreground-color, rgba(245, 245, 245, 0.64));\n height: 32px;\n}\n.ag-theme-balham-dark .ag-pinned-right-header {\n border-left: solid 1px;\n border-left-color: #424242;\n border-left-color: var(--ag-border-color, #424242);\n}\n.ag-theme-balham-dark .ag-pinned-left-header {\n border-right: solid 1px;\n border-right-color: #424242;\n border-right-color: var(--ag-border-color, #424242);\n}\n.ag-theme-balham-dark .ag-ltr .ag-header-cell:not(.ag-right-aligned-header) .ag-header-label-icon {\n margin-left: 4px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-header-cell:not(.ag-right-aligned-header) .ag-header-label-icon {\n margin-right: 4px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-header-cell.ag-right-aligned-header .ag-header-label-icon {\n margin-right: 4px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-header-cell.ag-right-aligned-header .ag-header-label-icon {\n margin-left: 4px;\n}\n\n.ag-theme-balham-dark .ag-header-cell,\n.ag-theme-balham-dark .ag-header-group-cell {\n padding-left: 12px;\n padding-right: 12px;\n}\n.ag-theme-balham-dark .ag-header-cell.ag-header-cell-moving,\n.ag-theme-balham-dark .ag-header-group-cell.ag-header-cell-moving {\n background-color: #2d3436;\n background-color: var(--ag-header-cell-moving-background-color, var(--ag-background-color, #2d3436));\n}\n.ag-theme-balham-dark .ag-keyboard-focus .ag-header-cell:focus {\n outline: none;\n}\n.ag-theme-balham-dark .ag-keyboard-focus .ag-header-cell:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham-dark .ag-keyboard-focus .ag-header-group-cell:focus {\n outline: none;\n}\n.ag-theme-balham-dark .ag-keyboard-focus .ag-header-group-cell:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham-dark .ag-header-icon {\n color: #F5F5F5;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #F5F5F5));\n}\n.ag-theme-balham-dark .ag-header-expand-icon {\n cursor: pointer;\n}\n.ag-theme-balham-dark .ag-ltr .ag-header-expand-icon {\n padding-left: 4px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-header-expand-icon {\n padding-right: 4px;\n}\n\n.ag-theme-balham-dark .ag-header-row:not(:first-child) .ag-header-cell,\n.ag-theme-balham-dark .ag-header-row:not(:first-child) .ag-header-group-cell.ag-header-group-cell-with-group {\n border-top: solid 1px;\n border-top-color: #424242;\n border-top-color: var(--ag-border-color, #424242);\n}\n.ag-theme-balham-dark .ag-header-cell::after,\n.ag-theme-balham-dark .ag-header-group-cell::after {\n content: \"\";\n position: absolute;\n z-index: 1;\n display: block;\n width: 1px;\n height: 50%;\n top: calc(50% - 25%);\n background-color: rgba(66, 66, 66, 0.5);\n background-color: var(--ag-header-column-separator-color, rgba(66, 66, 66, 0.5));\n}\n.ag-theme-balham-dark .ag-ltr .ag-header-cell::after, .ag-theme-balham-dark .ag-ltr .ag-header-group-cell::after {\n right: 0;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-header-cell::after, .ag-theme-balham-dark .ag-rtl .ag-header-group-cell::after {\n left: 0;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-header-select-all {\n margin-right: 12px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-header-select-all {\n margin-left: 12px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-floating-filter-button {\n margin-left: 12px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-floating-filter-button {\n margin-right: 12px;\n}\n\n.ag-theme-balham-dark .ag-floating-filter-button-button {\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background: transparent;\n border: none;\n height: 16px;\n padding: 0;\n width: 16px;\n}\n.ag-theme-balham-dark .ag-filter-loading {\n background-color: #202020;\n background-color: var(--ag-control-panel-background-color, #202020);\n height: 100%;\n padding: 6px 6px;\n position: absolute;\n width: 100%;\n z-index: 1;\n}\n.ag-theme-balham-dark .ag-paging-panel {\n border-top: 1px solid;\n border-top-color: #424242;\n border-top-color: var(--ag-border-color, #424242);\n color: #F5F5F5;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #F5F5F5));\n height: 32px;\n}\n.ag-theme-balham-dark .ag-paging-panel > * {\n margin: 0 12px;\n}\n.ag-theme-balham-dark .ag-paging-button {\n cursor: pointer;\n}\n.ag-theme-balham-dark .ag-paging-button.ag-disabled {\n cursor: default;\n color: rgba(245, 245, 245, 0.38);\n color: var(--ag-disabled-foreground-color, rgba(245, 245, 245, 0.38));\n}\n.ag-theme-balham-dark .ag-keyboard-focus .ag-paging-button:focus {\n outline: none;\n}\n.ag-theme-balham-dark .ag-keyboard-focus .ag-paging-button:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 0px;\n left: 0px;\n display: block;\n width: calc(100% - 0px);\n height: calc(100% - 0px);\n border: 1px solid;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham-dark .ag-paging-button, .ag-theme-balham-dark .ag-paging-description {\n margin: 0 4px;\n}\n.ag-theme-balham-dark .ag-status-bar {\n border-top: solid 1px;\n border-top-color: #424242;\n border-top-color: var(--ag-border-color, #424242);\n color: rgba(245, 245, 245, 0.38);\n color: var(--ag-disabled-foreground-color, rgba(245, 245, 245, 0.38));\n padding-right: 16px;\n padding-left: 16px;\n line-height: 1.5;\n}\n.ag-theme-balham-dark .ag-status-name-value-value {\n color: #F5F5F5;\n color: var(--ag-foreground-color, #F5F5F5);\n}\n.ag-theme-balham-dark .ag-status-bar-center {\n text-align: center;\n}\n.ag-theme-balham-dark .ag-status-name-value {\n margin-left: 4px;\n margin-right: 4px;\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.ag-theme-balham-dark .ag-column-drop-cell {\n background: #353535;\n background: var(--ag-chip-background-color, #353535);\n border-radius: 16px;\n height: 16px;\n padding: 0 2px;\n border: 1px solid transparent;\n}\n.ag-theme-balham-dark .ag-keyboard-focus .ag-column-drop-cell:focus {\n outline: none;\n}\n.ag-theme-balham-dark .ag-keyboard-focus .ag-column-drop-cell:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 2px;\n left: 2px;\n display: block;\n width: calc(100% - 4px);\n height: calc(100% - 4px);\n border: 1px solid;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham-dark .ag-column-drop-cell-text {\n margin: 0 4px;\n}\n.ag-theme-balham-dark .ag-column-drop-cell-button {\n min-width: 16px;\n margin: 0 2px;\n color: #F5F5F5;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #F5F5F5));\n}\n.ag-theme-balham-dark .ag-column-drop-cell-drag-handle {\n margin-left: 8px;\n}\n.ag-theme-balham-dark .ag-column-drop-cell-ghost {\n opacity: 0.5;\n}\n.ag-theme-balham-dark .ag-column-drop-horizontal {\n background-color: #202020;\n background-color: var(--ag-control-panel-background-color, #202020);\n color: #F5F5F5;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #F5F5F5));\n height: 28px;\n border-bottom: solid 1px;\n border-bottom-color: #424242;\n border-bottom-color: var(--ag-border-color, #424242);\n}\n.ag-theme-balham-dark .ag-ltr .ag-column-drop-horizontal {\n padding-left: 12px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-column-drop-horizontal {\n padding-right: 12px;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-column-drop-horizontal-half-width:not(:last-child) {\n border-right: solid 1px;\n border-right-color: #424242;\n border-right-color: var(--ag-border-color, #424242);\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-column-drop-horizontal-half-width:not(:last-child) {\n border-left: solid 1px;\n border-left-color: #424242;\n border-left-color: var(--ag-border-color, #424242);\n}\n\n.ag-theme-balham-dark .ag-column-drop-horizontal-cell-separator {\n margin: 0 4px;\n color: #F5F5F5;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #F5F5F5));\n}\n.ag-theme-balham-dark .ag-column-drop-horizontal-empty-message {\n color: rgba(245, 245, 245, 0.38);\n color: var(--ag-disabled-foreground-color, rgba(245, 245, 245, 0.38));\n}\n.ag-theme-balham-dark .ag-ltr .ag-column-drop-horizontal-icon {\n margin-right: 12px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-column-drop-horizontal-icon {\n margin-left: 12px;\n}\n\n.ag-theme-balham-dark .ag-column-drop-vertical-list {\n padding-bottom: 4px;\n padding-right: 4px;\n padding-left: 4px;\n}\n.ag-theme-balham-dark .ag-column-drop-vertical-cell {\n margin-top: 4px;\n}\n.ag-theme-balham-dark .ag-column-drop-vertical {\n min-height: 50px;\n border-bottom: solid 1px;\n border-bottom-color: #424242;\n border-bottom-color: var(--ag-secondary-border-color, var(--ag-border-color, #424242));\n}\n.ag-theme-balham-dark .ag-column-drop-vertical.ag-last-column-drop {\n border-bottom: none;\n}\n.ag-theme-balham-dark .ag-column-drop-vertical-icon {\n margin-left: 4px;\n margin-right: 4px;\n}\n.ag-theme-balham-dark .ag-column-drop-vertical-empty-message {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n overflow: hidden;\n color: rgba(245, 245, 245, 0.38);\n color: var(--ag-disabled-foreground-color, rgba(245, 245, 245, 0.38));\n margin-top: 4px;\n}\n.ag-theme-balham-dark .ag-select-agg-func-popup {\n border: solid 1px;\n border-color: #424242;\n border-color: var(--ag-border-color, #424242);\n background: #2d3436;\n background: var(--ag-background-color, #2d3436);\n border-radius: 2px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n background: #2d3436;\n background: var(--ag-background-color, #2d3436);\n height: 70px;\n padding: 0;\n}\n.ag-theme-balham-dark .ag-select-agg-func-virtual-list-item {\n cursor: default;\n padding-left: 8px;\n}\n.ag-theme-balham-dark .ag-select-agg-func-virtual-list-item:hover {\n background-color: #005880;\n background-color: var(--ag-selected-row-background-color, #005880);\n}\n.ag-theme-balham-dark .ag-keyboard-focus .ag-select-agg-func-virtual-list-item:focus {\n outline: none;\n}\n.ag-theme-balham-dark .ag-keyboard-focus .ag-select-agg-func-virtual-list-item:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 1px;\n left: 1px;\n display: block;\n width: calc(100% - 2px);\n height: calc(100% - 2px);\n border: 1px solid;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham-dark .ag-chart-menu {\n border-radius: 2px;\n background: #2d3436;\n background: var(--ag-background-color, #2d3436);\n}\n.ag-theme-balham-dark .ag-chart-menu-icon {\n opacity: 0.5;\n line-height: 24px;\n font-size: 24px;\n width: 24px;\n height: 24px;\n margin: 2px 0;\n cursor: pointer;\n border-radius: 2px;\n color: #F5F5F5;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #F5F5F5));\n}\n.ag-theme-balham-dark .ag-chart-menu-icon:hover {\n opacity: 1;\n}\n.ag-theme-balham-dark .ag-chart-mini-thumbnail {\n border: 1px solid;\n border-color: #424242;\n border-color: var(--ag-secondary-border-color, var(--ag-border-color, #424242));\n border-radius: 5px;\n margin: 5px;\n}\n.ag-theme-balham-dark .ag-chart-mini-thumbnail:nth-last-child(3), .ag-theme-balham-dark .ag-chart-mini-thumbnail:nth-last-child(3) ~ .ag-chart-mini-thumbnail {\n margin-left: auto;\n margin-right: auto;\n}\n.ag-theme-balham-dark .ag-ltr .ag-chart-mini-thumbnail:first-child {\n margin-left: 0;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-chart-mini-thumbnail:first-child {\n margin-right: 0;\n}\n\n.ag-theme-balham-dark .ag-ltr .ag-chart-mini-thumbnail:last-child {\n margin-right: 0;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-chart-mini-thumbnail:last-child {\n margin-left: 0;\n}\n\n.ag-theme-balham-dark .ag-chart-mini-thumbnail.ag-selected {\n border-color: #00B0FF;\n border-color: var(--ag-minichart-selected-chart-color, var(--ag-checkbox-checked-color, var(--ag-balham-active-color, #00B0FF)));\n}\n.ag-theme-balham-dark .ag-chart-settings-card-item {\n background: #F5F5F5;\n background: var(--ag-foreground-color, #F5F5F5);\n width: 8px;\n height: 8px;\n border-radius: 4px;\n}\n.ag-theme-balham-dark .ag-chart-settings-card-item.ag-selected {\n background-color: #00B0FF;\n background-color: var(--ag-minichart-selected-page-color, var(--ag-checkbox-checked-color, var(--ag-balham-active-color, #00B0FF)));\n}\n.ag-theme-balham-dark .ag-chart-data-column-drag-handle {\n margin-left: 4px;\n}\n.ag-theme-balham-dark .ag-charts-settings-group-title-bar,\n.ag-theme-balham-dark .ag-charts-data-group-title-bar,\n.ag-theme-balham-dark .ag-charts-format-top-level-group-title-bar {\n border-top: solid 1px;\n border-top-color: #424242;\n border-top-color: var(--ag-secondary-border-color, var(--ag-border-color, #424242));\n}\n.ag-theme-balham-dark .ag-charts-settings-group-container {\n padding: 4px;\n}\n.ag-theme-balham-dark .ag-charts-data-group-container {\n padding: 3px 6px;\n}\n.ag-theme-balham-dark .ag-charts-data-group-container .ag-charts-data-group-item:not(.ag-charts-format-sub-level-group) {\n height: 24px;\n}\n.ag-theme-balham-dark .ag-charts-data-group-container .ag-list-item-hovered::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n height: 1px;\n background-color: #00B0FF;\n background-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #00B0FF));\n}\n.ag-theme-balham-dark .ag-charts-data-group-container .ag-item-highlight-top::after {\n top: 0;\n}\n.ag-theme-balham-dark .ag-charts-data-group-container .ag-item-highlight-bottom::after {\n bottom: 0;\n}\n.ag-theme-balham-dark .ag-charts-format-top-level-group-container {\n margin-left: 8px;\n padding: 4px;\n}\n.ag-theme-balham-dark .ag-charts-format-top-level-group-item {\n margin: 4px 0;\n}\n.ag-theme-balham-dark .ag-charts-format-sub-level-group-container {\n padding: 6px 6px;\n padding-bottom: 2px;\n}\n.ag-theme-balham-dark .ag-charts-format-sub-level-group-container > * {\n margin-bottom: 4px;\n}\n.ag-theme-balham-dark .ag-charts-group-container.ag-group-container-horizontal {\n padding: 4px;\n}\n.ag-theme-balham-dark .ag-chart-data-section,\n.ag-theme-balham-dark .ag-chart-format-section {\n display: -webkit-box;\n display: flex;\n margin: 0;\n}\n.ag-theme-balham-dark .ag-chart-menu-panel {\n background-color: #202020;\n background-color: var(--ag-control-panel-background-color, #202020);\n}\n.ag-theme-balham-dark .ag-ltr .ag-chart-menu-panel {\n border-left: solid 1px;\n border-left-color: #424242;\n border-left-color: var(--ag-border-color, #424242);\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-chart-menu-panel {\n border-right: solid 1px;\n border-right-color: #424242;\n border-right-color: var(--ag-border-color, #424242);\n}\n\n.ag-theme-balham-dark .ag-date-time-list-page-title {\n -webkit-box-flex: 1;\n flex-grow: 1;\n text-align: center;\n}\n.ag-theme-balham-dark .ag-date-time-list-page-column-label {\n text-align: center;\n}\n.ag-theme-balham-dark .ag-date-time-list-page-entry {\n text-align: center;\n}\n.ag-theme-balham-dark .ag-checkbox-input-wrapper {\n font-family: \"agGridBalham\";\n font-size: 16px;\n line-height: 16px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 16px;\n height: 16px;\n background-color: #2d3436;\n background-color: var(--ag-checkbox-background-color, var(--ag-background-color, #2d3436));\n border-radius: 3px;\n display: inline-block;\n vertical-align: middle;\n -webkit-box-flex: 0;\n flex: none;\n}\n.ag-theme-balham-dark .ag-checkbox-input-wrapper input, .ag-theme-balham-dark .ag-checkbox-input-wrapper input {\n -webkit-appearance: none;\n opacity: 0;\n width: 100%;\n height: 100%;\n}\n.ag-theme-balham-dark .ag-checkbox-input-wrapper:focus-within, .ag-theme-balham-dark .ag-checkbox-input-wrapper:active {\n outline: none;\n -webkit-box-shadow: 0 0 4px 1.5px #719ECE;\n box-shadow: 0 0 4px 1.5px #719ECE;\n}\n.ag-theme-balham-dark .ag-checkbox-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-balham-dark .ag-checkbox-input-wrapper::after {\n content: \"\\f108\";\n color: #ecf0f1;\n color: var(--ag-checkbox-unchecked-color, #ecf0f1);\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-balham-dark .ag-checkbox-input-wrapper.ag-checked::after {\n content: \"\\f106\";\n color: #00B0FF;\n color: var(--ag-checkbox-checked-color, var(--ag-balham-active-color, #00B0FF));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-balham-dark .ag-checkbox-input-wrapper.ag-indeterminate::after {\n content: \"\\f107\";\n color: #ecf0f1;\n color: var(--ag-checkbox-indeterminate-color, var(--ag-checkbox-unchecked-color, #ecf0f1));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-balham-dark .ag-toggle-button-input-wrapper {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n width: 32px;\n height: 16px;\n background-color: transparent;\n background-color: var(--ag-toggle-button-off-background-color, transparent);\n border-radius: 8px;\n position: relative;\n -webkit-box-flex: 0;\n flex: none;\n border: 1px solid;\n border-color: #F5F5F5;\n border-color: var(--ag-toggle-button-off-border-color, var(--ag-foreground-color, #F5F5F5));\n}\n.ag-theme-balham-dark .ag-toggle-button-input-wrapper input {\n opacity: 0;\n height: 100%;\n width: 100%;\n}\n.ag-theme-balham-dark .ag-toggle-button-input-wrapper:focus-within {\n outline: none;\n -webkit-box-shadow: 0 0 4px 1.5px #719ECE;\n box-shadow: 0 0 4px 1.5px #719ECE;\n}\n.ag-theme-balham-dark .ag-toggle-button-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-balham-dark .ag-toggle-button-input-wrapper.ag-checked {\n background-color: #00B0FF;\n background-color: var(--ag-toggle-button-on-background-color, var(--ag-checkbox-checked-color, var(--ag-balham-active-color, #00B0FF)));\n border-color: #00B0FF;\n border-color: var(--ag-toggle-button-on-border-color, var(--ag-checkbox-checked-color, var(--ag-balham-active-color, #00B0FF)));\n}\n.ag-theme-balham-dark .ag-toggle-button-input-wrapper::before {\n content: \" \";\n position: absolute;\n top: -1px;\n left: -1px;\n display: block;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n height: 16px;\n width: 16px;\n background-color: #2d3436;\n background-color: var(--ag-toggle-button-switch-background-color, var(--ag-background-color, #2d3436));\n border-radius: 8px;\n -webkit-transition: left 100ms;\n transition: left 100ms;\n border: 1px solid;\n border-color: #F5F5F5;\n border-color: var(--ag-toggle-button-switch-border-color, var(--ag-toggle-button-off-border-color, var(--ag-foreground-color, #F5F5F5)));\n}\n.ag-theme-balham-dark .ag-toggle-button-input-wrapper.ag-checked::before {\n left: calc(100% - 16px );\n border-color: #00B0FF;\n border-color: var(--ag-toggle-button-on-border-color, var(--ag-checkbox-checked-color, var(--ag-balham-active-color, #00B0FF)));\n}\n.ag-theme-balham-dark .ag-radio-button-input-wrapper {\n font-family: \"agGridBalham\";\n font-size: 16px;\n line-height: 16px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 16px;\n height: 16px;\n background-color: #2d3436;\n background-color: var(--ag-checkbox-background-color, var(--ag-background-color, #2d3436));\n border-radius: 3px;\n display: inline-block;\n vertical-align: middle;\n -webkit-box-flex: 0;\n flex: none;\n border-radius: 16px;\n}\n.ag-theme-balham-dark .ag-radio-button-input-wrapper input, .ag-theme-balham-dark .ag-radio-button-input-wrapper input {\n -webkit-appearance: none;\n opacity: 0;\n width: 100%;\n height: 100%;\n}\n.ag-theme-balham-dark .ag-radio-button-input-wrapper:focus-within, .ag-theme-balham-dark .ag-radio-button-input-wrapper:active {\n outline: none;\n -webkit-box-shadow: 0 0 4px 1.5px #719ECE;\n box-shadow: 0 0 4px 1.5px #719ECE;\n}\n.ag-theme-balham-dark .ag-radio-button-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-balham-dark .ag-radio-button-input-wrapper::after {\n content: \"\\f126\";\n color: #ecf0f1;\n color: var(--ag-checkbox-unchecked-color, #ecf0f1);\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-balham-dark .ag-radio-button-input-wrapper.ag-checked::after {\n content: \"\\f127\";\n color: #00B0FF;\n color: var(--ag-checkbox-checked-color, var(--ag-balham-active-color, #00B0FF));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-balham-dark input[class^=ag-][type=range] {\n -webkit-appearance: none;\n width: 100%;\n height: 100%;\n background: none;\n overflow: visible;\n}\n.ag-theme-balham-dark input[class^=ag-][type=range]::-webkit-slider-runnable-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: #424242;\n background-color: var(--ag-border-color, #424242);\n border-radius: 2px;\n border-radius: 3px;\n}\n.ag-theme-balham-dark input[class^=ag-][type=range]::-moz-range-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: #424242;\n background-color: var(--ag-border-color, #424242);\n border-radius: 2px;\n border-radius: 3px;\n}\n.ag-theme-balham-dark input[class^=ag-][type=range]::-ms-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: #424242;\n background-color: var(--ag-border-color, #424242);\n border-radius: 2px;\n border-radius: 3px;\n color: transparent;\n width: calc(100% - 2px);\n}\n.ag-theme-balham-dark input[class^=ag-][type=range]::-webkit-slider-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: 16px;\n height: 16px;\n background-color: #2d3436;\n background-color: var(--ag-background-color, #2d3436);\n border: 1px solid;\n border-color: #ecf0f1;\n border-color: var(--ag-checkbox-unchecked-color, #ecf0f1);\n border-radius: 16px;\n -webkit-transform: translateY(-6.5px);\n transform: translateY(-6.5px);\n}\n.ag-theme-balham-dark input[class^=ag-][type=range]::-ms-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: 16px;\n height: 16px;\n background-color: #2d3436;\n background-color: var(--ag-background-color, #2d3436);\n border: 1px solid;\n border-color: #ecf0f1;\n border-color: var(--ag-checkbox-unchecked-color, #ecf0f1);\n border-radius: 16px;\n}\n.ag-theme-balham-dark input[class^=ag-][type=range]::-moz-ag-range-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: 16px;\n height: 16px;\n background-color: #2d3436;\n background-color: var(--ag-background-color, #2d3436);\n border: 1px solid;\n border-color: #ecf0f1;\n border-color: var(--ag-checkbox-unchecked-color, #ecf0f1);\n border-radius: 16px;\n}\n.ag-theme-balham-dark input[class^=ag-][type=range]:focus {\n outline: none;\n}\n.ag-theme-balham-dark input[class^=ag-][type=range]:focus::-webkit-slider-thumb {\n -webkit-box-shadow: 0 0 4px 1.5px #719ECE;\n box-shadow: 0 0 4px 1.5px #719ECE;\n border-color: #00B0FF;\n border-color: var(--ag-checkbox-checked-color, var(--ag-balham-active-color, #00B0FF));\n}\n.ag-theme-balham-dark input[class^=ag-][type=range]:focus::-ms-thumb {\n box-shadow: 0 0 4px 1.5px #719ECE;\n border-color: #00B0FF;\n border-color: var(--ag-checkbox-checked-color, var(--ag-balham-active-color, #00B0FF));\n}\n.ag-theme-balham-dark input[class^=ag-][type=range]:focus::-moz-ag-range-thumb {\n box-shadow: 0 0 4px 1.5px #719ECE;\n border-color: #00B0FF;\n border-color: var(--ag-checkbox-checked-color, var(--ag-balham-active-color, #00B0FF));\n}\n.ag-theme-balham-dark input[class^=ag-][type=range]:active::-webkit-slider-runnable-track {\n background-color: #719ECE;\n background-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham-dark input[class^=ag-][type=range]:active::-moz-ag-range-track {\n background-color: #719ECE;\n background-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham-dark input[class^=ag-][type=range]:active::-ms-track {\n background-color: #719ECE;\n background-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham-dark input[class^=ag-][type=range]:disabled {\n opacity: 0.5;\n}\n.ag-theme-balham-dark .ag-filter-toolpanel-header,\n.ag-theme-balham-dark .ag-filter-toolpanel-search,\n.ag-theme-balham-dark .ag-status-bar,\n.ag-theme-balham-dark .ag-header-row,\n.ag-theme-balham-dark .ag-multi-filter-group-title-bar {\n font-weight: 600;\n color: rgba(245, 245, 245, 0.64);\n color: var(--ag-header-foreground-color, rgba(245, 245, 245, 0.64));\n}\n.ag-theme-balham-dark .ag-ltr input[class^=ag-]:not([type]),\n.ag-theme-balham-dark .ag-ltr input[class^=ag-][type=text],\n.ag-theme-balham-dark .ag-ltr input[class^=ag-][type=number],\n.ag-theme-balham-dark .ag-ltr input[class^=ag-][type=tel],\n.ag-theme-balham-dark .ag-ltr input[class^=ag-][type=date],\n.ag-theme-balham-dark .ag-ltr input[class^=ag-][type=datetime-local],\n.ag-theme-balham-dark .ag-ltr textarea[class^=ag-] {\n padding-left: 4px;\n}\n\n.ag-theme-balham-dark .ag-rtl input[class^=ag-]:not([type]),\n.ag-theme-balham-dark .ag-rtl input[class^=ag-][type=text],\n.ag-theme-balham-dark .ag-rtl input[class^=ag-][type=number],\n.ag-theme-balham-dark .ag-rtl input[class^=ag-][type=tel],\n.ag-theme-balham-dark .ag-rtl input[class^=ag-][type=date],\n.ag-theme-balham-dark .ag-rtl input[class^=ag-][type=datetime-local],\n.ag-theme-balham-dark .ag-rtl textarea[class^=ag-] {\n padding-right: 4px;\n}\n\n.ag-theme-balham-dark .ag-column-drop-vertical-empty-message, .ag-theme-balham-dark .ag-status-bar {\n font-weight: 600;\n color: rgba(245, 245, 245, 0.38);\n color: var(--ag-disabled-foreground-color, rgba(245, 245, 245, 0.38));\n}\n.ag-theme-balham-dark .ag-dnd-ghost {\n font-weight: 600;\n}\n.ag-theme-balham-dark .ag-tab {\n border: 1px solid transparent;\n padding: 4px 8px;\n margin: 4px;\n margin-bottom: -1px;\n}\n.ag-theme-balham-dark .ag-tab-selected {\n background-color: #2d3436;\n background-color: var(--ag-background-color, #2d3436);\n border-color: #424242;\n border-color: var(--ag-border-color, #424242);\n border-bottom-color: transparent;\n}\n.ag-theme-balham-dark .ag-tabs-header {\n border-bottom: 1px solid;\n border-bottom-color: #424242;\n border-bottom-color: var(--ag-border-color, #424242);\n}\n.ag-theme-balham-dark .ag-column-drop-cell {\n height: 24px;\n}\n.ag-theme-balham-dark .ag-column-drop-vertical-title {\n color: #F5F5F5;\n color: var(--ag-foreground-color, #F5F5F5);\n}\n.ag-theme-balham-dark .ag-column-drop-vertical-cell {\n margin-left: 8px;\n margin-right: 8px;\n}\n.ag-theme-balham-dark .ag-column-drop-vertical-cell-text {\n margin-left: 8px;\n}\n.ag-theme-balham-dark .ag-column-drop-vertical-icon {\n color: #F5F5F5;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #F5F5F5));\n}\n.ag-theme-balham-dark .ag-ltr .ag-column-drop-vertical-empty-message {\n padding-left: 24px;\n padding-right: 4px;\n}\n\n.ag-theme-balham-dark .ag-rtl .ag-column-drop-vertical-empty-message {\n padding-right: 24px;\n padding-left: 4px;\n}\n\n.ag-theme-balham-dark .ag-column-drop-horizontal {\n height: 32px;\n}\n.ag-theme-balham-dark .ag-column-drop-empty {\n color: rgba(245, 245, 245, 0.38);\n color: var(--ag-disabled-foreground-color, rgba(245, 245, 245, 0.38));\n}\n.ag-theme-balham-dark .ag-column-drop-horizontal-cell-text {\n margin-left: 8px;\n}\n.ag-theme-balham-dark .ag-column-drop-vertical {\n padding-top: 8px;\n}\n.ag-theme-balham-dark .ag-menu-header {\n background-color: #1c1c1c;\n background-color: var(--ag-header-background-color, #1c1c1c);\n}\n.ag-theme-balham-dark .ag-overlay-loading-center {\n background-color: #2d3436;\n background-color: var(--ag-background-color, #2d3436);\n border: 1px solid;\n border-color: #424242;\n border-color: var(--ag-border-color, #424242);\n color: #F5F5F5;\n color: var(--ag-foreground-color, #F5F5F5);\n padding: 16px;\n}\n.ag-theme-balham-dark .ag-tooltip {\n border: none;\n background-color: #cbd0d3;\n}\n.ag-theme-balham-dark .ag-panel-title-bar-button-icon {\n font-size: 20px;\n}\n.ag-theme-balham-dark .ag-chart-data-section,\n.ag-theme-balham-dark .ag-chart-format-section {\n padding-bottom: 2px;\n}\n.ag-theme-balham-dark .ag-group-toolbar {\n background-color: rgba(17, 17, 17, 0.5);\n background-color: var(--ag-subheader-toolbar-background-color, rgba(17, 17, 17, 0.5));\n}\n.ag-theme-balham-dark .ag-chart-tab {\n padding-top: 2px;\n}\n.ag-theme-balham-dark .ag-charts-format-sub-level-group-item {\n margin-bottom: 6px;\n}\n.ag-theme-balham-dark .ag-tooltip {\n background-color: #1c1f20;\n}\n", ""]);
58314// Exports
58315module.exports = exports;
58316
58317
58318/***/ }),
58319/* 285 */
58320/***/ (function(module, exports, __webpack_require__) {
58321
58322var api = __webpack_require__(276);
58323 var content = __webpack_require__(286);
58324
58325 content = content.__esModule ? content.default : content;
58326
58327 if (typeof content === 'string') {
58328 content = [[module.i, content, '']];
58329 }
58330
58331var options = {};
58332
58333options.insert = "head";
58334options.singleton = false;
58335
58336var update = api(content, options);
58337
58338
58339
58340module.exports = content.locals || {};
58341
58342/***/ }),
58343/* 286 */
58344/***/ (function(module, exports, __webpack_require__) {
58345
58346// Imports
58347var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58348exports = ___CSS_LOADER_API_IMPORT___(false);
58349// Module
58350exports.push([module.i, ".ag-theme-balham {\n -webkit-font-smoothing: antialiased;\n color: #000;\n color: var(--ag-foreground-color, #000);\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n font-size: 12px;\n line-height: normal;\n}\n@font-face {\n font-family: \"agGridBalham\";\n src: url(\"data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABgoAAsAAAAALEgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAAmMAAAR2YfRkQU9TLzIAAANsAAAAQQAAAFZWUFLwY21hcAAAA7AAAAIMAAAFnGSNxkJnbHlmAAAFvAAADpIAABo4y6JNTGhlYWQAABRQAAAANAAAADZ2zcSBaGhlYQAAFIQAAAAaAAAAJAfQBDFobXR4AAAUoAAAABoAAAEgs7L//WxvY2EAABS8AAAAawAAAJJHu0GKbWF4cAAAFSgAAAAfAAAAIAFeAKpuYW1lAAAVSAAAATUAAAJG0OP3eXBvc3QAABaAAAABqAAAAm9qOX49eJx9lM1SE1EQhc8wAYFEoDQqRkRQ/IvKMD8Zk/CTkJBoWS5cWJYLN1hWWVZRrngOH8AnYOkT+AAufAIfwIVL15ZfdwaDLMitTO50n+4+fW7fKJA0qw3taGJv+Pyl5g72Dz+qppJGH/Of3AcHH97va/r4DV/Jf6cVlCqa00291qG+BXPBYXA0UQ1r4avwXfg5/BL+UghqReugy1TcUKyEZ6RUmRrKNaEpbDH7x2qCDnm23HpBVzXpnp76WqRmTEzfM9b1THe0QJ6u5+loG1TKspwdnkPWXc2fgch1j/wZbDaxllBkmf2WqprRHiw7MGkT38R/kZo71I6I6uLrwm4SS4t9W5fgZBElV/Wp3ugRfuvUsmRFTMo31q6/R/5WZh2jWuRpUMty12FwbG9QNSHiIdkzUFuFonVUL+NNwUTEtl1Biy6DTOCWapWd9ZnAtaI1MC/01qvuFjEd13SkQB32Y3vX8+V0ftLaJtcQ7AM4jK12PvepFWngXS2COdAnHemrvuuHfuq3/uicLlMn8R62yb5zpjbTKHga3cPb+me1XqeYgdOo/xEzdN5wdWJ8/UJDq1amM1MnZR9hTR0/C0/D92CTcx4lakRe1056krXJewz6fDGdTVbFle4zBfM+wQOfhRoTlui6ZxzNYY7WS2S03YhfzXVrku+an5upazdswd/sLth51zj/ZX4jOsxcpyd4V7BYprHlhkflsLcc6/hzWI+rGaslWGU+0TZjA78dPSrdop8Rk0S3/WYMfL7WYJAVN7XKGRr7dnFiVxwXe1TAP0FU3PDUtbOZ7sLN5mP4F/iHapMAeJxjYGSqZ5zAwMrAwFTFtIeBgaEHQjM+YDBkZAKKMrAyM2AFAWmuKQwHGHQ/GjG/AHKjmN8wsABpRpAcANz2CuAAAAB4nLXUZ1IbQRCG4VeBKIEDOeNEVkAgssjhh0+BM4UDhTPn8Nl8jz4B/ma7fQBc5al61Duzo9FMrb4F2oCCLEkR8p3kdEUur9FcNl6gOxsv8lv9Mp3kdV3hgiturHF7q9EK51xybbms97flNLvMODOsqbdHjRab7NPglDrbrLLDFge62+SIZTZY4ZAT1tnlmDN9P+2iqD2206Hf7dJOSlqxh17u84A++hlgkCGGGWGUMf3WBJNMMa15j3jME57yTPNmmGWOeRZ0XWJRpyppzwtUtcl27tb27jg/tVprc79xWt/WibcO1po67MbK4cn67vHZPyz2H1o5fRR+Re856Ym6dNrzUJMXoSUvw6a8CvvyOjTkTTiVt6Eu78K2XIRVuQw78j5syYdwIB9D+ld9Ck25CkdyHZblc9iQL2FFvoZD+RZO5HtYlx9hV36GY7kJeoCWcykvlnekWnApX1Z0KWPW5lL2rN2Raocj1U5Hql2OVLtdyqSVHKmWXXqS1uNItdeR6j2n7GBBKcKCsoE9dEoW1ueUMazfKW3YgFPusEGnBGJDTlnEhp1SiY045RMbdUoqNuaUWWzcKb3YhFOOsUmnRGNTLjvvtFPKsaC8Y0HJx4LeAVjQ2wAL2XlnHKnOOlKdc6Q670h1wZHqosvWWXLZ3iqOdL/q0vvVai6bU3cpY7bssjUbjuofQy2jW3ic7VlrkBzVde5ze2d6et7d04+Z2Z33a3deu/OWZnd79EDL7gr0YldCBqQoEnKwVhgpwsJCC7ZwBBI4JlIBdkXxq8qmoCouJ65QlC3ZKeKCpYIWhUAShCs/sBML4mAcq1LljaaVc3t6VlqhAPa/VLLT3ff07XvPPfecc8/57l2GZfCP/Q77HUZlSsx2hoEwUUXWTbieVJFkiE8jjaQlbvWAVZbUMKg9KQ0aIluETDoRt1oStYSsqObPyhk/uVKryLFMtVFvYNt6o57O0F8txgr9a7LQ0wPZNf36T/WfXnmDkP7z1DIAtodUExCGcKJKHA6kp+5a8V/wZGsBfI5o2K04vHa/J5p2qwst/Rj0cLJ7pVu2WsORITEEcJB95nqsIWS8raqnbv/6+j/6VJe1OQzLLrRYj+hUFKdP7FuluPwht+ptzToG5aTkHHL6PEKfPylFE6upqsDQ15fZLzMRhvGpXKahcjHBKDJCzCgaMcEoVGFuPH/yZH4cXEtL/dfm+xvXr1/87jLHIy+yEmPDF3OcBLxxtPDaa4WjGjl1NP/aa/mj+jIqliHbHnYPIzEDTA3bx6k5JGqaMrVDldqBK9N3iX4x7FKnX3zIFzkj/0wDLu7eMl2uVMrTW17pErunJ8ayuVx2bOJZSkAWqelvFb797cK3jCe7Z0lzg9CWNjco/dfdHvhkFmX2s36kOMaBOq0ICXo3KnLi3OzsuwcOvHPvveQu/ZNkvP38woLR/PJlfFxg32F8TIZBNgMQL0JNqGpQiZXDIAuSG9hY3E2pMK3T6NcicID6A7ba/lzplqGhW0qkUw62Z0PlEF7kIaPs17e9UvkKfPpKi5LRg/1mqBRqH8YHXuQL+PgVtix/Be65Vqbcx5eJjeG6+CiJVrZ/TEY+Why9OG64y2X8Q1kuGLIw0B0+EVsUyXI9SapXMaeDHblGCvbC1V9pOXatBKY972N3MRb0WD/D8MCpPLCNCHRig6SU6zXqiOTf9O3NnXobtLm5l77rcAQ8SmlNSfEE4AX4xjB+0P8GRufmNJcr3JsOxEuleCDVF6bse4wxCqzb9BkPw6QSQsVn3kDv51qtH2ja6VarfVbT3iLl9vyVe3Edk5OsBeVEGanfkxP6+/mf/SwPFzulOZebcT35mAQzREfpKnB4UaksRkEkFKyp46c0jm7YXI5hPfnzi7mJXHYiT4vcRPpSul43HnrPiuxEDp7QP5mqzeI3qBgNcvpZfJByPa3/mDaFkXRddxIxN55r1VJX5H6RvEjXCixZtVctRxK9eplZGebyJfZu9heMF2cSYsaZzzF/hr3p8rd0pEcvqNfYRA2EmGpVcTK+lOQmON2eWlUjFTpZyRpPZ4pAp4tuU6axvayo1K3iWF2r1sthtkJti6mhSKgOymFidur0iYCihklDxYBT0qgCJdkDboI6HWSxu8Lu5XbfY9HXZRqNDKlnGmPf01fBMQKsxXue6Nt5MSx5Vclrt7j8MZ+a9Nldth6b5FH7nGpUsRKb2/4XYlwJCS4v77ZxNo9TUByiV+oVxIgi+gWb3cX1WDxh0eqwiKLDJdpHclnCEpvDZiE1wtk9TiupsGAXbeTnts8csZBlmUuvGsIcO3fpOHvfGwFeaD/+j85I2GcTe6MpOV5LS30ZkffYXbJULUdzit9v97g9gQHF40iJDrcjIDhV0S3YrJwvVkz5XLJf9todHtHn4h08y3EWzhf64x+c5h1WO+eyW/jXeY+Nd/PzHt7uFamp/992/3tttzR3m5igQnxm7oabOrkb5joxbYmdJz7Sxg2avKv1SlmJQItQkymy5AHEaGjXeHoQOOoE6Vr1w01T2LqW5yySR/B5R1bY3VaXzeOT10057bwoiT23bunhBaz5MKXOfXaP2+VQvD7/Jz7hES0Wr1MI7f2sRxbdPG998JDVZhU8IvN/ZI5L8gqmPo4HcgKTif4+eMk/0eziBS82sRi55Wm2iZllOXMTM81sw/b1RgXhdwdF08juhkwHOzcMlIZhXnWDBwywTV+tRkKqNkCDFhQJ9ql31juXMlZtpdwCY1Un4hwktt8l3v7M55MuQewNRtOj+Ym1z26cumFjyevjHQ6vN98ayWtDN6mQ3rh+x523K1Jfc2Jk13AeHh5aq0L4wBNfW5toTgzf2czp88HcjbnBTD6YHc8OZsivSiy77pFb++LhbF8sgIxToiSXmpt7i5JfDsujudH8U5Fba2SrNirJYau9Lze8a3iiqf9ddGuNjN89ysbjWDMy0TzfP4gcg/nMYA6LK7n+aTbB9DJFZhg1ZexQTBVZr1YP7jVUN+lqp6MRrtxxlSJgUFOpJhD3hIAGQUQ90F7Ux9q9n/r0/q0byqYuWn89Azd98e6IqYuNn09QBYw3dzSbOw7sWL58xz9kx6fGs8aDTSxOfl0y4fasaG4xJz69q6dFRmfWdCYeCt67ns42shxZdPj8PWQpkyzpFNR1TGxTwP0Yokgw5xkCrlE3J5sehZhFMvdccqPWcQ1cOgUY8K9q+G2nAQhw/vqqwADZ1z5rMyh0kc5XciEzFBoeCvLOP3xsen/TYQuURsNDyTUtgQ+WRkNDqSODU9iiWQrygikPWTD8me96tEVICOQ3plfrv6ctOraiO+Ei4+zMgby3iM98OJte3DElDGw8yDCNRK2iXnWnPuJ9wcByVxDd9V8WZjt/LbPUzBLFsS3Z59ZwzY0yK5k1Rgz6rXa8PpTGgpg9dU35O+5tT83OwkH9JViuH1uknEhd1Cfhud9tO9v+d03TWubNMB+wYQftUpRMcibi/WdN66Le9n+iBbt+uJ/tRc0J1O4IaKnpWbWRwdlieMy04Jh+sHVcPw/p+fnSLLyth2dL5HHttHYc0pDWz8+X0QLlLq99iKOzzBbDp1GtHCoYwxvVar0FtXSmhH7uBnTpMDSwRqOhzxc3WmEljXZF8wPtLeEHrC4Z697gkiB+3GvEeu32vpnQLf3JKmdVAqKTFVPePo/bm8gdXp6NzBT8ITW7K3tzaM+g2qfmwjbgUgHZIdIuuQaokggOVky4+yS7Y3UxnSVreKeld9NAOrQn5HO5RtOJsaDIJlJiUs7sHColc72qJ7qn+PBwMQJ8FLl+YXgoGuYdlsiugopcfW7P+mKoJhl9Yr7kHYXSep+364+Pso9+YI0w1KMoprfgbXgX3g3znUMaPVS7Zy4/By/k5/IQWFhozy8srEWabMNaXCnbFiJI4JUvowdswxKvuWcWrvhCm7QRWbpwtx2hzsClBgF3Eo1fsG+O7d+4H/7WLOfOs7T8aqcw90MF8mp3rw7oCd0fW2h/CaONeUOghbZvdW0fx/htjGcOZA4Lr/YYA/1JZ7z/eLMHi33wozfZsX2b9pt9n8V9XscHuwgKXbdzEALNx4pvnS8+thL+aiVSbw0+Bhseyp09m3sIzrTn4UyHphga+RxhDzIKRp8G02LWMlPIj7qaqhhul0kb3tXQiEpfOavphxh0qW9hK1qZQcTBg2KE20FATAJGp3pDNYK02kjDwh2bN+61O7Ppmyeev/WO1aMrCElF73505YbxG27j+VR607oz66azCZtt69jkU1Grdf3oqslqKQOH9F9WZgayCFHOrFrerx9NOvzBenMTr1XLsiJejrCfIdXS09vuvG3DslpKVlrLvjq1ZXLlznqL5LNf3DB98/pizpItbJ6Y3vh4rvDy6MTYbDzJWYIK3K8/5e1NpavN4VdIWNGPtk6sXD1QsGjsQP+INnzZvngGM8Pej97Xz4ygZoyDIuPwSE588KAgwZUVujmo1iGG4Euo1odBjtUoOBMkK9nndAcimyMBt3M2vjyOF1zslAtCIBAPBMChO4PJZLAFB7VgKsWGRMnvFkW3XxKxkT5pdnoOH4I/6ser/fVUAJ4LJmdnk0F9MpBajE+HDZmbKHEXIdXRCFhQY3E0QdIwg4uJ5tEIcGmcEnSs11CVioGhYOMJID0WPtQcbOx0N0NRCMsr1vwB5lBWkgvqkxge/8XHO23eU/X+sgBBm0rARp6w4VbALXpfhwdOIGLwOPsdvGNHcTQs62/3TTvvtFoCtdyQ6sDu5Eter8+tnHKzbK/+r1Yp46+KT2Iw52zi64z9qrwURe2vZMYM77yN2cHs/h9yU0xQjINVC01PEYQxndUgI9DhEp0jScVQRkpSK7WMlavUGllARVQwscoV6tEpa4KTK410Qq58WOKCQ+2XfvkeZhW+bQPMMVH4vj0/PZXns2P9B/j89HTeviJZDoah/TIcvh9gtlVdi5nuUAvOHKLtURfLsw/+aNmND35oKrvUftnKY/P3zgpeHAzuB4/BnL+n/8Yc4fNTOA7gdkvJhseWPfDDydqDv6mntrcOH47ThAdweBYeWPQJeu5Fzz/N008v9YIoVYf3mtPPuLG5oF/g4iMH9q2+4YbV+w6At0s9cnD3zubISHPn7veQGB5Ggr1AP+jvL22sLWlDiZHumurKov1W0lxzNmu0+bgiwnevc+r6seXWJ6eX9qTMrsUCFD9gwMdkpCIowGieYffp54+39INwrHW8NKuH4e3Z0vw8IorzxykaOE5hwPy8yYeeT7swEjO4z0Mcae77BEs3urP+9vO3lOJkPF7SvzfTPHeuOTOFrH4CSf0n9BQQkn0zw+fODc/AycXzeAs5aZzj0QMKtkd/34AyZDeFp0gw17YDemaGeCzfga1HOuVimxe6Z4IqttFP/CVu0VeRJ5AoPAyrFnkViESt7EMdnDaSnk9bjKV72Rm0ew7xJeOLI5BEtI6Zhm7GMLJiPvEhpgkTBDMZ7goGygBFO6qxtOk/Uzq0cW7zNCFJQv4Ulr1LLAalz71LvEU1pGz6/Z1JraAl7sr6Y5xNDmoF+MbAuhBWCYXA4GZRECJIR6JWpXfnMnYPdraQU/rcO8gQrOQUNN4l+n0IX7B9xGDk7PUW+5KTvchoMmrwUVhLOd+/Ffm0Iptv7y8N4wz/G4A9L1cAAHicY2BkYGAAYgWvvDnx/DZfGbiZXwAFojgf72uA0f/////D/IL5DVAlBwMTkGQAAHb/DvN4nGNgZGBgfsHAACL//wezGRlQgQcAdFMFCgAAeJxjYGBgYH6BDf//j8C41AwspgcAANyGMDUAAHicY2AAghkMFxieMTowRjEuYXzFpMEUxVTD1Md0g+kT8wWWdSxHWM1YV7DuYQtgO8EuwK7FXsL+iYOHw4hjD8cPTjFOA04/ziIuJq4YrgPcadxreIR4zHgSeEp42nhm8azglSEdAgCdlRu1AHicY2BkYGDwYJjHwMMAAkxAzAWEDAz/wXwGACBkAgkAeJx1jz9OwzAYxV9oWkSLEBISYsMTC1L6Z2Do2KHZO3RgcxsnbZXEkeNW6sYxOAHHYOQInIJD8BK+oUKqLTk///zeJwXALb4QoFkBrtuzWRe45O2PO6Q74ZD8KNzFAM/CPfoX4T7tTHjAZsEJQXhF84A34Qvc4F24Q/8hHJI/hbu4x7dwj/5HuI9lEAoP8BS86ix222Sm840uFibb59qdqlNeGldvbanG0ehUx6Y0TnuTqNVR1Yds4n2qUmcLNbelN3luVeXszqx9tPG+mg6HqfhobQtoZIjhsEXCP9fIseFZYAHDlz3vmq/nUuf8km2Hmt6ihMIYEUZn0zHTZdvQ8PwmbKxw5FnjwM6E1iPlPWXGsqEwbyc36Zzb0lTt245mTR9xdtOqMMWQO/2Xj5jipF9al2jJAAAAeJxtkQdv2zAQhf3Fku3YaeO6bbr3Hmrr7p3upj+DpmiZiEQKJOWRX18iLgIE6AE8vPdwvHu4a2201tFv/T/22KBNQkqHLj026TNgixOcZJshpxhxmjOcZYdznOcCF7nEZa5wlWtc5wY3ucVt7nCXe9znAQ95xGMynvCUZ4x5zgte8orXvOEt73jPBz7yic/s8oWvfOM7P/jJL36zx5/WQBSFU4UI2pqOcM4ufFt42ZHCSFWmciZcGMqZkvsTu8wOgcp3jgRtchWUq7QRQY2O5Mb8q9yStrQuq3UkrhtJUxnfl9YEJ2RQeSJtvUqls963pZ+n8WXjJFdepmoZDXQPczbuqWUt4qx8U61U5kvhZ+2IOlNdxvHpVDsfksLpOi2cbeokFoSkVNPQKbWJPrqlFbk2Ra8SS13pA5VUyjS96HvNjDVqYGzIRFnahcrTOjZQ7VqbtNZzG4YufrfZpAnBmsxOp9vHBZM6XcxC4sVc9X0Vu2S5XZjeGkZDIW5gFJxSx1fWa8zaIIIChyKgsRgWeCQlM/aZsIwnzqloqFkxZ8pBq/UXq/Gj5g==\") format(\"woff\");\n font-weight: normal;\n font-style: normal;\n}\n.ag-theme-balham .ag-icon {\n font-family: \"agGridBalham\";\n font-size: 16px;\n line-height: 16px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.ag-theme-balham .ag-icon-aggregation::before {\n content: \"\\f101\";\n}\n.ag-theme-balham .ag-icon-arrows::before {\n content: \"\\f102\";\n}\n.ag-theme-balham .ag-icon-asc::before {\n content: \"\\f103\";\n}\n.ag-theme-balham .ag-icon-cancel::before {\n content: \"\\f104\";\n}\n.ag-theme-balham .ag-icon-chart::before {\n content: \"\\f105\";\n}\n.ag-theme-balham .ag-icon-color-picker::before {\n content: \"\\f109\";\n}\n.ag-theme-balham .ag-icon-columns::before {\n content: \"\\f10a\";\n}\n.ag-theme-balham .ag-icon-contracted::before {\n content: \"\\f10b\";\n}\n.ag-theme-balham .ag-icon-copy::before {\n content: \"\\f10c\";\n}\n.ag-theme-balham .ag-icon-cross::before {\n content: \"\\f10d\";\n}\n.ag-theme-balham .ag-icon-csv::before {\n content: \"\\f10e\";\n}\n.ag-theme-balham .ag-icon-desc::before {\n content: \"\\f10f\";\n}\n.ag-theme-balham .ag-icon-excel::before {\n content: \"\\f110\";\n}\n.ag-theme-balham .ag-icon-expanded::before {\n content: \"\\f111\";\n}\n.ag-theme-balham .ag-icon-eye-slash::before {\n content: \"\\f112\";\n}\n.ag-theme-balham .ag-icon-eye::before {\n content: \"\\f113\";\n}\n.ag-theme-balham .ag-icon-filter::before {\n content: \"\\f114\";\n}\n.ag-theme-balham .ag-icon-first::before {\n content: \"\\f115\";\n}\n.ag-theme-balham .ag-icon-grip::before {\n content: \"\\f116\";\n}\n.ag-theme-balham .ag-icon-group::before {\n content: \"\\f117\";\n}\n.ag-theme-balham .ag-icon-last::before {\n content: \"\\f118\";\n}\n.ag-theme-balham .ag-icon-left::before {\n content: \"\\f119\";\n}\n.ag-theme-balham .ag-icon-linked::before {\n content: \"\\f11a\";\n}\n.ag-theme-balham .ag-icon-loading::before {\n content: \"\\f11b\";\n}\n.ag-theme-balham .ag-icon-maximize::before {\n content: \"\\f11c\";\n}\n.ag-theme-balham .ag-icon-menu::before {\n content: \"\\f11d\";\n}\n.ag-theme-balham .ag-icon-minimize::before {\n content: \"\\f11e\";\n}\n.ag-theme-balham .ag-icon-next::before {\n content: \"\\f11f\";\n}\n.ag-theme-balham .ag-icon-none::before {\n content: \"\\f120\";\n}\n.ag-theme-balham .ag-icon-not-allowed::before {\n content: \"\\f121\";\n}\n.ag-theme-balham .ag-icon-paste::before {\n content: \"\\f122\";\n}\n.ag-theme-balham .ag-icon-pin::before {\n content: \"\\f123\";\n}\n.ag-theme-balham .ag-icon-pivot::before {\n content: \"\\f124\";\n}\n.ag-theme-balham .ag-icon-previous::before {\n content: \"\\f125\";\n}\n.ag-theme-balham .ag-icon-right::before {\n content: \"\\f128\";\n}\n.ag-theme-balham .ag-icon-save::before {\n content: \"\\f129\";\n}\n.ag-theme-balham .ag-icon-small-down::before {\n content: \"\\f12a\";\n}\n.ag-theme-balham .ag-icon-small-left::before {\n content: \"\\f12b\";\n}\n.ag-theme-balham .ag-icon-small-right::before {\n content: \"\\f12c\";\n}\n.ag-theme-balham .ag-icon-small-up::before {\n content: \"\\f12d\";\n}\n.ag-theme-balham .ag-icon-tick::before {\n content: \"\\f12e\";\n}\n.ag-theme-balham .ag-icon-tree-closed::before {\n content: \"\\f12f\";\n}\n.ag-theme-balham .ag-icon-tree-indeterminate::before {\n content: \"\\f130\";\n}\n.ag-theme-balham .ag-icon-tree-open::before {\n content: \"\\f131\";\n}\n.ag-theme-balham .ag-icon-unlinked::before {\n content: \"\\f132\";\n}\n.ag-theme-balham .ag-icon-row-drag::before {\n content: \"\\f116\";\n}\n.ag-theme-balham .ag-left-arrow::before {\n content: \"\\f119\";\n}\n.ag-theme-balham .ag-right-arrow::before {\n content: \"\\f128\";\n}\n.ag-theme-balham .ag-root-wrapper {\n background-color: white;\n background-color: var(--ag-background-color, white);\n}\n.ag-theme-balham [class^=ag-], .ag-theme-balham [class^=ag-]:focus, .ag-theme-balham [class^=ag-]:after, .ag-theme-balham [class^=ag-]:before {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n outline: none;\n}\n.ag-theme-balham [class^=ag-]::-ms-clear {\n display: none;\n}\n.ag-theme-balham .ag-checkbox .ag-input-wrapper,\n.ag-theme-balham .ag-radio-button .ag-input-wrapper {\n overflow: visible;\n}\n.ag-theme-balham .ag-range-field .ag-input-wrapper {\n height: 100%;\n}\n.ag-theme-balham .ag-toggle-button {\n -webkit-box-flex: 0;\n flex: none;\n width: unset;\n min-width: unset;\n}\n.ag-theme-balham .ag-ltr .ag-label-align-right .ag-label {\n margin-left: 4px;\n}\n\n.ag-theme-balham .ag-rtl .ag-label-align-right .ag-label {\n margin-right: 4px;\n}\n\n.ag-theme-balham input[class^=ag-] {\n margin: 0;\n background-color: white;\n background-color: var(--ag-background-color, white);\n}\n.ag-theme-balham textarea[class^=ag-],\n.ag-theme-balham select[class^=ag-] {\n background-color: white;\n background-color: var(--ag-background-color, white);\n}\n.ag-theme-balham input[class^=ag-]:not([type]),\n.ag-theme-balham input[class^=ag-][type=text],\n.ag-theme-balham input[class^=ag-][type=number],\n.ag-theme-balham input[class^=ag-][type=tel],\n.ag-theme-balham input[class^=ag-][type=date],\n.ag-theme-balham input[class^=ag-][type=datetime-local],\n.ag-theme-balham textarea[class^=ag-] {\n font-size: inherit;\n line-height: inherit;\n color: inherit;\n border-width: 1px;\n border-style: solid;\n border-color: #95a5a6;\n border-color: var(--ag-input-border-color, #95a5a6);\n}\n.ag-theme-balham input[class^=ag-]:not([type]):disabled,\n.ag-theme-balham input[class^=ag-][type=text]:disabled,\n.ag-theme-balham input[class^=ag-][type=number]:disabled,\n.ag-theme-balham input[class^=ag-][type=tel]:disabled,\n.ag-theme-balham input[class^=ag-][type=date]:disabled,\n.ag-theme-balham input[class^=ag-][type=datetime-local]:disabled,\n.ag-theme-balham textarea[class^=ag-]:disabled {\n color: rgba(0, 0, 0, 0.38);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.38));\n background-color: #ebebeb;\n background-color: var(--ag-input-disabled-background-color, #ebebeb);\n border-color: rgba(149, 165, 166, 0.3);\n border-color: var(--ag-input-disabled-border-color, rgba(149, 165, 166, 0.3));\n}\n.ag-theme-balham input[class^=ag-]:not([type]):focus,\n.ag-theme-balham input[class^=ag-][type=text]:focus,\n.ag-theme-balham input[class^=ag-][type=number]:focus,\n.ag-theme-balham input[class^=ag-][type=tel]:focus,\n.ag-theme-balham input[class^=ag-][type=date]:focus,\n.ag-theme-balham input[class^=ag-][type=datetime-local]:focus,\n.ag-theme-balham textarea[class^=ag-]:focus {\n outline: none;\n -webkit-box-shadow: 0 0 2px 1px #719ECE;\n box-shadow: 0 0 2px 1px #719ECE;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham input[class^=ag-]:not([type]):invalid,\n.ag-theme-balham input[class^=ag-][type=text]:invalid,\n.ag-theme-balham input[class^=ag-][type=number]:invalid,\n.ag-theme-balham input[class^=ag-][type=tel]:invalid,\n.ag-theme-balham input[class^=ag-][type=date]:invalid,\n.ag-theme-balham input[class^=ag-][type=datetime-local]:invalid,\n.ag-theme-balham textarea[class^=ag-]:invalid {\n border-width: 2px;\n border-style: solid;\n border-color: #e02525;\n border-color: var(--ag-input-border-color-invalid, var(--ag-invalid-color, #e02525));\n}\n.ag-theme-balham input[class^=ag-][type=number] {\n -moz-appearance: textfield;\n}\n.ag-theme-balham input[class^=ag-][type=number]::-webkit-outer-spin-button, .ag-theme-balham input[class^=ag-][type=number]::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n.ag-theme-balham input[class^=ag-][type=range] {\n padding: 0;\n}\n.ag-theme-balham input[class^=ag-][type=button]:focus, .ag-theme-balham button[class^=ag-]:focus {\n -webkit-box-shadow: 0 0 2px 1px #719ECE;\n box-shadow: 0 0 2px 1px #719ECE;\n}\n.ag-theme-balham .ag-drag-handle {\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n}\n.ag-theme-balham .ag-list-item, .ag-theme-balham .ag-virtual-list-item {\n height: 24px;\n}\n.ag-theme-balham .ag-keyboard-focus .ag-virtual-list-item:focus {\n outline: none;\n}\n.ag-theme-balham .ag-keyboard-focus .ag-virtual-list-item:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham .ag-select-list {\n background-color: white;\n background-color: var(--ag-background-color, white);\n overflow-y: auto;\n overflow-x: hidden;\n}\n.ag-theme-balham .ag-list-item {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ag-theme-balham .ag-list-item.ag-active-item {\n background-color: #ecf0f1;\n background-color: var(--ag-row-hover-color, #ecf0f1);\n}\n.ag-theme-balham .ag-select-list-item {\n padding-left: 4px;\n padding-right: 4px;\n cursor: default;\n -moz-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n}\n.ag-theme-balham .ag-select-list-item span {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n.ag-theme-balham .ag-select .ag-picker-field-wrapper {\n background-color: white;\n background-color: var(--ag-background-color, white);\n min-height: 24px;\n cursor: default;\n}\n.ag-theme-balham .ag-select.ag-disabled .ag-picker-field-wrapper:focus {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.ag-theme-balham .ag-select:not(.ag-cell-editor) {\n height: 24px;\n}\n.ag-theme-balham .ag-select .ag-picker-field-display {\n margin: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ag-theme-balham .ag-select .ag-picker-field-icon {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-balham .ag-select.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-balham .ag-rich-select {\n background-color: #f5f7f7;\n background-color: var(--ag-control-panel-background-color, #f5f7f7);\n}\n.ag-theme-balham .ag-rich-select-list {\n width: 100%;\n min-width: 200px;\n height: 182px;\n}\n.ag-theme-balham .ag-rich-select-value {\n padding: 0 4px 0 12px;\n height: 28px;\n border-bottom: solid 1px;\n border-bottom-color: #bdc3c7;\n border-bottom-color: var(--ag-secondary-border-color, var(--ag-border-color, #bdc3c7));\n}\n.ag-theme-balham .ag-rich-select-virtual-list-item {\n cursor: default;\n height: 24px;\n}\n.ag-theme-balham .ag-rich-select-virtual-list-item:hover {\n background-color: #ecf0f1;\n background-color: var(--ag-row-hover-color, #ecf0f1);\n}\n.ag-theme-balham .ag-rich-select-row {\n padding-left: 12px;\n}\n.ag-theme-balham .ag-rich-select-row-selected {\n background-color: #b7e4ff;\n background-color: var(--ag-selected-row-background-color, #b7e4ff);\n}\n.ag-theme-balham .ag-row-drag,\n.ag-theme-balham .ag-selection-checkbox,\n.ag-theme-balham .ag-group-expanded,\n.ag-theme-balham .ag-group-contracted {\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n}\n.ag-theme-balham .ag-ltr .ag-row-drag, .ag-theme-balham .ag-ltr .ag-selection-checkbox, .ag-theme-balham .ag-ltr .ag-group-expanded, .ag-theme-balham .ag-ltr .ag-group-contracted {\n margin-right: 12px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-drag, .ag-theme-balham .ag-rtl .ag-selection-checkbox, .ag-theme-balham .ag-rtl .ag-group-expanded, .ag-theme-balham .ag-rtl .ag-group-contracted {\n margin-left: 12px;\n}\n\n.ag-theme-balham .ag-cell-wrapper > *:not(.ag-cell-value):not(.ag-group-value) {\n height: min(var(--ag-line-height, 26px), 26px);\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-flex: 0;\n flex: none;\n}\n.ag-theme-balham .ag-group-expanded,\n.ag-theme-balham .ag-group-contracted {\n cursor: pointer;\n}\n.ag-theme-balham .ag-group-title-bar-icon {\n cursor: pointer;\n -webkit-box-flex: 0;\n flex: none;\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n}\n.ag-theme-balham .ag-ltr .ag-group-child-count {\n margin-left: 2px;\n}\n\n.ag-theme-balham .ag-rtl .ag-group-child-count {\n margin-right: 2px;\n}\n\n.ag-theme-balham .ag-group-title-bar {\n background-color: #e2e9eb;\n background-color: var(--ag-subheader-background-color, #e2e9eb);\n padding: 4px;\n}\n.ag-theme-balham .ag-group-toolbar {\n padding: 4px;\n}\n.ag-theme-balham .ag-disabled-group-title-bar, .ag-theme-balham .ag-disabled-group-container {\n opacity: 0.5;\n}\n.ag-theme-balham .group-item {\n margin: 2px 0;\n}\n.ag-theme-balham .ag-label {\n white-space: nowrap;\n}\n.ag-theme-balham .ag-ltr .ag-label {\n margin-right: 4px;\n}\n\n.ag-theme-balham .ag-rtl .ag-label {\n margin-left: 4px;\n}\n\n.ag-theme-balham .ag-label-align-top .ag-label {\n margin-bottom: 2px;\n}\n.ag-theme-balham .ag-ltr .ag-slider-field, .ag-theme-balham .ag-ltr .ag-angle-select-field {\n margin-right: 8px;\n}\n\n.ag-theme-balham .ag-rtl .ag-slider-field, .ag-theme-balham .ag-rtl .ag-angle-select-field {\n margin-left: 8px;\n}\n\n.ag-theme-balham .ag-angle-select-parent-circle {\n width: 24px;\n height: 24px;\n border-radius: 12px;\n border: solid 1px;\n border-color: #bdc3c7;\n border-color: var(--ag-border-color, #bdc3c7);\n background-color: white;\n background-color: var(--ag-background-color, white);\n}\n.ag-theme-balham .ag-angle-select-child-circle {\n top: 4px;\n left: 12px;\n width: 6px;\n height: 6px;\n margin-left: -3px;\n margin-top: -4px;\n border-radius: 3px;\n background-color: rgba(0, 0, 0, 0.54);\n background-color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n}\n.ag-theme-balham .ag-picker-field-wrapper {\n border: 1px solid;\n border-color: #bdc3c7;\n border-color: var(--ag-border-color, #bdc3c7);\n border-radius: 5px;\n}\n.ag-theme-balham .ag-picker-field-wrapper:focus {\n -webkit-box-shadow: 0 0 2px 1px #719ECE;\n box-shadow: 0 0 2px 1px #719ECE;\n}\n.ag-theme-balham .ag-picker-field-button {\n background-color: white;\n background-color: var(--ag-background-color, white);\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n}\n.ag-theme-balham .ag-dialog.ag-color-dialog {\n border-radius: 5px;\n}\n.ag-theme-balham .ag-color-picker .ag-picker-field-display {\n height: 16px;\n}\n.ag-theme-balham .ag-color-panel {\n padding: 4px;\n}\n.ag-theme-balham .ag-spectrum-color {\n background-color: rgb(255, 0, 0);\n border-radius: 2px;\n}\n.ag-theme-balham .ag-spectrum-tools {\n padding: 10px;\n}\n.ag-theme-balham .ag-spectrum-sat {\n background-image: -webkit-gradient(linear, left top, right top, from(white), to(rgba(204, 154, 129, 0)));\n background-image: linear-gradient(to right, white, rgba(204, 154, 129, 0));\n}\n.ag-theme-balham .ag-spectrum-val {\n background-image: -webkit-gradient(linear, left bottom, left top, from(black), to(rgba(204, 154, 129, 0)));\n background-image: linear-gradient(to top, black, rgba(204, 154, 129, 0));\n}\n.ag-theme-balham .ag-spectrum-dragger {\n border-radius: 12px;\n height: 12px;\n width: 12px;\n border: 1px solid white;\n background: black;\n -webkit-box-shadow: 0 0 2px 0px rgba(0, 0, 0, 0.24);\n box-shadow: 0 0 2px 0px rgba(0, 0, 0, 0.24);\n}\n.ag-theme-balham .ag-spectrum-hue-background {\n border-radius: 2px;\n}\n.ag-theme-balham .ag-spectrum-alpha-background {\n border-radius: 2px;\n}\n.ag-theme-balham .ag-spectrum-tool {\n margin-bottom: 10px;\n height: 11px;\n border-radius: 2px;\n}\n.ag-theme-balham .ag-spectrum-slider {\n margin-top: -12px;\n width: 13px;\n height: 13px;\n border-radius: 13px;\n background-color: rgb(248, 248, 248);\n -webkit-box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\n box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\n}\n.ag-theme-balham .ag-recent-color {\n margin: 0 3px;\n}\n.ag-theme-balham .ag-recent-color:first-child {\n margin-left: 0;\n}\n.ag-theme-balham .ag-recent-color:last-child {\n margin-right: 0;\n}\n.ag-theme-balham.ag-dnd-ghost {\n border: solid 1px;\n border-color: #bdc3c7;\n border-color: var(--ag-border-color, #bdc3c7);\n background: white;\n background: var(--ag-background-color, white);\n border-radius: 2px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n overflow: hidden;\n text-overflow: ellipsis;\n border: solid 1px;\n border-color: #bdc3c7;\n border-color: var(--ag-secondary-border-color, var(--ag-border-color, #bdc3c7));\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n height: 32px !important;\n line-height: 32px;\n margin: 0;\n padding: 0 8px;\n -webkit-transform: translateY(8px);\n transform: translateY(8px);\n}\n.ag-theme-balham .ag-dnd-ghost-icon {\n margin-right: 4px;\n color: #000;\n color: var(--ag-foreground-color, #000);\n}\n.ag-theme-balham .ag-popup-child:not(.ag-tooltip-custom) {\n -webkit-box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.3);\n box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.3);\n}\n.ag-dragging-range-handle .ag-theme-balham .ag-dialog, .ag-dragging-fill-handle .ag-theme-balham .ag-dialog {\n opacity: 0.7;\n pointer-events: none;\n}\n.ag-theme-balham .ag-dialog {\n border-radius: 2px;\n border: solid 1px;\n border-color: #bdc3c7;\n border-color: var(--ag-border-color, #bdc3c7);\n}\n.ag-theme-balham .ag-panel {\n background-color: white;\n background-color: var(--ag-background-color, white);\n}\n.ag-theme-balham .ag-panel-title-bar {\n background-color: #f5f7f7;\n background-color: var(--ag-header-background-color, #f5f7f7);\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-header-foreground-color, var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54)));\n height: 32px;\n padding: 4px 12px;\n border-bottom: solid 1px;\n border-bottom-color: #bdc3c7;\n border-bottom-color: var(--ag-border-color, #bdc3c7);\n}\n.ag-theme-balham .ag-ltr .ag-panel-title-bar-button {\n margin-left: 4px;\n}\n\n.ag-theme-balham .ag-rtl .ag-panel-title-bar-button {\n margin-right: 4px;\n}\n\n.ag-theme-balham .ag-tooltip {\n background-color: #f5f7f7;\n background-color: var(--ag-header-background-color, #f5f7f7);\n color: #000;\n color: var(--ag-foreground-color, #000);\n padding: 4px;\n border: solid 1px;\n border-color: #bdc3c7;\n border-color: var(--ag-border-color, #bdc3c7);\n border-radius: 2px;\n -webkit-transition: opacity 1s;\n transition: opacity 1s;\n white-space: normal;\n}\n.ag-theme-balham .ag-tooltip.ag-tooltip-hiding {\n opacity: 0;\n}\n.ag-theme-balham .ag-tooltip-custom {\n -webkit-transition: opacity 1s;\n transition: opacity 1s;\n}\n.ag-theme-balham .ag-tooltip-custom.ag-tooltip-hiding {\n opacity: 0;\n}\n.ag-theme-balham .ag-ltr .ag-column-select-indent-1 {\n padding-left: 20px;\n}\n\n.ag-theme-balham .ag-rtl .ag-column-select-indent-1 {\n padding-right: 20px;\n}\n\n.ag-theme-balham .ag-ltr .ag-column-select-indent-2 {\n padding-left: 40px;\n}\n\n.ag-theme-balham .ag-rtl .ag-column-select-indent-2 {\n padding-right: 40px;\n}\n\n.ag-theme-balham .ag-ltr .ag-column-select-indent-3 {\n padding-left: 60px;\n}\n\n.ag-theme-balham .ag-rtl .ag-column-select-indent-3 {\n padding-right: 60px;\n}\n\n.ag-theme-balham .ag-ltr .ag-column-select-indent-4 {\n padding-left: 80px;\n}\n\n.ag-theme-balham .ag-rtl .ag-column-select-indent-4 {\n padding-right: 80px;\n}\n\n.ag-theme-balham .ag-ltr .ag-column-select-indent-5 {\n padding-left: 100px;\n}\n\n.ag-theme-balham .ag-rtl .ag-column-select-indent-5 {\n padding-right: 100px;\n}\n\n.ag-theme-balham .ag-ltr .ag-column-select-indent-6 {\n padding-left: 120px;\n}\n\n.ag-theme-balham .ag-rtl .ag-column-select-indent-6 {\n padding-right: 120px;\n}\n\n.ag-theme-balham .ag-ltr .ag-column-select-indent-7 {\n padding-left: 140px;\n}\n\n.ag-theme-balham .ag-rtl .ag-column-select-indent-7 {\n padding-right: 140px;\n}\n\n.ag-theme-balham .ag-ltr .ag-column-select-indent-8 {\n padding-left: 160px;\n}\n\n.ag-theme-balham .ag-rtl .ag-column-select-indent-8 {\n padding-right: 160px;\n}\n\n.ag-theme-balham .ag-ltr .ag-column-select-indent-9 {\n padding-left: 180px;\n}\n\n.ag-theme-balham .ag-rtl .ag-column-select-indent-9 {\n padding-right: 180px;\n}\n\n.ag-theme-balham .ag-column-select-header-icon {\n cursor: pointer;\n}\n.ag-theme-balham .ag-keyboard-focus .ag-column-select-header-icon:focus {\n outline: none;\n}\n.ag-theme-balham .ag-keyboard-focus .ag-column-select-header-icon:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 0px;\n left: 0px;\n display: block;\n width: calc(100% - 0px);\n height: calc(100% - 0px);\n border: 1px solid;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham .ag-ltr .ag-column-group-icons:not(:last-child), .ag-theme-balham .ag-ltr .ag-column-select-header-icon:not(:last-child), .ag-theme-balham .ag-ltr .ag-column-select-header-checkbox:not(:last-child), .ag-theme-balham .ag-ltr .ag-column-select-header-filter-wrapper:not(:last-child), .ag-theme-balham .ag-ltr .ag-column-select-checkbox:not(:last-child), .ag-theme-balham .ag-ltr .ag-column-select-column-drag-handle:not(:last-child), .ag-theme-balham .ag-ltr .ag-column-select-column-group-drag-handle:not(:last-child), .ag-theme-balham .ag-ltr .ag-column-select-column-label:not(:last-child) {\n margin-right: 8px;\n}\n\n.ag-theme-balham .ag-rtl .ag-column-group-icons:not(:last-child), .ag-theme-balham .ag-rtl .ag-column-select-header-icon:not(:last-child), .ag-theme-balham .ag-rtl .ag-column-select-header-checkbox:not(:last-child), .ag-theme-balham .ag-rtl .ag-column-select-header-filter-wrapper:not(:last-child), .ag-theme-balham .ag-rtl .ag-column-select-checkbox:not(:last-child), .ag-theme-balham .ag-rtl .ag-column-select-column-drag-handle:not(:last-child), .ag-theme-balham .ag-rtl .ag-column-select-column-group-drag-handle:not(:last-child), .ag-theme-balham .ag-rtl .ag-column-select-column-label:not(:last-child) {\n margin-left: 8px;\n}\n\n.ag-theme-balham .ag-keyboard-focus .ag-column-select-virtual-list-item:focus {\n outline: none;\n}\n.ag-theme-balham .ag-keyboard-focus .ag-column-select-virtual-list-item:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 1px;\n left: 1px;\n display: block;\n width: calc(100% - 2px);\n height: calc(100% - 2px);\n border: 1px solid;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham .ag-column-select-column-group:not(:last-child),\n.ag-theme-balham .ag-column-select-column:not(:last-child) {\n margin-bottom: 4px;\n}\n.ag-theme-balham .ag-column-select-column-readonly,\n.ag-theme-balham .ag-column-select-column-group-readonly {\n color: rgba(0, 0, 0, 0.38);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.38));\n pointer-events: none;\n}\n.ag-theme-balham .ag-ltr .ag-column-select-add-group-indent {\n margin-left: 24px;\n}\n\n.ag-theme-balham .ag-rtl .ag-column-select-add-group-indent {\n margin-right: 24px;\n}\n\n.ag-theme-balham .ag-column-select-virtual-list-viewport {\n padding: 3px 0px;\n}\n.ag-theme-balham .ag-column-select-virtual-list-item {\n padding: 0 6px;\n}\n.ag-theme-balham .ag-rtl {\n text-align: right;\n}\n.ag-theme-balham .ag-root-wrapper {\n border: solid 1px;\n border-color: #bdc3c7;\n border-color: var(--ag-border-color, #bdc3c7);\n}\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-1 {\n padding-left: 40px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-1 {\n padding-right: 40px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-1 {\n padding-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-1 {\n padding-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-1 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-1 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-2 {\n padding-left: 68px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-2 {\n padding-right: 68px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-2 {\n padding-left: 56px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-2 {\n padding-right: 56px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-2 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-2 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-3 {\n padding-left: 96px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-3 {\n padding-right: 96px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-3 {\n padding-left: 84px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-3 {\n padding-right: 84px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-3 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-3 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-4 {\n padding-left: 124px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-4 {\n padding-right: 124px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-4 {\n padding-left: 112px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-4 {\n padding-right: 112px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-4 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-4 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-5 {\n padding-left: 152px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-5 {\n padding-right: 152px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-5 {\n padding-left: 140px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-5 {\n padding-right: 140px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-5 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-5 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-6 {\n padding-left: 180px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-6 {\n padding-right: 180px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-6 {\n padding-left: 168px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-6 {\n padding-right: 168px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-6 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-6 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-7 {\n padding-left: 208px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-7 {\n padding-right: 208px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-7 {\n padding-left: 196px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-7 {\n padding-right: 196px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-7 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-7 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-8 {\n padding-left: 236px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-8 {\n padding-right: 236px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-8 {\n padding-left: 224px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-8 {\n padding-right: 224px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-8 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-8 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-9 {\n padding-left: 264px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-9 {\n padding-right: 264px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-9 {\n padding-left: 252px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-9 {\n padding-right: 252px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-9 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-9 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-10 {\n padding-left: 292px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-10 {\n padding-right: 292px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-10 {\n padding-left: 280px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-10 {\n padding-right: 280px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-10 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-10 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-11 {\n padding-left: 320px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-11 {\n padding-right: 320px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-11 {\n padding-left: 308px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-11 {\n padding-right: 308px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-11 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-11 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-12 {\n padding-left: 348px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-12 {\n padding-right: 348px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-12 {\n padding-left: 336px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-12 {\n padding-right: 336px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-12 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-12 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-13 {\n padding-left: 376px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-13 {\n padding-right: 376px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-13 {\n padding-left: 364px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-13 {\n padding-right: 364px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-13 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-13 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-14 {\n padding-left: 404px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-14 {\n padding-right: 404px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-14 {\n padding-left: 392px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-14 {\n padding-right: 392px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-14 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-14 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-15 {\n padding-left: 432px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-15 {\n padding-right: 432px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-15 {\n padding-left: 420px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-15 {\n padding-right: 420px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-15 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-15 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-16 {\n padding-left: 460px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-16 {\n padding-right: 460px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-16 {\n padding-left: 448px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-16 {\n padding-right: 448px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-16 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-16 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-17 {\n padding-left: 488px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-17 {\n padding-right: 488px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-17 {\n padding-left: 476px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-17 {\n padding-right: 476px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-17 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-17 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-18 {\n padding-left: 516px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-18 {\n padding-right: 516px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-18 {\n padding-left: 504px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-18 {\n padding-right: 504px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-18 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-18 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-19 {\n padding-left: 544px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-19 {\n padding-right: 544px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-19 {\n padding-left: 532px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-19 {\n padding-right: 532px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-19 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-19 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-20 {\n padding-left: 572px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-20 {\n padding-right: 572px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-20 {\n padding-left: 560px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-20 {\n padding-right: 560px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-20 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-20 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-21 {\n padding-left: 600px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-21 {\n padding-right: 600px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-21 {\n padding-left: 588px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-21 {\n padding-right: 588px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-21 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-21 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-22 {\n padding-left: 628px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-22 {\n padding-right: 628px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-22 {\n padding-left: 616px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-22 {\n padding-right: 616px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-22 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-22 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-23 {\n padding-left: 656px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-23 {\n padding-right: 656px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-23 {\n padding-left: 644px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-23 {\n padding-right: 644px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-23 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-23 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-24 {\n padding-left: 684px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-24 {\n padding-right: 684px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-24 {\n padding-left: 672px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-24 {\n padding-right: 672px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-24 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-24 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-25 {\n padding-left: 712px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-25 {\n padding-right: 712px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-25 {\n padding-left: 700px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-25 {\n padding-right: 700px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-25 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-25 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-26 {\n padding-left: 740px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-26 {\n padding-right: 740px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-26 {\n padding-left: 728px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-26 {\n padding-right: 728px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-26 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-26 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-27 {\n padding-left: 768px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-27 {\n padding-right: 768px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-27 {\n padding-left: 756px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-27 {\n padding-right: 756px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-27 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-27 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-28 {\n padding-left: 796px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-28 {\n padding-right: 796px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-28 {\n padding-left: 784px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-28 {\n padding-right: 784px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-28 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-28 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-29 {\n padding-left: 824px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-29 {\n padding-right: 824px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-29 {\n padding-left: 812px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-29 {\n padding-right: 812px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-29 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-29 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-30 {\n padding-left: 852px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-30 {\n padding-right: 852px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-30 {\n padding-left: 840px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-30 {\n padding-right: 840px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-30 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-30 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-31 {\n padding-left: 880px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-31 {\n padding-right: 880px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-31 {\n padding-left: 868px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-31 {\n padding-right: 868px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-31 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-31 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-32 {\n padding-left: 908px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-32 {\n padding-right: 908px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-32 {\n padding-left: 896px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-32 {\n padding-right: 896px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-32 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-32 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-33 {\n padding-left: 936px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-33 {\n padding-right: 936px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-33 {\n padding-left: 924px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-33 {\n padding-right: 924px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-33 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-33 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-34 {\n padding-left: 964px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-34 {\n padding-right: 964px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-34 {\n padding-left: 952px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-34 {\n padding-right: 952px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-34 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-34 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-35 {\n padding-left: 992px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-35 {\n padding-right: 992px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-35 {\n padding-left: 980px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-35 {\n padding-right: 980px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-35 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-35 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-36 {\n padding-left: 1020px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-36 {\n padding-right: 1020px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-36 {\n padding-left: 1008px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-36 {\n padding-right: 1008px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-36 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-36 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-37 {\n padding-left: 1048px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-37 {\n padding-right: 1048px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-37 {\n padding-left: 1036px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-37 {\n padding-right: 1036px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-37 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-37 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-38 {\n padding-left: 1076px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-38 {\n padding-right: 1076px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-38 {\n padding-left: 1064px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-38 {\n padding-right: 1064px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-38 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-38 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-39 {\n padding-left: 1104px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-39 {\n padding-right: 1104px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-39 {\n padding-left: 1092px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-39 {\n padding-right: 1092px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-39 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-39 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-40 {\n padding-left: 1132px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-40 {\n padding-right: 1132px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-40 {\n padding-left: 1120px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-40 {\n padding-right: 1120px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-40 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-40 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-41 {\n padding-left: 1160px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-41 {\n padding-right: 1160px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-41 {\n padding-left: 1148px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-41 {\n padding-right: 1148px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-41 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-41 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-42 {\n padding-left: 1188px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-42 {\n padding-right: 1188px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-42 {\n padding-left: 1176px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-42 {\n padding-right: 1176px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-42 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-42 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-43 {\n padding-left: 1216px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-43 {\n padding-right: 1216px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-43 {\n padding-left: 1204px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-43 {\n padding-right: 1204px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-43 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-43 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-44 {\n padding-left: 1244px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-44 {\n padding-right: 1244px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-44 {\n padding-left: 1232px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-44 {\n padding-right: 1232px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-44 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-44 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-45 {\n padding-left: 1272px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-45 {\n padding-right: 1272px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-45 {\n padding-left: 1260px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-45 {\n padding-right: 1260px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-45 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-45 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-46 {\n padding-left: 1300px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-46 {\n padding-right: 1300px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-46 {\n padding-left: 1288px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-46 {\n padding-right: 1288px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-46 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-46 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-47 {\n padding-left: 1328px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-47 {\n padding-right: 1328px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-47 {\n padding-left: 1316px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-47 {\n padding-right: 1316px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-47 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-47 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-48 {\n padding-left: 1356px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-48 {\n padding-right: 1356px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-48 {\n padding-left: 1344px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-48 {\n padding-right: 1344px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-48 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-48 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-49 {\n padding-left: 1384px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-49 {\n padding-right: 1384px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-49 {\n padding-left: 1372px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-49 {\n padding-right: 1372px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-49 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-49 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-50 {\n padding-left: 1412px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-50 {\n padding-right: 1412px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-50 {\n padding-left: 1400px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-50 {\n padding-right: 1400px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-50 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-50 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-51 {\n padding-left: 1440px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-51 {\n padding-right: 1440px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-51 {\n padding-left: 1428px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-51 {\n padding-right: 1428px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-51 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-51 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-52 {\n padding-left: 1468px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-52 {\n padding-right: 1468px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-52 {\n padding-left: 1456px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-52 {\n padding-right: 1456px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-52 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-52 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-53 {\n padding-left: 1496px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-53 {\n padding-right: 1496px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-53 {\n padding-left: 1484px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-53 {\n padding-right: 1484px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-53 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-53 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-54 {\n padding-left: 1524px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-54 {\n padding-right: 1524px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-54 {\n padding-left: 1512px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-54 {\n padding-right: 1512px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-54 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-54 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-55 {\n padding-left: 1552px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-55 {\n padding-right: 1552px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-55 {\n padding-left: 1540px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-55 {\n padding-right: 1540px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-55 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-55 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-56 {\n padding-left: 1580px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-56 {\n padding-right: 1580px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-56 {\n padding-left: 1568px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-56 {\n padding-right: 1568px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-56 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-56 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-57 {\n padding-left: 1608px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-57 {\n padding-right: 1608px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-57 {\n padding-left: 1596px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-57 {\n padding-right: 1596px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-57 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-57 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-58 {\n padding-left: 1636px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-58 {\n padding-right: 1636px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-58 {\n padding-left: 1624px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-58 {\n padding-right: 1624px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-58 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-58 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-59 {\n padding-left: 1664px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-59 {\n padding-right: 1664px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-59 {\n padding-left: 1652px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-59 {\n padding-right: 1652px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-59 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-59 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-60 {\n padding-left: 1692px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-60 {\n padding-right: 1692px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-60 {\n padding-left: 1680px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-60 {\n padding-right: 1680px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-60 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-60 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-61 {\n padding-left: 1720px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-61 {\n padding-right: 1720px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-61 {\n padding-left: 1708px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-61 {\n padding-right: 1708px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-61 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-61 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-62 {\n padding-left: 1748px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-62 {\n padding-right: 1748px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-62 {\n padding-left: 1736px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-62 {\n padding-right: 1736px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-62 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-62 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-63 {\n padding-left: 1776px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-63 {\n padding-right: 1776px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-63 {\n padding-left: 1764px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-63 {\n padding-right: 1764px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-63 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-63 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-64 {\n padding-left: 1804px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-64 {\n padding-right: 1804px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-64 {\n padding-left: 1792px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-64 {\n padding-right: 1792px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-64 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-64 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-65 {\n padding-left: 1832px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-65 {\n padding-right: 1832px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-65 {\n padding-left: 1820px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-65 {\n padding-right: 1820px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-65 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-65 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-66 {\n padding-left: 1860px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-66 {\n padding-right: 1860px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-66 {\n padding-left: 1848px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-66 {\n padding-right: 1848px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-66 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-66 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-67 {\n padding-left: 1888px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-67 {\n padding-right: 1888px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-67 {\n padding-left: 1876px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-67 {\n padding-right: 1876px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-67 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-67 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-68 {\n padding-left: 1916px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-68 {\n padding-right: 1916px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-68 {\n padding-left: 1904px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-68 {\n padding-right: 1904px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-68 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-68 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-69 {\n padding-left: 1944px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-69 {\n padding-right: 1944px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-69 {\n padding-left: 1932px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-69 {\n padding-right: 1932px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-69 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-69 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-70 {\n padding-left: 1972px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-70 {\n padding-right: 1972px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-70 {\n padding-left: 1960px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-70 {\n padding-right: 1960px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-70 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-70 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-71 {\n padding-left: 2000px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-71 {\n padding-right: 2000px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-71 {\n padding-left: 1988px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-71 {\n padding-right: 1988px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-71 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-71 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-72 {\n padding-left: 2028px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-72 {\n padding-right: 2028px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-72 {\n padding-left: 2016px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-72 {\n padding-right: 2016px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-72 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-72 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-73 {\n padding-left: 2056px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-73 {\n padding-right: 2056px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-73 {\n padding-left: 2044px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-73 {\n padding-right: 2044px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-73 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-73 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-74 {\n padding-left: 2084px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-74 {\n padding-right: 2084px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-74 {\n padding-left: 2072px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-74 {\n padding-right: 2072px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-74 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-74 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-75 {\n padding-left: 2112px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-75 {\n padding-right: 2112px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-75 {\n padding-left: 2100px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-75 {\n padding-right: 2100px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-75 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-75 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-76 {\n padding-left: 2140px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-76 {\n padding-right: 2140px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-76 {\n padding-left: 2128px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-76 {\n padding-right: 2128px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-76 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-76 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-77 {\n padding-left: 2168px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-77 {\n padding-right: 2168px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-77 {\n padding-left: 2156px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-77 {\n padding-right: 2156px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-77 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-77 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-78 {\n padding-left: 2196px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-78 {\n padding-right: 2196px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-78 {\n padding-left: 2184px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-78 {\n padding-right: 2184px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-78 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-78 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-79 {\n padding-left: 2224px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-79 {\n padding-right: 2224px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-79 {\n padding-left: 2212px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-79 {\n padding-right: 2212px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-79 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-79 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-80 {\n padding-left: 2252px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-80 {\n padding-right: 2252px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-80 {\n padding-left: 2240px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-80 {\n padding-right: 2240px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-80 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-80 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-81 {\n padding-left: 2280px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-81 {\n padding-right: 2280px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-81 {\n padding-left: 2268px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-81 {\n padding-right: 2268px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-81 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-81 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-82 {\n padding-left: 2308px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-82 {\n padding-right: 2308px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-82 {\n padding-left: 2296px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-82 {\n padding-right: 2296px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-82 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-82 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-83 {\n padding-left: 2336px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-83 {\n padding-right: 2336px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-83 {\n padding-left: 2324px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-83 {\n padding-right: 2324px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-83 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-83 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-84 {\n padding-left: 2364px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-84 {\n padding-right: 2364px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-84 {\n padding-left: 2352px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-84 {\n padding-right: 2352px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-84 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-84 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-85 {\n padding-left: 2392px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-85 {\n padding-right: 2392px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-85 {\n padding-left: 2380px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-85 {\n padding-right: 2380px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-85 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-85 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-86 {\n padding-left: 2420px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-86 {\n padding-right: 2420px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-86 {\n padding-left: 2408px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-86 {\n padding-right: 2408px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-86 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-86 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-87 {\n padding-left: 2448px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-87 {\n padding-right: 2448px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-87 {\n padding-left: 2436px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-87 {\n padding-right: 2436px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-87 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-87 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-88 {\n padding-left: 2476px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-88 {\n padding-right: 2476px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-88 {\n padding-left: 2464px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-88 {\n padding-right: 2464px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-88 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-88 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-89 {\n padding-left: 2504px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-89 {\n padding-right: 2504px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-89 {\n padding-left: 2492px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-89 {\n padding-right: 2492px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-89 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-89 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-90 {\n padding-left: 2532px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-90 {\n padding-right: 2532px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-90 {\n padding-left: 2520px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-90 {\n padding-right: 2520px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-90 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-90 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-91 {\n padding-left: 2560px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-91 {\n padding-right: 2560px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-91 {\n padding-left: 2548px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-91 {\n padding-right: 2548px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-91 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-91 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-92 {\n padding-left: 2588px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-92 {\n padding-right: 2588px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-92 {\n padding-left: 2576px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-92 {\n padding-right: 2576px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-92 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-92 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-93 {\n padding-left: 2616px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-93 {\n padding-right: 2616px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-93 {\n padding-left: 2604px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-93 {\n padding-right: 2604px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-93 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-93 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-94 {\n padding-left: 2644px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-94 {\n padding-right: 2644px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-94 {\n padding-left: 2632px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-94 {\n padding-right: 2632px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-94 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-94 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-95 {\n padding-left: 2672px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-95 {\n padding-right: 2672px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-95 {\n padding-left: 2660px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-95 {\n padding-right: 2660px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-95 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-95 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-96 {\n padding-left: 2700px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-96 {\n padding-right: 2700px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-96 {\n padding-left: 2688px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-96 {\n padding-right: 2688px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-96 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-96 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-97 {\n padding-left: 2728px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-97 {\n padding-right: 2728px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-97 {\n padding-left: 2716px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-97 {\n padding-right: 2716px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-97 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-97 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-98 {\n padding-left: 2756px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-98 {\n padding-right: 2756px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-98 {\n padding-left: 2744px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-98 {\n padding-right: 2744px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-98 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-98 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-99 {\n padding-left: 2784px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-99 {\n padding-right: 2784px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-indent-99 {\n padding-left: 2772px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-indent-99 {\n padding-right: 2772px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-level-99 .ag-pivot-leaf-group {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-level-99 .ag-pivot-leaf-group {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-ltr .ag-row-group-leaf-indent {\n margin-left: 28px;\n}\n\n.ag-theme-balham .ag-rtl .ag-row-group-leaf-indent {\n margin-right: 28px;\n}\n\n.ag-theme-balham .ag-value-change-delta {\n padding-right: 2px;\n}\n.ag-theme-balham .ag-value-change-delta-up {\n color: #43a047;\n color: var(--ag-value-change-delta-up-color, #43a047);\n}\n.ag-theme-balham .ag-value-change-delta-down {\n color: #e53935;\n color: var(--ag-value-change-delta-down-color, #e53935);\n}\n.ag-theme-balham .ag-value-change-value {\n background-color: transparent;\n border-radius: 1px;\n padding-left: 1px;\n padding-right: 1px;\n -webkit-transition: background-color 1s;\n transition: background-color 1s;\n}\n.ag-theme-balham .ag-value-change-value-highlight {\n background-color: rgba(22, 160, 133, 0.5);\n background-color: var(--ag-value-change-value-highlight-background-color, rgba(22, 160, 133, 0.5));\n -webkit-transition: background-color 0.1s;\n transition: background-color 0.1s;\n}\n.ag-theme-balham .ag-cell-data-changed {\n background-color: rgba(22, 160, 133, 0.5) !important;\n background-color: var(--ag-value-change-value-highlight-background-color, rgba(22, 160, 133, 0.5)) !important;\n}\n.ag-theme-balham .ag-cell-data-changed-animation {\n background-color: transparent;\n}\n.ag-theme-balham .ag-cell-highlight {\n background-color: #0091ea !important;\n background-color: var(--ag-range-selection-highlight-color, var(--ag-balham-active-color, #0091ea)) !important;\n}\n.ag-theme-balham .ag-row {\n height: 28px;\n background-color: white;\n background-color: var(--ag-background-color, white);\n color: #000;\n color: var(--ag-data-color, var(--ag-foreground-color, #000));\n border-width: 1px;\n border-color: #d9dcde;\n border-color: var(--ag-row-border-color, #d9dcde);\n border-bottom-style: solid;\n}\n.ag-theme-balham .ag-row-highlight-above::after, .ag-theme-balham .ag-row-highlight-below::after {\n content: \"\";\n position: absolute;\n width: calc(100% - 1px);\n height: 1px;\n background-color: #0091ea;\n background-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #0091ea));\n left: 1px;\n}\n.ag-theme-balham .ag-row-highlight-above::after {\n top: -1px;\n}\n.ag-theme-balham .ag-row-highlight-above.ag-row-first::after {\n top: 0;\n}\n.ag-theme-balham .ag-row-highlight-below::after {\n bottom: 0px;\n}\n.ag-theme-balham .ag-row-odd {\n background-color: #fcfdfe;\n background-color: var(--ag-odd-row-background-color, #fcfdfe);\n}\n.ag-theme-balham .ag-body-horizontal-scroll:not(.ag-scrollbar-invisible) .ag-horizontal-left-spacer:not(.ag-scroller-corner) {\n border-right: solid 1px;\n border-right-color: #bdc3c7;\n border-right-color: var(--ag-border-color, #bdc3c7);\n}\n.ag-theme-balham .ag-body-horizontal-scroll:not(.ag-scrollbar-invisible) .ag-horizontal-right-spacer:not(.ag-scroller-corner) {\n border-left: solid 1px;\n border-left-color: #bdc3c7;\n border-left-color: var(--ag-border-color, #bdc3c7);\n}\n.ag-theme-balham .ag-row-hover {\n background-color: #ecf0f1;\n background-color: var(--ag-row-hover-color, #ecf0f1);\n}\n.ag-theme-balham .ag-column-hover {\n background-color: #ecf0f1;\n background-color: var(--ag-column-hover-color, #ecf0f1);\n}\n.ag-theme-balham .ag-ltr .ag-right-aligned-cell {\n text-align: right;\n}\n\n.ag-theme-balham .ag-rtl .ag-right-aligned-cell {\n text-align: left;\n}\n\n.ag-theme-balham .ag-ltr .ag-right-aligned-cell .ag-cell-value, .ag-theme-balham .ag-ltr .ag-right-aligned-cell .ag-group-value {\n margin-left: auto;\n}\n\n.ag-theme-balham .ag-rtl .ag-right-aligned-cell .ag-cell-value, .ag-theme-balham .ag-rtl .ag-right-aligned-cell .ag-group-value {\n margin-right: auto;\n}\n\n.ag-theme-balham .ag-cell, .ag-theme-balham .ag-full-width-row .ag-cell-wrapper.ag-row-group {\n border: 1px solid transparent;\n line-height: min(var(--ag-line-height, 26px), 26px);\n padding-left: 11px;\n padding-right: 11px;\n -webkit-font-smoothing: subpixel-antialiased;\n}\n.ag-theme-balham .ag-row > .ag-cell-wrapper {\n padding-left: 11px;\n padding-right: 11px;\n}\n.ag-theme-balham .ag-row-dragging {\n cursor: move;\n opacity: 0.5;\n}\n.ag-theme-balham .ag-cell-inline-editing {\n border: solid 1px;\n border-color: #bdc3c7;\n border-color: var(--ag-border-color, #bdc3c7);\n background: white;\n background: var(--ag-background-color, white);\n border-radius: 2px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n padding: 0;\n height: 28px;\n background-color: #f5f7f7;\n background-color: var(--ag-control-panel-background-color, #f5f7f7);\n}\n.ag-theme-balham .ag-popup-editor {\n border: solid 1px;\n border-color: #bdc3c7;\n border-color: var(--ag-border-color, #bdc3c7);\n background: white;\n background: var(--ag-background-color, white);\n border-radius: 2px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n background-color: #f5f7f7;\n background-color: var(--ag-control-panel-background-color, #f5f7f7);\n padding: 0;\n}\n.ag-theme-balham .ag-large-text-input {\n height: auto;\n padding: 12px;\n}\n.ag-theme-balham .ag-details-row {\n padding: 20px;\n background-color: white;\n background-color: var(--ag-background-color, white);\n}\n.ag-theme-balham .ag-layout-auto-height .ag-center-cols-clipper, .ag-theme-balham .ag-layout-auto-height .ag-center-cols-container, .ag-theme-balham .ag-layout-print .ag-center-cols-clipper, .ag-theme-balham .ag-layout-print .ag-center-cols-container {\n min-height: 50px;\n}\n.ag-theme-balham .ag-overlay-loading-wrapper {\n background-color: rgba(255, 255, 255, 0.66);\n background-color: var(--ag-modal-overlay-background-color, rgba(255, 255, 255, 0.66));\n}\n.ag-theme-balham .ag-overlay-loading-center {\n border: solid 1px;\n border-color: #bdc3c7;\n border-color: var(--ag-border-color, #bdc3c7);\n background: white;\n background: var(--ag-background-color, white);\n border-radius: 2px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n}\n.ag-theme-balham .ag-overlay-no-rows-wrapper.ag-layout-auto-height {\n padding-top: 30px;\n}\n.ag-theme-balham .ag-loading {\n padding-left: 12px;\n display: -webkit-box;\n display: flex;\n height: 100%;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-balham .ag-loading-icon {\n padding-right: 12px;\n}\n.ag-theme-balham .ag-icon-loading {\n -webkit-animation-name: spin;\n animation-name: spin;\n -webkit-animation-duration: 1000ms;\n animation-duration: 1000ms;\n -webkit-animation-iteration-count: infinite;\n animation-iteration-count: infinite;\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n}\n@-webkit-keyframes spin {\n from {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@keyframes spin {\n from {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.ag-theme-balham .ag-floating-top {\n border-bottom: solid 1px;\n border-bottom-color: #bdc3c7;\n border-bottom-color: var(--ag-border-color, #bdc3c7);\n}\n.ag-theme-balham .ag-floating-bottom {\n border-top: solid 1px;\n border-top-color: #bdc3c7;\n border-top-color: var(--ag-border-color, #bdc3c7);\n}\n.ag-theme-balham .ag-ltr .ag-cell {\n border-right: solid transparent;\n}\n\n.ag-theme-balham .ag-rtl .ag-cell {\n border-left: solid transparent;\n}\n\n.ag-theme-balham .ag-ltr .ag-cell {\n border-right-width: 1px;\n}\n\n.ag-theme-balham .ag-rtl .ag-cell {\n border-left-width: 1px;\n}\n\n.ag-theme-balham .ag-cell.ag-cell-first-right-pinned:not(.ag-cell-range-left):not(.ag-cell-range-single-cell) {\n border-left: solid 1px;\n border-left-color: #bdc3c7;\n border-left-color: var(--ag-border-color, #bdc3c7);\n}\n.ag-theme-balham .ag-cell.ag-cell-last-left-pinned:not(.ag-cell-range-right):not(.ag-cell-range-single-cell) {\n border-right: solid 1px;\n border-right-color: #bdc3c7;\n border-right-color: var(--ag-border-color, #bdc3c7);\n}\n.ag-theme-balham .ag-row-selected {\n background-color: #b7e4ff;\n background-color: var(--ag-selected-row-background-color, #b7e4ff);\n}\n.ag-theme-balham .ag-cell-range-selected:not(.ag-cell-focus),\n.ag-theme-balham .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing) {\n background-color: rgba(0, 145, 234, 0.2);\n background-color: var(--ag-range-selection-background-color, rgba(0, 145, 234, 0.2));\n}\n.ag-theme-balham .ag-cell-range-selected:not(.ag-cell-focus).ag-cell-range-chart,\n.ag-theme-balham .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing).ag-cell-range-chart {\n background-color: rgba(0, 88, 255, 0.1) !important;\n background-color: var(--ag-range-selection-chart-background-color, rgba(0, 88, 255, 0.1)) !important;\n}\n.ag-theme-balham .ag-cell-range-selected:not(.ag-cell-focus).ag-cell-range-chart.ag-cell-range-chart-category,\n.ag-theme-balham .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing).ag-cell-range-chart.ag-cell-range-chart-category {\n background-color: rgba(0, 255, 132, 0.1) !important;\n background-color: var(--ag-range-selection-chart-category-background-color, rgba(0, 255, 132, 0.1)) !important;\n}\n.ag-theme-balham .ag-cell-range-selected-1:not(.ag-cell-focus),\n.ag-theme-balham .ag-root:not(.ag-context-menu-open) .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-1:not(.ag-cell-inline-editing) {\n background-color: rgba(0, 145, 234, 0.2);\n background-color: var(--ag-range-selection-background-color-1, var(--ag-range-selection-background-color, rgba(0, 145, 234, 0.2)));\n}\n.ag-theme-balham .ag-cell-range-selected-2:not(.ag-cell-focus),\n.ag-theme-balham .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-2 {\n background-color: rgba(0, 145, 234, 0.36);\n background-color: var(--ag-range-selection-background-color-2, rgba(0, 145, 234, 0.36));\n}\n.ag-theme-balham .ag-cell-range-selected-3:not(.ag-cell-focus),\n.ag-theme-balham .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-3 {\n background-color: rgba(0, 145, 234, 0.488);\n background-color: var(--ag-range-selection-background-color-3, rgba(0, 145, 234, 0.488));\n}\n.ag-theme-balham .ag-cell-range-selected-4:not(.ag-cell-focus),\n.ag-theme-balham .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-4 {\n background-color: rgba(0, 145, 234, 0.5904);\n background-color: var(--ag-range-selection-background-color-4, rgba(0, 145, 234, 0.5904));\n}\n.ag-theme-balham .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-top {\n border-top-color: #0091ea;\n border-top-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #0091ea));\n}\n.ag-theme-balham .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-right {\n border-right-color: #0091ea;\n border-right-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #0091ea));\n}\n.ag-theme-balham .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-bottom {\n border-bottom-color: #0091ea;\n border-bottom-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #0091ea));\n}\n.ag-theme-balham .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-left {\n border-left-color: #0091ea;\n border-left-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #0091ea));\n}\n.ag-theme-balham .ag-ltr .ag-has-focus .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-balham .ag-ltr .ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-balham .ag-ltr .ag-has-focus .ag-full-width-row.ag-row-focus .ag-cell-wrapper.ag-row-group,\n.ag-theme-balham .ag-ltr .ag-cell-range-single-cell,\n.ag-theme-balham .ag-ltr .ag-cell-range-single-cell.ag-cell-range-handle, .ag-theme-balham .ag-rtl .ag-has-focus .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-balham .ag-rtl .ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-balham .ag-rtl .ag-has-focus .ag-full-width-row.ag-row-focus .ag-cell-wrapper.ag-row-group,\n.ag-theme-balham .ag-rtl .ag-cell-range-single-cell,\n.ag-theme-balham .ag-rtl .ag-cell-range-single-cell.ag-cell-range-handle {\n border: 1px solid;\n border-color: #0091ea;\n border-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #0091ea));\n outline: initial;\n}\n.ag-theme-balham .ag-cell.ag-selection-fill-top,\n.ag-theme-balham .ag-cell.ag-selection-fill-top.ag-cell-range-selected {\n border-top: 1px dashed;\n border-top-color: #0091ea;\n border-top-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #0091ea));\n}\n.ag-theme-balham .ag-ltr .ag-cell.ag-selection-fill-right, .ag-theme-balham .ag-ltr .ag-cell.ag-selection-fill-right.ag-cell-range-selected {\n border-right: 1px dashed;\n border-right-color: #0091ea;\n border-right-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #0091ea));\n}\n\n.ag-theme-balham .ag-rtl .ag-cell.ag-selection-fill-right, .ag-theme-balham .ag-rtl .ag-cell.ag-selection-fill-right.ag-cell-range-selected {\n border-left: 1px dashed;\n border-left-color: #0091ea;\n border-left-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #0091ea));\n}\n\n.ag-theme-balham .ag-cell.ag-selection-fill-bottom,\n.ag-theme-balham .ag-cell.ag-selection-fill-bottom.ag-cell-range-selected {\n border-bottom: 1px dashed;\n border-bottom-color: #0091ea;\n border-bottom-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #0091ea));\n}\n.ag-theme-balham .ag-ltr .ag-cell.ag-selection-fill-left, .ag-theme-balham .ag-ltr .ag-cell.ag-selection-fill-left.ag-cell-range-selected {\n border-left: 1px dashed;\n border-left-color: #0091ea;\n border-left-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #0091ea));\n}\n\n.ag-theme-balham .ag-rtl .ag-cell.ag-selection-fill-left, .ag-theme-balham .ag-rtl .ag-cell.ag-selection-fill-left.ag-cell-range-selected {\n border-right: 1px dashed;\n border-right-color: #0091ea;\n border-right-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #0091ea));\n}\n\n.ag-theme-balham .ag-range-handle, .ag-theme-balham .ag-fill-handle {\n position: absolute;\n width: 6px;\n height: 6px;\n bottom: -1px;\n background-color: #0091ea;\n background-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #0091ea));\n}\n.ag-theme-balham .ag-ltr .ag-range-handle, .ag-theme-balham .ag-ltr .ag-fill-handle {\n right: -1px;\n}\n\n.ag-theme-balham .ag-rtl .ag-range-handle, .ag-theme-balham .ag-rtl .ag-fill-handle {\n left: -1px;\n}\n\n.ag-theme-balham .ag-fill-handle {\n cursor: cell;\n}\n.ag-theme-balham .ag-range-handle {\n cursor: nwse-resize;\n}\n.ag-theme-balham .ag-cell-inline-editing {\n border-color: #719ECE !important;\n border-color: var(--ag-input-focus-border-color, #719ECE) !important;\n}\n.ag-theme-balham .ag-menu {\n border: solid 1px;\n border-color: #bdc3c7;\n border-color: var(--ag-border-color, #bdc3c7);\n background: white;\n background: var(--ag-background-color, white);\n border-radius: 2px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n padding: 0;\n}\n.ag-theme-balham .ag-menu-list {\n cursor: default;\n padding: 4px 0;\n}\n.ag-theme-balham .ag-menu-separator {\n height: 9px;\n}\n.ag-theme-balham .ag-menu-separator-part::after {\n content: \"\";\n display: block;\n border-top: solid 1px;\n border-top-color: #bdc3c7;\n border-top-color: var(--ag-border-color, #bdc3c7);\n}\n.ag-theme-balham .ag-menu-option-active, .ag-theme-balham .ag-compact-menu-option-active {\n background-color: #ecf0f1;\n background-color: var(--ag-row-hover-color, #ecf0f1);\n}\n.ag-theme-balham .ag-menu-option-part, .ag-theme-balham .ag-compact-menu-option-part {\n line-height: 16px;\n padding: 6px 0;\n}\n.ag-theme-balham .ag-menu-option-disabled, .ag-theme-balham .ag-compact-menu-option-disabled {\n opacity: 0.5;\n}\n.ag-theme-balham .ag-menu-option-icon, .ag-theme-balham .ag-compact-menu-option-icon {\n width: 16px;\n}\n.ag-theme-balham .ag-ltr .ag-menu-option-icon, .ag-theme-balham .ag-ltr .ag-compact-menu-option-icon {\n padding-left: 8px;\n}\n\n.ag-theme-balham .ag-rtl .ag-menu-option-icon, .ag-theme-balham .ag-rtl .ag-compact-menu-option-icon {\n padding-right: 8px;\n}\n\n.ag-theme-balham .ag-menu-option-text, .ag-theme-balham .ag-compact-menu-option-text {\n padding-left: 8px;\n padding-right: 8px;\n}\n.ag-theme-balham .ag-ltr .ag-menu-option-shortcut, .ag-theme-balham .ag-ltr .ag-compact-menu-option-shortcut {\n padding-right: 4px;\n}\n\n.ag-theme-balham .ag-rtl .ag-menu-option-shortcut, .ag-theme-balham .ag-rtl .ag-compact-menu-option-shortcut {\n padding-left: 4px;\n}\n\n.ag-theme-balham .ag-menu-option-popup-pointer, .ag-theme-balham .ag-compact-menu-option-popup-pointer {\n padding-right: 4px;\n}\n.ag-theme-balham .ag-tabs {\n min-width: 220px;\n}\n.ag-theme-balham .ag-tabs-header {\n width: 100%;\n display: -webkit-box;\n display: flex;\n}\n.ag-theme-balham .ag-tab {\n border-bottom: 0 solid transparent;\n display: -webkit-box;\n display: flex;\n -webkit-box-flex: 0;\n flex: none;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n cursor: pointer;\n}\n.ag-theme-balham .ag-keyboard-focus .ag-tab:focus {\n outline: none;\n}\n.ag-theme-balham .ag-keyboard-focus .ag-tab:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham .ag-tab-selected {\n border-bottom-color: #0091ea;\n border-bottom-color: var(--ag-selected-tab-underline-color, var(--ag-range-selection-border-color, var(--ag-balham-active-color, #0091ea)));\n}\n.ag-theme-balham .ag-menu-header {\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n}\n.ag-theme-balham .ag-filter-separator {\n border-top: solid 1px;\n border-top-color: #bdc3c7;\n border-top-color: var(--ag-border-color, #bdc3c7);\n}\n.ag-theme-balham .ag-menu:not(.ag-tabs) .ag-filter-select {\n min-width: 167px;\n}\n.ag-theme-balham .ag-tabs .ag-filter-select {\n min-width: 206px;\n}\n.ag-theme-balham .ag-filter-select .ag-picker-field-wrapper {\n width: 0;\n}\n.ag-theme-balham .ag-filter-condition-operator {\n height: 17px;\n}\n.ag-theme-balham .ag-ltr .ag-filter-condition-operator-or {\n margin-left: 8px;\n}\n\n.ag-theme-balham .ag-rtl .ag-filter-condition-operator-or {\n margin-right: 8px;\n}\n\n.ag-theme-balham .ag-set-filter-select-all {\n padding-top: 6px;\n}\n.ag-theme-balham .ag-set-filter-list, .ag-theme-balham .ag-filter-no-matches {\n height: 144px;\n}\n.ag-theme-balham .ag-set-filter-filter {\n margin-top: 6px;\n margin-left: 6px;\n margin-right: 6px;\n}\n.ag-theme-balham .ag-filter-to {\n margin-top: 4px;\n}\n.ag-theme-balham .ag-mini-filter {\n margin: 6px 6px;\n}\n.ag-theme-balham .ag-set-filter-item {\n margin: 0px 6px;\n}\n.ag-theme-balham .ag-ltr .ag-set-filter-item-value {\n margin-left: 6px;\n}\n\n.ag-theme-balham .ag-rtl .ag-set-filter-item-value {\n margin-right: 6px;\n}\n\n.ag-theme-balham .ag-filter-apply-panel {\n padding: 6px 6px;\n border-top: solid 1px;\n border-top-color: #bdc3c7;\n border-top-color: var(--ag-secondary-border-color, var(--ag-border-color, #bdc3c7));\n}\n.ag-theme-balham .ag-filter-apply-panel-button {\n line-height: 1.5;\n}\n.ag-theme-balham .ag-ltr .ag-filter-apply-panel-button {\n margin-left: 8px;\n}\n\n.ag-theme-balham .ag-rtl .ag-filter-apply-panel-button {\n margin-right: 8px;\n}\n\n.ag-theme-balham .ag-simple-filter-body-wrapper {\n padding: 6px 6px;\n padding-bottom: 2px;\n}\n.ag-theme-balham .ag-simple-filter-body-wrapper > * {\n margin-bottom: 4px;\n}\n.ag-theme-balham .ag-filter-no-matches {\n padding: 6px 6px;\n}\n.ag-theme-balham .ag-multi-filter-menu-item {\n margin: 4px 0;\n}\n.ag-theme-balham .ag-multi-filter-group-title-bar {\n padding: 8px 4px;\n background-color: transparent;\n}\n.ag-theme-balham .ag-keyboard-focus .ag-multi-filter-group-title-bar:focus {\n outline: none;\n}\n.ag-theme-balham .ag-keyboard-focus .ag-multi-filter-group-title-bar:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham .ag-side-bar {\n position: relative;\n}\n.ag-theme-balham .ag-tool-panel-wrapper {\n width: 200px;\n background-color: #f5f7f7;\n background-color: var(--ag-control-panel-background-color, #f5f7f7);\n}\n.ag-theme-balham .ag-side-buttons {\n padding-top: 16px;\n width: 20px;\n position: relative;\n color: #000;\n color: var(--ag-foreground-color, #000);\n overflow: hidden;\n}\n.ag-theme-balham button.ag-side-button-button {\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n background: transparent;\n padding: 8px 0 8px 0;\n width: calc(100% + 1px);\n margin: 0;\n min-height: 72px;\n background-position-y: center;\n background-position-x: center;\n background-repeat: no-repeat;\n border: none;\n border-top: solid 1px;\n border-top-color: #bdc3c7;\n border-top-color: var(--ag-border-color, #bdc3c7);\n border-bottom: solid 1px;\n border-bottom-color: #bdc3c7;\n border-bottom-color: var(--ag-border-color, #bdc3c7);\n}\n.ag-theme-balham button.ag-side-button-button:focus {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.ag-theme-balham .ag-keyboard-focus .ag-side-button-button:focus {\n outline: none;\n}\n.ag-theme-balham .ag-keyboard-focus .ag-side-button-button:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham .ag-selected .ag-side-button-button {\n background-color: #f5f7f7;\n background-color: var(--ag-control-panel-background-color, #f5f7f7);\n border-top-color: #bdc3c7;\n border-top-color: var(--ag-border-color, #bdc3c7);\n border-bottom-color: #bdc3c7;\n border-bottom-color: var(--ag-border-color, #bdc3c7);\n}\n.ag-theme-balham .ag-side-button-icon-wrapper {\n margin-bottom: 3px;\n}\n.ag-theme-balham .ag-ltr .ag-side-bar-left,\n.ag-theme-balham .ag-rtl .ag-side-bar-right {\n border-right: solid 1px;\n border-right-color: #bdc3c7;\n border-right-color: var(--ag-border-color, #bdc3c7);\n}\n.ag-theme-balham .ag-ltr .ag-side-bar-left .ag-tool-panel-wrapper,\n.ag-theme-balham .ag-rtl .ag-side-bar-right .ag-tool-panel-wrapper {\n border-left: solid 1px;\n border-left-color: #bdc3c7;\n border-left-color: var(--ag-border-color, #bdc3c7);\n}\n.ag-theme-balham .ag-ltr .ag-side-bar-left .ag-side-button-button,\n.ag-theme-balham .ag-rtl .ag-side-bar-right .ag-side-button-button {\n border-right: 0 solid transparent;\n margin-right: -1px;\n padding-right: 1px;\n}\n.ag-theme-balham .ag-ltr .ag-side-bar-left .ag-selected .ag-side-button-button,\n.ag-theme-balham .ag-rtl .ag-side-bar-right .ag-selected .ag-side-button-button {\n border-right-color: #0091ea;\n border-right-color: var(--ag-selected-tab-underline-color, var(--ag-range-selection-border-color, var(--ag-balham-active-color, #0091ea)));\n}\n.ag-theme-balham .ag-rtl .ag-side-bar-left,\n.ag-theme-balham .ag-ltr .ag-side-bar-right {\n border-left: solid 1px;\n border-left-color: #bdc3c7;\n border-left-color: var(--ag-border-color, #bdc3c7);\n}\n.ag-theme-balham .ag-rtl .ag-side-bar-left .ag-tool-panel-wrapper,\n.ag-theme-balham .ag-ltr .ag-side-bar-right .ag-tool-panel-wrapper {\n border-right: solid 1px;\n border-right-color: #bdc3c7;\n border-right-color: var(--ag-border-color, #bdc3c7);\n}\n.ag-theme-balham .ag-rtl .ag-side-bar-left .ag-side-button-button,\n.ag-theme-balham .ag-ltr .ag-side-bar-right .ag-side-button-button {\n border-left: 0 solid transparent;\n margin-left: -1px;\n padding-left: 1px;\n}\n.ag-theme-balham .ag-rtl .ag-side-bar-left .ag-selected .ag-side-button-button,\n.ag-theme-balham .ag-ltr .ag-side-bar-right .ag-selected .ag-side-button-button {\n border-left-color: #0091ea;\n border-left-color: var(--ag-selected-tab-underline-color, var(--ag-range-selection-border-color, var(--ag-balham-active-color, #0091ea)));\n}\n.ag-theme-balham .ag-filter-toolpanel-header {\n height: 24px;\n}\n.ag-theme-balham .ag-ltr .ag-filter-toolpanel-header, .ag-theme-balham .ag-ltr .ag-filter-toolpanel-search {\n padding-left: 4px;\n}\n\n.ag-theme-balham .ag-rtl .ag-filter-toolpanel-header, .ag-theme-balham .ag-rtl .ag-filter-toolpanel-search {\n padding-right: 4px;\n}\n\n.ag-theme-balham .ag-keyboard-focus .ag-filter-toolpanel-header:focus {\n outline: none;\n}\n.ag-theme-balham .ag-keyboard-focus .ag-filter-toolpanel-header:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n font-family: \"agGridBalham\";\n font-size: 16px;\n line-height: 16px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n content: \"\\f114\";\n position: absolute;\n}\n.ag-theme-balham .ag-ltr .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n padding-left: 4px;\n}\n\n.ag-theme-balham .ag-rtl .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n padding-right: 4px;\n}\n\n.ag-theme-balham .ag-filter-toolpanel-group-level-0-header {\n height: 32px;\n}\n.ag-theme-balham .ag-filter-toolpanel-group-item {\n margin-top: 2px;\n margin-bottom: 2px;\n}\n.ag-theme-balham .ag-filter-toolpanel-search {\n height: 32px;\n}\n.ag-theme-balham .ag-filter-toolpanel-search-input {\n -webkit-box-flex: 1;\n flex-grow: 1;\n height: 16px;\n}\n.ag-theme-balham .ag-ltr .ag-filter-toolpanel-search-input {\n margin-right: 4px;\n}\n\n.ag-theme-balham .ag-rtl .ag-filter-toolpanel-search-input {\n margin-left: 4px;\n}\n\n.ag-theme-balham .ag-filter-toolpanel-group-level-0 {\n border-top: solid 1px;\n border-top-color: #bdc3c7;\n border-top-color: var(--ag-secondary-border-color, var(--ag-border-color, #bdc3c7));\n}\n.ag-theme-balham .ag-ltr .ag-filter-toolpanel-expand, .ag-theme-balham .ag-ltr .ag-filter-toolpanel-group-title-bar-icon {\n margin-right: 4px;\n}\n\n.ag-theme-balham .ag-rtl .ag-filter-toolpanel-expand, .ag-theme-balham .ag-rtl .ag-filter-toolpanel-group-title-bar-icon {\n margin-left: 4px;\n}\n\n.ag-theme-balham .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-1-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-balham .ag-ltr .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-2-header {\n padding-left: 20px;\n}\n\n.ag-theme-balham .ag-rtl .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-2-header {\n padding-right: 20px;\n}\n\n.ag-theme-balham .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-2-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-balham .ag-ltr .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-3-header {\n padding-left: 36px;\n}\n\n.ag-theme-balham .ag-rtl .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-3-header {\n padding-right: 36px;\n}\n\n.ag-theme-balham .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-3-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-balham .ag-ltr .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-4-header {\n padding-left: 52px;\n}\n\n.ag-theme-balham .ag-rtl .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-4-header {\n padding-right: 52px;\n}\n\n.ag-theme-balham .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-4-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-balham .ag-ltr .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-5-header {\n padding-left: 68px;\n}\n\n.ag-theme-balham .ag-rtl .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-5-header {\n padding-right: 68px;\n}\n\n.ag-theme-balham .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-5-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-balham .ag-ltr .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-6-header {\n padding-left: 84px;\n}\n\n.ag-theme-balham .ag-rtl .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-6-header {\n padding-right: 84px;\n}\n\n.ag-theme-balham .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-6-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-balham .ag-ltr .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-7-header {\n padding-left: 100px;\n}\n\n.ag-theme-balham .ag-rtl .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-7-header {\n padding-right: 100px;\n}\n\n.ag-theme-balham .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-7-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-balham .ag-ltr .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-8-header {\n padding-left: 116px;\n}\n\n.ag-theme-balham .ag-rtl .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-8-header {\n padding-right: 116px;\n}\n\n.ag-theme-balham .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-8-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-balham .ag-ltr .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-9-header {\n padding-left: 132px;\n}\n\n.ag-theme-balham .ag-rtl .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-9-header {\n padding-right: 132px;\n}\n\n.ag-theme-balham .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-9-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-balham .ag-ltr .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-10-header {\n padding-left: 148px;\n}\n\n.ag-theme-balham .ag-rtl .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-10-header {\n padding-right: 148px;\n}\n\n.ag-theme-balham .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-10-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-balham .ag-ltr .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-11-header {\n padding-left: 164px;\n}\n\n.ag-theme-balham .ag-rtl .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-11-header {\n padding-right: 164px;\n}\n\n.ag-theme-balham .ag-filter-toolpanel-instance-header.ag-filter-toolpanel-group-level-1-header {\n padding-left: 4px;\n}\n.ag-theme-balham .ag-filter-toolpanel-instance-filter {\n border-top: solid 1px;\n border-top-color: #bdc3c7;\n border-top-color: var(--ag-border-color, #bdc3c7);\n border-bottom: solid 1px;\n border-bottom-color: #bdc3c7;\n border-bottom-color: var(--ag-border-color, #bdc3c7);\n margin-top: 4px;\n}\n.ag-theme-balham .ag-ltr .ag-filter-toolpanel-instance-header-icon {\n margin-left: 4px;\n}\n\n.ag-theme-balham .ag-rtl .ag-filter-toolpanel-instance-header-icon {\n margin-right: 4px;\n}\n\n.ag-theme-balham .ag-pivot-mode-panel {\n min-height: 32px;\n height: 32px;\n display: -webkit-box;\n display: flex;\n}\n.ag-theme-balham .ag-pivot-mode-select {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-balham .ag-ltr .ag-pivot-mode-select {\n margin-left: 6px;\n}\n\n.ag-theme-balham .ag-rtl .ag-pivot-mode-select {\n margin-right: 6px;\n}\n\n.ag-theme-balham .ag-keyboard-focus .ag-column-select-header:focus {\n outline: none;\n}\n.ag-theme-balham .ag-keyboard-focus .ag-column-select-header:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham .ag-column-select-header {\n height: 32px;\n -webkit-box-align: center;\n align-items: center;\n padding: 0 6px;\n border-bottom: solid 1px;\n border-bottom-color: #bdc3c7;\n border-bottom-color: var(--ag-secondary-border-color, var(--ag-border-color, #bdc3c7));\n}\n.ag-theme-balham .ag-column-panel-column-select {\n border-bottom: solid 1px;\n border-bottom-color: #bdc3c7;\n border-bottom-color: var(--ag-secondary-border-color, var(--ag-border-color, #bdc3c7));\n border-top: solid 1px;\n border-top-color: #bdc3c7;\n border-top-color: var(--ag-secondary-border-color, var(--ag-border-color, #bdc3c7));\n}\n.ag-theme-balham .ag-column-group-icons,\n.ag-theme-balham .ag-column-select-header-icon {\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n}\n.ag-theme-balham .ag-column-select-list .ag-list-item-hovered::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n height: 1px;\n background-color: #0091ea;\n background-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #0091ea));\n}\n.ag-theme-balham .ag-column-select-list .ag-item-highlight-top::after {\n top: 0;\n}\n.ag-theme-balham .ag-column-select-list .ag-item-highlight-bottom::after {\n bottom: 0;\n}\n.ag-theme-balham .ag-header {\n background-color: #f5f7f7;\n background-color: var(--ag-header-background-color, #f5f7f7);\n border-bottom: solid 1px;\n border-bottom-color: #bdc3c7;\n border-bottom-color: var(--ag-border-color, #bdc3c7);\n}\n.ag-theme-balham .ag-header-row {\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-header-foreground-color, var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54)));\n height: 32px;\n}\n.ag-theme-balham .ag-pinned-right-header {\n border-left: solid 1px;\n border-left-color: #bdc3c7;\n border-left-color: var(--ag-border-color, #bdc3c7);\n}\n.ag-theme-balham .ag-pinned-left-header {\n border-right: solid 1px;\n border-right-color: #bdc3c7;\n border-right-color: var(--ag-border-color, #bdc3c7);\n}\n.ag-theme-balham .ag-ltr .ag-header-cell:not(.ag-right-aligned-header) .ag-header-label-icon {\n margin-left: 4px;\n}\n\n.ag-theme-balham .ag-rtl .ag-header-cell:not(.ag-right-aligned-header) .ag-header-label-icon {\n margin-right: 4px;\n}\n\n.ag-theme-balham .ag-ltr .ag-header-cell.ag-right-aligned-header .ag-header-label-icon {\n margin-right: 4px;\n}\n\n.ag-theme-balham .ag-rtl .ag-header-cell.ag-right-aligned-header .ag-header-label-icon {\n margin-left: 4px;\n}\n\n.ag-theme-balham .ag-header-cell,\n.ag-theme-balham .ag-header-group-cell {\n padding-left: 12px;\n padding-right: 12px;\n}\n.ag-theme-balham .ag-header-cell.ag-header-cell-moving,\n.ag-theme-balham .ag-header-group-cell.ag-header-cell-moving {\n background-color: white;\n background-color: var(--ag-header-cell-moving-background-color, var(--ag-background-color, white));\n}\n.ag-theme-balham .ag-keyboard-focus .ag-header-cell:focus {\n outline: none;\n}\n.ag-theme-balham .ag-keyboard-focus .ag-header-cell:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham .ag-keyboard-focus .ag-header-group-cell:focus {\n outline: none;\n}\n.ag-theme-balham .ag-keyboard-focus .ag-header-group-cell:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham .ag-header-icon {\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n}\n.ag-theme-balham .ag-header-expand-icon {\n cursor: pointer;\n}\n.ag-theme-balham .ag-ltr .ag-header-expand-icon {\n padding-left: 4px;\n}\n\n.ag-theme-balham .ag-rtl .ag-header-expand-icon {\n padding-right: 4px;\n}\n\n.ag-theme-balham .ag-header-row:not(:first-child) .ag-header-cell,\n.ag-theme-balham .ag-header-row:not(:first-child) .ag-header-group-cell.ag-header-group-cell-with-group {\n border-top: solid 1px;\n border-top-color: #bdc3c7;\n border-top-color: var(--ag-border-color, #bdc3c7);\n}\n.ag-theme-balham .ag-header-cell::after,\n.ag-theme-balham .ag-header-group-cell::after {\n content: \"\";\n position: absolute;\n z-index: 1;\n display: block;\n width: 1px;\n height: 50%;\n top: calc(50% - 25%);\n background-color: rgba(189, 195, 199, 0.5);\n background-color: var(--ag-header-column-separator-color, rgba(189, 195, 199, 0.5));\n}\n.ag-theme-balham .ag-ltr .ag-header-cell::after, .ag-theme-balham .ag-ltr .ag-header-group-cell::after {\n right: 0;\n}\n\n.ag-theme-balham .ag-rtl .ag-header-cell::after, .ag-theme-balham .ag-rtl .ag-header-group-cell::after {\n left: 0;\n}\n\n.ag-theme-balham .ag-ltr .ag-header-select-all {\n margin-right: 12px;\n}\n\n.ag-theme-balham .ag-rtl .ag-header-select-all {\n margin-left: 12px;\n}\n\n.ag-theme-balham .ag-ltr .ag-floating-filter-button {\n margin-left: 12px;\n}\n\n.ag-theme-balham .ag-rtl .ag-floating-filter-button {\n margin-right: 12px;\n}\n\n.ag-theme-balham .ag-floating-filter-button-button {\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background: transparent;\n border: none;\n height: 16px;\n padding: 0;\n width: 16px;\n}\n.ag-theme-balham .ag-filter-loading {\n background-color: #f5f7f7;\n background-color: var(--ag-control-panel-background-color, #f5f7f7);\n height: 100%;\n padding: 6px 6px;\n position: absolute;\n width: 100%;\n z-index: 1;\n}\n.ag-theme-balham .ag-paging-panel {\n border-top: 1px solid;\n border-top-color: #bdc3c7;\n border-top-color: var(--ag-border-color, #bdc3c7);\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n height: 32px;\n}\n.ag-theme-balham .ag-paging-panel > * {\n margin: 0 12px;\n}\n.ag-theme-balham .ag-paging-button {\n cursor: pointer;\n}\n.ag-theme-balham .ag-paging-button.ag-disabled {\n cursor: default;\n color: rgba(0, 0, 0, 0.38);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.38));\n}\n.ag-theme-balham .ag-keyboard-focus .ag-paging-button:focus {\n outline: none;\n}\n.ag-theme-balham .ag-keyboard-focus .ag-paging-button:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 0px;\n left: 0px;\n display: block;\n width: calc(100% - 0px);\n height: calc(100% - 0px);\n border: 1px solid;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham .ag-paging-button, .ag-theme-balham .ag-paging-description {\n margin: 0 4px;\n}\n.ag-theme-balham .ag-status-bar {\n border-top: solid 1px;\n border-top-color: #bdc3c7;\n border-top-color: var(--ag-border-color, #bdc3c7);\n color: rgba(0, 0, 0, 0.38);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.38));\n padding-right: 16px;\n padding-left: 16px;\n line-height: 1.5;\n}\n.ag-theme-balham .ag-status-name-value-value {\n color: #000;\n color: var(--ag-foreground-color, #000);\n}\n.ag-theme-balham .ag-status-bar-center {\n text-align: center;\n}\n.ag-theme-balham .ag-status-name-value {\n margin-left: 4px;\n margin-right: 4px;\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.ag-theme-balham .ag-column-drop-cell {\n background: #dddede;\n background: var(--ag-chip-background-color, #dddede);\n border-radius: 16px;\n height: 16px;\n padding: 0 2px;\n border: 1px solid transparent;\n}\n.ag-theme-balham .ag-keyboard-focus .ag-column-drop-cell:focus {\n outline: none;\n}\n.ag-theme-balham .ag-keyboard-focus .ag-column-drop-cell:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 2px;\n left: 2px;\n display: block;\n width: calc(100% - 4px);\n height: calc(100% - 4px);\n border: 1px solid;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham .ag-column-drop-cell-text {\n margin: 0 4px;\n}\n.ag-theme-balham .ag-column-drop-cell-button {\n min-width: 16px;\n margin: 0 2px;\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n}\n.ag-theme-balham .ag-column-drop-cell-drag-handle {\n margin-left: 8px;\n}\n.ag-theme-balham .ag-column-drop-cell-ghost {\n opacity: 0.5;\n}\n.ag-theme-balham .ag-column-drop-horizontal {\n background-color: #f5f7f7;\n background-color: var(--ag-control-panel-background-color, #f5f7f7);\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n height: 28px;\n border-bottom: solid 1px;\n border-bottom-color: #bdc3c7;\n border-bottom-color: var(--ag-border-color, #bdc3c7);\n}\n.ag-theme-balham .ag-ltr .ag-column-drop-horizontal {\n padding-left: 12px;\n}\n\n.ag-theme-balham .ag-rtl .ag-column-drop-horizontal {\n padding-right: 12px;\n}\n\n.ag-theme-balham .ag-ltr .ag-column-drop-horizontal-half-width:not(:last-child) {\n border-right: solid 1px;\n border-right-color: #bdc3c7;\n border-right-color: var(--ag-border-color, #bdc3c7);\n}\n\n.ag-theme-balham .ag-rtl .ag-column-drop-horizontal-half-width:not(:last-child) {\n border-left: solid 1px;\n border-left-color: #bdc3c7;\n border-left-color: var(--ag-border-color, #bdc3c7);\n}\n\n.ag-theme-balham .ag-column-drop-horizontal-cell-separator {\n margin: 0 4px;\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n}\n.ag-theme-balham .ag-column-drop-horizontal-empty-message {\n color: rgba(0, 0, 0, 0.38);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.38));\n}\n.ag-theme-balham .ag-ltr .ag-column-drop-horizontal-icon {\n margin-right: 12px;\n}\n\n.ag-theme-balham .ag-rtl .ag-column-drop-horizontal-icon {\n margin-left: 12px;\n}\n\n.ag-theme-balham .ag-column-drop-vertical-list {\n padding-bottom: 4px;\n padding-right: 4px;\n padding-left: 4px;\n}\n.ag-theme-balham .ag-column-drop-vertical-cell {\n margin-top: 4px;\n}\n.ag-theme-balham .ag-column-drop-vertical {\n min-height: 50px;\n border-bottom: solid 1px;\n border-bottom-color: #bdc3c7;\n border-bottom-color: var(--ag-secondary-border-color, var(--ag-border-color, #bdc3c7));\n}\n.ag-theme-balham .ag-column-drop-vertical.ag-last-column-drop {\n border-bottom: none;\n}\n.ag-theme-balham .ag-column-drop-vertical-icon {\n margin-left: 4px;\n margin-right: 4px;\n}\n.ag-theme-balham .ag-column-drop-vertical-empty-message {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n overflow: hidden;\n color: rgba(0, 0, 0, 0.38);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.38));\n margin-top: 4px;\n}\n.ag-theme-balham .ag-select-agg-func-popup {\n border: solid 1px;\n border-color: #bdc3c7;\n border-color: var(--ag-border-color, #bdc3c7);\n background: white;\n background: var(--ag-background-color, white);\n border-radius: 2px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n background: white;\n background: var(--ag-background-color, white);\n height: 70px;\n padding: 0;\n}\n.ag-theme-balham .ag-select-agg-func-virtual-list-item {\n cursor: default;\n padding-left: 8px;\n}\n.ag-theme-balham .ag-select-agg-func-virtual-list-item:hover {\n background-color: #b7e4ff;\n background-color: var(--ag-selected-row-background-color, #b7e4ff);\n}\n.ag-theme-balham .ag-keyboard-focus .ag-select-agg-func-virtual-list-item:focus {\n outline: none;\n}\n.ag-theme-balham .ag-keyboard-focus .ag-select-agg-func-virtual-list-item:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 1px;\n left: 1px;\n display: block;\n width: calc(100% - 2px);\n height: calc(100% - 2px);\n border: 1px solid;\n border-color: #719ECE;\n border-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham .ag-chart-menu {\n border-radius: 2px;\n background: white;\n background: var(--ag-background-color, white);\n}\n.ag-theme-balham .ag-chart-menu-icon {\n opacity: 0.5;\n line-height: 24px;\n font-size: 24px;\n width: 24px;\n height: 24px;\n margin: 2px 0;\n cursor: pointer;\n border-radius: 2px;\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n}\n.ag-theme-balham .ag-chart-menu-icon:hover {\n opacity: 1;\n}\n.ag-theme-balham .ag-chart-mini-thumbnail {\n border: 1px solid;\n border-color: #bdc3c7;\n border-color: var(--ag-secondary-border-color, var(--ag-border-color, #bdc3c7));\n border-radius: 5px;\n margin: 5px;\n}\n.ag-theme-balham .ag-chart-mini-thumbnail:nth-last-child(3), .ag-theme-balham .ag-chart-mini-thumbnail:nth-last-child(3) ~ .ag-chart-mini-thumbnail {\n margin-left: auto;\n margin-right: auto;\n}\n.ag-theme-balham .ag-ltr .ag-chart-mini-thumbnail:first-child {\n margin-left: 0;\n}\n\n.ag-theme-balham .ag-rtl .ag-chart-mini-thumbnail:first-child {\n margin-right: 0;\n}\n\n.ag-theme-balham .ag-ltr .ag-chart-mini-thumbnail:last-child {\n margin-right: 0;\n}\n\n.ag-theme-balham .ag-rtl .ag-chart-mini-thumbnail:last-child {\n margin-left: 0;\n}\n\n.ag-theme-balham .ag-chart-mini-thumbnail.ag-selected {\n border-color: #0091ea;\n border-color: var(--ag-minichart-selected-chart-color, var(--ag-checkbox-checked-color, var(--ag-balham-active-color, #0091ea)));\n}\n.ag-theme-balham .ag-chart-settings-card-item {\n background: #000;\n background: var(--ag-foreground-color, #000);\n width: 8px;\n height: 8px;\n border-radius: 4px;\n}\n.ag-theme-balham .ag-chart-settings-card-item.ag-selected {\n background-color: #0091ea;\n background-color: var(--ag-minichart-selected-page-color, var(--ag-checkbox-checked-color, var(--ag-balham-active-color, #0091ea)));\n}\n.ag-theme-balham .ag-chart-data-column-drag-handle {\n margin-left: 4px;\n}\n.ag-theme-balham .ag-charts-settings-group-title-bar,\n.ag-theme-balham .ag-charts-data-group-title-bar,\n.ag-theme-balham .ag-charts-format-top-level-group-title-bar {\n border-top: solid 1px;\n border-top-color: #bdc3c7;\n border-top-color: var(--ag-secondary-border-color, var(--ag-border-color, #bdc3c7));\n}\n.ag-theme-balham .ag-charts-settings-group-container {\n padding: 4px;\n}\n.ag-theme-balham .ag-charts-data-group-container {\n padding: 3px 6px;\n}\n.ag-theme-balham .ag-charts-data-group-container .ag-charts-data-group-item:not(.ag-charts-format-sub-level-group) {\n height: 24px;\n}\n.ag-theme-balham .ag-charts-data-group-container .ag-list-item-hovered::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n height: 1px;\n background-color: #0091ea;\n background-color: var(--ag-range-selection-border-color, var(--ag-balham-active-color, #0091ea));\n}\n.ag-theme-balham .ag-charts-data-group-container .ag-item-highlight-top::after {\n top: 0;\n}\n.ag-theme-balham .ag-charts-data-group-container .ag-item-highlight-bottom::after {\n bottom: 0;\n}\n.ag-theme-balham .ag-charts-format-top-level-group-container {\n margin-left: 8px;\n padding: 4px;\n}\n.ag-theme-balham .ag-charts-format-top-level-group-item {\n margin: 4px 0;\n}\n.ag-theme-balham .ag-charts-format-sub-level-group-container {\n padding: 6px 6px;\n padding-bottom: 2px;\n}\n.ag-theme-balham .ag-charts-format-sub-level-group-container > * {\n margin-bottom: 4px;\n}\n.ag-theme-balham .ag-charts-group-container.ag-group-container-horizontal {\n padding: 4px;\n}\n.ag-theme-balham .ag-chart-data-section,\n.ag-theme-balham .ag-chart-format-section {\n display: -webkit-box;\n display: flex;\n margin: 0;\n}\n.ag-theme-balham .ag-chart-menu-panel {\n background-color: #f5f7f7;\n background-color: var(--ag-control-panel-background-color, #f5f7f7);\n}\n.ag-theme-balham .ag-ltr .ag-chart-menu-panel {\n border-left: solid 1px;\n border-left-color: #bdc3c7;\n border-left-color: var(--ag-border-color, #bdc3c7);\n}\n\n.ag-theme-balham .ag-rtl .ag-chart-menu-panel {\n border-right: solid 1px;\n border-right-color: #bdc3c7;\n border-right-color: var(--ag-border-color, #bdc3c7);\n}\n\n.ag-theme-balham .ag-date-time-list-page-title {\n -webkit-box-flex: 1;\n flex-grow: 1;\n text-align: center;\n}\n.ag-theme-balham .ag-date-time-list-page-column-label {\n text-align: center;\n}\n.ag-theme-balham .ag-date-time-list-page-entry {\n text-align: center;\n}\n.ag-theme-balham .ag-checkbox-input-wrapper {\n font-family: \"agGridBalham\";\n font-size: 16px;\n line-height: 16px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 16px;\n height: 16px;\n background-color: white;\n background-color: var(--ag-checkbox-background-color, var(--ag-background-color, white));\n border-radius: 3px;\n display: inline-block;\n vertical-align: middle;\n -webkit-box-flex: 0;\n flex: none;\n}\n.ag-theme-balham .ag-checkbox-input-wrapper input, .ag-theme-balham .ag-checkbox-input-wrapper input {\n -webkit-appearance: none;\n opacity: 0;\n width: 100%;\n height: 100%;\n}\n.ag-theme-balham .ag-checkbox-input-wrapper:focus-within, .ag-theme-balham .ag-checkbox-input-wrapper:active {\n outline: none;\n -webkit-box-shadow: 0 0 2px 1px #719ECE;\n box-shadow: 0 0 2px 1px #719ECE;\n}\n.ag-theme-balham .ag-checkbox-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-balham .ag-checkbox-input-wrapper::after {\n content: \"\\f108\";\n color: #7f8c8d;\n color: var(--ag-checkbox-unchecked-color, #7f8c8d);\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-balham .ag-checkbox-input-wrapper.ag-checked::after {\n content: \"\\f106\";\n color: #0091ea;\n color: var(--ag-checkbox-checked-color, var(--ag-balham-active-color, #0091ea));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-balham .ag-checkbox-input-wrapper.ag-indeterminate::after {\n content: \"\\f107\";\n color: #7f8c8d;\n color: var(--ag-checkbox-indeterminate-color, var(--ag-checkbox-unchecked-color, #7f8c8d));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-balham .ag-toggle-button-input-wrapper {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n width: 32px;\n height: 16px;\n background-color: #7f8c8d;\n background-color: var(--ag-toggle-button-off-background-color, var(--ag-checkbox-unchecked-color, #7f8c8d));\n border-radius: 8px;\n position: relative;\n -webkit-box-flex: 0;\n flex: none;\n border: 1px solid;\n border-color: #7f8c8d;\n border-color: var(--ag-toggle-button-off-border-color, var(--ag-checkbox-unchecked-color, #7f8c8d));\n}\n.ag-theme-balham .ag-toggle-button-input-wrapper input {\n opacity: 0;\n height: 100%;\n width: 100%;\n}\n.ag-theme-balham .ag-toggle-button-input-wrapper:focus-within {\n outline: none;\n -webkit-box-shadow: 0 0 2px 1px #719ECE;\n box-shadow: 0 0 2px 1px #719ECE;\n}\n.ag-theme-balham .ag-toggle-button-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-balham .ag-toggle-button-input-wrapper.ag-checked {\n background-color: #0091ea;\n background-color: var(--ag-toggle-button-on-background-color, var(--ag-checkbox-checked-color, var(--ag-balham-active-color, #0091ea)));\n border-color: #0091ea;\n border-color: var(--ag-toggle-button-on-border-color, var(--ag-checkbox-checked-color, var(--ag-balham-active-color, #0091ea)));\n}\n.ag-theme-balham .ag-toggle-button-input-wrapper::before {\n content: \" \";\n position: absolute;\n top: -1px;\n left: -1px;\n display: block;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n height: 16px;\n width: 16px;\n background-color: white;\n background-color: var(--ag-toggle-button-switch-background-color, var(--ag-background-color, white));\n border-radius: 8px;\n -webkit-transition: left 100ms;\n transition: left 100ms;\n border: 1px solid;\n border-color: #7f8c8d;\n border-color: var(--ag-toggle-button-switch-border-color, var(--ag-toggle-button-off-border-color, var(--ag-checkbox-unchecked-color, #7f8c8d)));\n}\n.ag-theme-balham .ag-toggle-button-input-wrapper.ag-checked::before {\n left: calc(100% - 16px );\n border-color: #0091ea;\n border-color: var(--ag-toggle-button-on-border-color, var(--ag-checkbox-checked-color, var(--ag-balham-active-color, #0091ea)));\n}\n.ag-theme-balham .ag-radio-button-input-wrapper {\n font-family: \"agGridBalham\";\n font-size: 16px;\n line-height: 16px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 16px;\n height: 16px;\n background-color: white;\n background-color: var(--ag-checkbox-background-color, var(--ag-background-color, white));\n border-radius: 3px;\n display: inline-block;\n vertical-align: middle;\n -webkit-box-flex: 0;\n flex: none;\n border-radius: 16px;\n}\n.ag-theme-balham .ag-radio-button-input-wrapper input, .ag-theme-balham .ag-radio-button-input-wrapper input {\n -webkit-appearance: none;\n opacity: 0;\n width: 100%;\n height: 100%;\n}\n.ag-theme-balham .ag-radio-button-input-wrapper:focus-within, .ag-theme-balham .ag-radio-button-input-wrapper:active {\n outline: none;\n -webkit-box-shadow: 0 0 2px 1px #719ECE;\n box-shadow: 0 0 2px 1px #719ECE;\n}\n.ag-theme-balham .ag-radio-button-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-balham .ag-radio-button-input-wrapper::after {\n content: \"\\f126\";\n color: #7f8c8d;\n color: var(--ag-checkbox-unchecked-color, #7f8c8d);\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-balham .ag-radio-button-input-wrapper.ag-checked::after {\n content: \"\\f127\";\n color: #0091ea;\n color: var(--ag-checkbox-checked-color, var(--ag-balham-active-color, #0091ea));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-balham input[class^=ag-][type=range] {\n -webkit-appearance: none;\n width: 100%;\n height: 100%;\n background: none;\n overflow: visible;\n}\n.ag-theme-balham input[class^=ag-][type=range]::-webkit-slider-runnable-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: #bdc3c7;\n background-color: var(--ag-border-color, #bdc3c7);\n border-radius: 2px;\n border-radius: 3px;\n}\n.ag-theme-balham input[class^=ag-][type=range]::-moz-range-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: #bdc3c7;\n background-color: var(--ag-border-color, #bdc3c7);\n border-radius: 2px;\n border-radius: 3px;\n}\n.ag-theme-balham input[class^=ag-][type=range]::-ms-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: #bdc3c7;\n background-color: var(--ag-border-color, #bdc3c7);\n border-radius: 2px;\n border-radius: 3px;\n color: transparent;\n width: calc(100% - 2px);\n}\n.ag-theme-balham input[class^=ag-][type=range]::-webkit-slider-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: 16px;\n height: 16px;\n background-color: white;\n background-color: var(--ag-background-color, white);\n border: 1px solid;\n border-color: #7f8c8d;\n border-color: var(--ag-checkbox-unchecked-color, #7f8c8d);\n border-radius: 16px;\n -webkit-transform: translateY(-6.5px);\n transform: translateY(-6.5px);\n}\n.ag-theme-balham input[class^=ag-][type=range]::-ms-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: 16px;\n height: 16px;\n background-color: white;\n background-color: var(--ag-background-color, white);\n border: 1px solid;\n border-color: #7f8c8d;\n border-color: var(--ag-checkbox-unchecked-color, #7f8c8d);\n border-radius: 16px;\n}\n.ag-theme-balham input[class^=ag-][type=range]::-moz-ag-range-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: 16px;\n height: 16px;\n background-color: white;\n background-color: var(--ag-background-color, white);\n border: 1px solid;\n border-color: #7f8c8d;\n border-color: var(--ag-checkbox-unchecked-color, #7f8c8d);\n border-radius: 16px;\n}\n.ag-theme-balham input[class^=ag-][type=range]:focus {\n outline: none;\n}\n.ag-theme-balham input[class^=ag-][type=range]:focus::-webkit-slider-thumb {\n -webkit-box-shadow: 0 0 2px 1px #719ECE;\n box-shadow: 0 0 2px 1px #719ECE;\n border-color: #0091ea;\n border-color: var(--ag-checkbox-checked-color, var(--ag-balham-active-color, #0091ea));\n}\n.ag-theme-balham input[class^=ag-][type=range]:focus::-ms-thumb {\n box-shadow: 0 0 2px 1px #719ECE;\n border-color: #0091ea;\n border-color: var(--ag-checkbox-checked-color, var(--ag-balham-active-color, #0091ea));\n}\n.ag-theme-balham input[class^=ag-][type=range]:focus::-moz-ag-range-thumb {\n box-shadow: 0 0 2px 1px #719ECE;\n border-color: #0091ea;\n border-color: var(--ag-checkbox-checked-color, var(--ag-balham-active-color, #0091ea));\n}\n.ag-theme-balham input[class^=ag-][type=range]:active::-webkit-slider-runnable-track {\n background-color: #719ECE;\n background-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham input[class^=ag-][type=range]:active::-moz-ag-range-track {\n background-color: #719ECE;\n background-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham input[class^=ag-][type=range]:active::-ms-track {\n background-color: #719ECE;\n background-color: var(--ag-input-focus-border-color, #719ECE);\n}\n.ag-theme-balham input[class^=ag-][type=range]:disabled {\n opacity: 0.5;\n}\n.ag-theme-balham .ag-filter-toolpanel-header,\n.ag-theme-balham .ag-filter-toolpanel-search,\n.ag-theme-balham .ag-status-bar,\n.ag-theme-balham .ag-header-row,\n.ag-theme-balham .ag-multi-filter-group-title-bar {\n font-weight: 600;\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-header-foreground-color, var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54)));\n}\n.ag-theme-balham .ag-ltr input[class^=ag-]:not([type]),\n.ag-theme-balham .ag-ltr input[class^=ag-][type=text],\n.ag-theme-balham .ag-ltr input[class^=ag-][type=number],\n.ag-theme-balham .ag-ltr input[class^=ag-][type=tel],\n.ag-theme-balham .ag-ltr input[class^=ag-][type=date],\n.ag-theme-balham .ag-ltr input[class^=ag-][type=datetime-local],\n.ag-theme-balham .ag-ltr textarea[class^=ag-] {\n padding-left: 4px;\n}\n\n.ag-theme-balham .ag-rtl input[class^=ag-]:not([type]),\n.ag-theme-balham .ag-rtl input[class^=ag-][type=text],\n.ag-theme-balham .ag-rtl input[class^=ag-][type=number],\n.ag-theme-balham .ag-rtl input[class^=ag-][type=tel],\n.ag-theme-balham .ag-rtl input[class^=ag-][type=date],\n.ag-theme-balham .ag-rtl input[class^=ag-][type=datetime-local],\n.ag-theme-balham .ag-rtl textarea[class^=ag-] {\n padding-right: 4px;\n}\n\n.ag-theme-balham .ag-column-drop-vertical-empty-message, .ag-theme-balham .ag-status-bar {\n font-weight: 600;\n color: rgba(0, 0, 0, 0.38);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.38));\n}\n.ag-theme-balham .ag-dnd-ghost {\n font-weight: 600;\n}\n.ag-theme-balham .ag-tab {\n border: 1px solid transparent;\n padding: 4px 8px;\n margin: 4px;\n margin-bottom: -1px;\n}\n.ag-theme-balham .ag-tab-selected {\n background-color: white;\n background-color: var(--ag-background-color, white);\n border-color: #bdc3c7;\n border-color: var(--ag-border-color, #bdc3c7);\n border-bottom-color: transparent;\n}\n.ag-theme-balham .ag-tabs-header {\n border-bottom: 1px solid;\n border-bottom-color: #bdc3c7;\n border-bottom-color: var(--ag-border-color, #bdc3c7);\n}\n.ag-theme-balham .ag-column-drop-cell {\n height: 24px;\n}\n.ag-theme-balham .ag-column-drop-vertical-title {\n color: #000;\n color: var(--ag-foreground-color, #000);\n}\n.ag-theme-balham .ag-column-drop-vertical-cell {\n margin-left: 8px;\n margin-right: 8px;\n}\n.ag-theme-balham .ag-column-drop-vertical-cell-text {\n margin-left: 8px;\n}\n.ag-theme-balham .ag-column-drop-vertical-icon {\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n}\n.ag-theme-balham .ag-ltr .ag-column-drop-vertical-empty-message {\n padding-left: 24px;\n padding-right: 4px;\n}\n\n.ag-theme-balham .ag-rtl .ag-column-drop-vertical-empty-message {\n padding-right: 24px;\n padding-left: 4px;\n}\n\n.ag-theme-balham .ag-column-drop-horizontal {\n height: 32px;\n}\n.ag-theme-balham .ag-column-drop-empty {\n color: rgba(0, 0, 0, 0.38);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.38));\n}\n.ag-theme-balham .ag-column-drop-horizontal-cell-text {\n margin-left: 8px;\n}\n.ag-theme-balham .ag-column-drop-vertical {\n padding-top: 8px;\n}\n.ag-theme-balham .ag-menu-header {\n background-color: #f5f7f7;\n background-color: var(--ag-header-background-color, #f5f7f7);\n}\n.ag-theme-balham .ag-overlay-loading-center {\n background-color: white;\n background-color: var(--ag-background-color, white);\n border: 1px solid;\n border-color: #bdc3c7;\n border-color: var(--ag-border-color, #bdc3c7);\n color: #000;\n color: var(--ag-foreground-color, #000);\n padding: 16px;\n}\n.ag-theme-balham .ag-tooltip {\n border: none;\n background-color: #cbd0d3;\n}\n.ag-theme-balham .ag-panel-title-bar-button-icon {\n font-size: 20px;\n}\n.ag-theme-balham .ag-chart-data-section,\n.ag-theme-balham .ag-chart-format-section {\n padding-bottom: 2px;\n}\n.ag-theme-balham .ag-group-toolbar {\n background-color: rgba(226, 233, 235, 0.5);\n background-color: var(--ag-subheader-toolbar-background-color, rgba(226, 233, 235, 0.5));\n}\n.ag-theme-balham .ag-chart-tab {\n padding-top: 2px;\n}\n.ag-theme-balham .ag-charts-format-sub-level-group-item {\n margin-bottom: 6px;\n}\n", ""]);
58351// Exports
58352module.exports = exports;
58353
58354
58355/***/ }),
58356/* 287 */
58357/***/ (function(module, exports, __webpack_require__) {
58358
58359var api = __webpack_require__(276);
58360 var content = __webpack_require__(288);
58361
58362 content = content.__esModule ? content.default : content;
58363
58364 if (typeof content === 'string') {
58365 content = [[module.i, content, '']];
58366 }
58367
58368var options = {};
58369
58370options.insert = "head";
58371options.singleton = false;
58372
58373var update = api(content, options);
58374
58375
58376
58377module.exports = content.locals || {};
58378
58379/***/ }),
58380/* 288 */
58381/***/ (function(module, exports, __webpack_require__) {
58382
58383// Imports
58384var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58385exports = ___CSS_LOADER_API_IMPORT___(false);
58386// Module
58387exports.push([module.i, ".ag-theme-blue {\n -webkit-font-smoothing: antialiased;\n color: #222;\n color: var(--ag-foreground-color, #222);\n font-family: \"Helvetica Neue\", sans-serif;\n font-size: 14px;\n line-height: normal;\n}\n@font-face {\n font-family: \"agGridClassic\";\n src: url(\"data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABXwAAsAAAAAKrgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAAmMAAAR2Zoxou09TLzIAAANsAAAAQQAAAFZWVlMSY21hcAAAA7AAAAIbAAAFnIlT7KJnbHlmAAAFzAAADBkAABg4HeN0mGhlYWQAABHoAAAANAAAADZ2z8SBaGhlYQAAEhwAAAAeAAAAJAfTBCxobXR4AAASPAAAABgAAAE4yyH/7GxvY2EAABJUAAAAdgAAAJ5JCULobWF4cAAAEswAAAAfAAAAIAFkAKpuYW1lAAAS7AAAATMAAAJS8kTiWnBvc3QAABQgAAABzQAAArBhTs2TeJx9lMtOU1EUhv/DaREoAlG8pCIiGi+oiMrxXHpoy6WH1tbEgTEOnGBMjAlxxHP4AD4BQ5/AB3DgE/gADhw6Nn5r9WCFAey03Xtd/vXvf62NAklTWlNTYzvF4KVm9vcOPqquioZ/5v9/H+x/eL+niaMTvor/TiioTGtGy3qtA30LZoKD4HBsPqyHr8J34efwS/hLIVFLWiW6pqesWAnfkVJlaijXmMaxxew34BOymmq59RyMqu7pqqfL1IzJ6Tniip7xmQOncJyOtolKWYbZ4XvAuqfZUyJy3Qc/g80m1gqKLKJJrnlNgp4Q01Sb/Cb+89TcoXaEv8BXwK6KpcW+rQtwsoyKq9rVGz3Bbzc1lKzMSfnE2vVz5Kc1NDmKaoHToJZhr8LgyN6gakLGY9AzorZKRVd0k+wGOB3Q2p694dnLRCZwS3WDnd0zges08Zle6K1X3S1zOq7pUIFV2I/shePlenjM2gZrQOwjOIys1p8H1IrUx1+jV4X29UmH+qrv+qGf+q0/OqOL1En8Dtug75yqzQQKnozu4m39s9pdx5mBk1HHIya5ecPVifH1Sg2tWo2bmTop+whr6vFT8LT4Lmxy+lGhRuR1rdNV1ibnmOiz5XQ2WdOudI8pmPUJ7vss1HWHvi064nAOc7S+CqLthvyuuG5N8Ba8b6auvbA5P9lbsH7XmdVr/EbcMHOdnuO9jsWQRpYlz8phbxjr+HNYj6oZqwVYresuPpuxvr+OLpVucZ8hk4QIexl9n6/bMMjKlzpPD419u+zYJY+LPSvgP0FUvvDUtbOZLuBm8zH4C3G+c6UAeJxjYGSazTiBgZWBgamKaQ8DA0MPhGZ8wGDIyAQUZWBlZsAKAtJcUxgOMOh+NGJ+AeRGMX9i4ALSjCA5AOaCCwgAAAB4nLXUB1IbQRCF4V+BLMA22eQcBQaTcxAiHwJnCgcKZ87hs/kefQL8Rt0+AK7yVn3bO1Or3ZlavQaqgJzMSB6ytWR0RSar2UxlPkd9ZT7Pb40L1JLVdZErbrizhft7zRa55Jpby1RGf4+M7i7QwxjLGh2yxAE7lFnlXDN7rLPPLkdsssEJK2yzxjFnbFHilAv9Pq0irzVWU6P31mklDXpiI0084jEttNJGOx100kW33tRLH/0MMMgQw4wwyjgTTDLFtHZSZJY5njHPgs7PNVrUIqt52HH4wPvTsXSwU149X97TjnePNje02e2147Ot0unFPzzsPxyFdMr9itEZ6Yu6tNvLsCQvwoG8DDvyKpTldViVN+Fc3ob0b3gX9uQqrMt12Jf3YVc+hCP5GDblU9iQm3Ait2FFPodt+RLW5Gs4lm8h7f172JIfoSQ/w6ncBX1Ay7iUF8s6Us25lC/Lu5Qxq3Ipe1btSLXGkWqtI9U6R6r1LmXSGhypFlz6ktboSLXJkWqzU3awoBRhQXnCnjglC2txyhjW6pQ2rM0pd1i7UwKxDqcsYp1OqcS6nPKJPXVKKtbtlFmsxym9WK9TjrE+p0Rj/U7ZxgacUo4NOuUdG3JKPjbs1AOwEadugI069QVszKlDYONOvQKbcKkv2qRLebApp96BTTv1FGzGqa9gRac+g806dRxszlXuCepC2LyrPHPBsfgHpKymyQB4nO1Ye2wUxxnfmfXt3t57d+92zxycvXf4FkNico+99QMMGOOzcWzTnIMJaQ04GMWYRDEESJqktAElJErSShFVqUmAqj0XmlQFI+XRBxKpGleRGqePNKnyKn+0Sdq4pHXS6uRb+s3eww8ooPSfVu3Zu/P6Zuabb34z3+9bClHwo5P0IMVRFFJkVvEpIq3QSWN4717Un7v/9dfxAfzT8fERtBftBRFT/n36faoSChqr6jKr8oqZ6ApvJjKvmAmroHNdqbGxlnWIXgdpap2RW9cCaZdhkPpUF8J0JdcFVS1dlzblu1LFOdfTj1FWKLAqBw8fRt9+th/1ob7+Z47jXc9uRX3G01ufyX1YlMcTeIKym/KgC2gD+uCJljOjqTNnUqNnWkbRqmJutOUMZaGoiwas6wNKpMKUSi2hllKURQnVII1PNKK4EgsiH+91IVoJMZCRoCYJTREU58NVcV+YhpTenhOV+lCoXsEfwUupV3Iej9/vwRd4Wc59N51GHen0SHc3DtWF8Mfwgv+cG17012U+x/N+P4//wsvGqPF2JoOOGZth2bP0WgzrKSoSnlbOMkcnFsF6RZnebioRKik1MUOdAWPi74kT59fSHxSVKCp180xdXjRsP1t1EB1dRM3VRb02XWhFU66oyO+N06jzKloYzgzZ0lnzX9vsV5r5KpOS9cKi76G3AjqslJ+iAHgyh2i9AjEs/Pm8EsySUCMq/pOxqf42I4cax8Ze/oHdXu6WomuikrscnUPHG6DBeAktHxtrdDqDgUh5KBoNlVfND5LhGXOOQ/QhmI0FvLphbTJFVfnAbPDQc1J03DhNNxmnM7OS7Aj8UEcGfqiT5KmC7h8UbLX02qyFAMe+sBbW4lqcHgwRi4Hl8hYkljMtQyxnvDJi/vIWFAoWnChYUAQJHn8E23aGqDRCUUV9mugmc5U86BPnFS0MN4XCK7Sm8HEND2cMRwZNpo1R1DFijKbxsFnOQvk4VGap0l3wAP0AOdscgu1gOQQ3go4mkbDHmDBfxsQeJMALb59VRAIU8za/OEXfSf+Z8oB1FlCt1Jepp2DoCOykZYZF6LCGQEFGlhqQWOV14XCopkxLNOI4saWXCUXUGhSGDt4giiX1RhSTZGLgEFRriWQsSMcJPmqQWoOJuWNBXOiU71OBJDmI4WZK6tFGsj9enxu5MGzPUhq6S/Qd7La7LEanqusqTqp6y6jRhB7BiLZ4foeNTZwQ9Hpkr8dmcfoVUV4o2pzWMqvXLc93yJUSg60u2ykhJC3gnR7OZWWtbgcv2QWPN8ALFZLg5602J1tmcQcFxm4RBLtTsC1bshjT2Gq3WrCGWZvbweA4jWyCFf/RuudBC65Vp141lXlkfOpR+p7flHN87mu/dVQERasQqKzyhbSId74qcG6b0+dNxCqXSH6/ze1yl1dLbnuVYHfZy3mHLLh4K8OKSk2V6PT5fR6b3S2ITs7O0SxrYcUFT/zwR5ydsbFOm4X7Nee2ci7uF27O5hGo/+/df/XeFf34QdOP83FgC+TgfufYM/3G08bT/ehe7MpNQuEo2tIPomVz9rrtqvusQ2skkYzHpAq0ApNtk3xeN5Jhe1woFFmKWAKEiJa48vZcf0s7x1q8bl70LFtpczFOq1v0dXY7bJzgFco29JRxPNRcybBj9w66nHbJI/o3bnQLFovHwS+44163T3BxHLPvi4yV4d2mTf4X1vjZeAPxelfy3k8YjquxhtFMZtr3vEzrVDkVpZbB/LqcjEuyJLvAoQM7RMkVSAuHwKerYg1WGTaIZEmXGWJp+EuCgGl1FeSRkoisaHr4vqEN1Xc0aqsqXcYva9pVW+OS2uv3/SH5+WW25kT0sc7052Jf2LhlfWPd0tjG3eiNdS0uQQoq9obraNeiG4Sym9r3L7890hxfZEf7bBilLYwrYLzN1G7QYq3Nt0l++8r5Ni5R1Rhb+9CNxuForyjLFfPi3YHptcjgQxdRSVgLWYdJRwq6JiFP6iS9qDS5ldSqyHIUJnIyiOhoiqyga8/9D371fqLkLbu+cldzYmVv3+13bV6/1lTW0XL73oGUDa1Ftq5kKlm1KBlZRvvodPuDezq6HI61keWx9gPtN5+MtW7QaxlGj20VZamyvPbWRLK3nnbOX4ys9nntXiuLqTx3M3nODuBSEGmICuJVLeqLa2mTx2ToQWC9m0ay3d0FWTwF/J02oxI+zAOhVVkZrUhjz0sv1WazeMJwoEmj+dw5KBBxR4FfnJ3FowJUxTSb14HdFB90lbwCHGgkk8ma/8BC/lUOHctkxjMm8Tp2aQIqWQrrPgtnW6GqqGrqesJ9TDIHXKtA60oPH9YUFPZBLJF/quBBx4HVgY2A4ZGUsCMz3dyNOgvTmerQg2kwXyadhSSbxqlsTkij493AndLp/xg95uxtVZiPIxKdsXgqnc5dMDc3O2Nn8z7jGL3e9BkykD0SoqJtJ/Je4iSuR8dO5OPAk4Ro4oufXvyU/hv9VypBDeZPB+MmdB08txrR4aCDc5bztS4UxFDRiIhb16IRkoUmcv+yZjORk+MS6aQm1CgRM+WDuNgM5AEa9aQawV+q83oX1R6o62y/sWOnF351rbZyAWEelzHlAa+gtbUF9s8XxADnx+XVVskmCUis67ixvbPuQO0iEBd8yCZZF/ux084FRDGwP9DWpgneQDlTBoMgodzWWkfGhZk62w/DTKSw0xyglfO4tJhVYOYFWtuSXjFwINDaGuB4T8hfbcWMh8xkqnSg9jCIC24WW6v9IQ/H2ojggYDoTba1BuYxgjWmuTxcq7mKmef2EJymCvPmZOF4wKUJcQLcnHBMYPMgWojrmhpmfTh1eM/hN96AV6aU+cajfX2P9uEfz6okmdzzfaTJ9IEzY9zoNUberBnUIx3ucFm/cuz90bup6HDtEfR26r3oU7VPXSUAzzWm3rnhCIg/8F4qCmnJh0zHaWaEhgoPfWjqJ3RT/snmIzEShxX9+2dZm25+toAlkovvymu7753UDUf0YZRIvUuUvtrasoW1PQkmOaIfKX0veRzOpIXsMDmN6FbzJKJY8YLNn8MA/SvKOf0NxuRvMhoe6EcqUvsHBvqNN403+wfwqe1QA7ntxkPboQ7athd4wEWwxYeUl1pIxQkPICfMQ5xXJXFVHvBMSQs5s/EYyZLYeik5jqZvBt5NTufkwbuHmtasaRq62/h491BTc3PT0G40nnsuuaopNbRlk14ny4vbtFWrodBbW+eXF9MfgvBu48LunUR4527kgW5rPsk9t1iW6/TevqFU08pkW76wZai1aVWyhPsmehB2252PViFEjcvkpoSoldxq27KZkbRxOo0maX+uHw+nR8j992/2RaU4GUoozMthVg3r5DrGE72nsul09lQvmgT3NzaQzQ6g2nTex5QwpgArqKVWXB5lhOSYMGsAn6pZIPIm7DL/Dc881OR0i8QBkC8nczCXu3Mfwdy+EXpl7kUc5OV/OBuGhhocZx1msmM8dx63yJegD1/I5OGHU3DBv+Dn0TLHjH5OnMp8iZfnYND09vjxORjEM/BTDVImKDwEQpUELR4CIdaElJe0hEyiTFrQ5MMlpLiL6DlogqVO37TlPAAFfr1bLo+Umwkuzvf1EuHePhDW62ZjudrkYZfDsmyqSGArmYAm34oiIuHpNShhho2XhfPDQ0WNzhd1fGT1roO7Vpuva9bS2Nxc6LJ613T8dbTgS1Wdg0fR8P7v9aMtxtH+E7mf49TJfCh2YqSE40HAsZOSCA8DWlC6oyyFT71xAPDz6WgIt4aixuiO+vHx+h3d4MDfQguNt8iXLrRw/o6G8fGGHejJaXzjYTI6sMAR/E1jFA8bp0v30DBgH5NvOzzhF2gSdeS2zW3DeepBrwLSODpnTA4RgtKRlyi0ZegUwRUHATuiM7nXjFf2nEUv4NdyryFtN+Sm9WolO0uOACiW2wbgJNUlThGmUlQP3P2Sdy6nqECkrsAokjGZlmIlpsB4obXAE0gP1qyTEcEDioTyBSmGb2LZnhn0oYcV2U6G2QBcgDjnHtbLhuDpIS4e6MEGhukEiZ4ZNKCHZbH/Opdr6luuiAtSutcVefVSmY7Zo6Dvz56k41I1pj65DkaE4WBU1QnD/xPnjHQ0AAAAeJxjYGRgYADiY81JvPH8Nl8ZuJlfAAWiOB/va4DR/7/9/8b8mfkTUCUHAxOQZAAAhKEPOXicY2BkYGB+wcAAIv9/+/+V+TMDIwMq8AMAnl4HBgAAeJxjYGBgYH5Bb/z/Gy3NZqADAAB/FDOneJxjYAACCYYghiyGFoYLjGKMYYx9jAcY3zCZMEUwVTFHsJix+LEcYDViLWK9wWbC5sWWwraB7Qu7BXsAewaHAIcTxxSODZxMnCKcZpw9nKs4T3A+4nLhCuOaw/WNm4/bgtuNO4Q7ibuAu4V7Eo8M6RAAslkbZAAAeJxjYGRgYPBjmMfAwwACTEDMBYQMDP/BfAYAIQYCDwB4nH2QvU7DMBSFT/qHaAWqBGJgMgsLUvqz0bVSs3foniZ2miqNg+NW6s5z8AQ8R5+Dp2DmxHgpErUl57vfPfcOATDECQGaE+DGvc1p4YrVL7dJ95475CfPXQwQeu7Rv3ru4wULzwPc4Y0bgs41zSPePbdwiw/PbfpPzx3yyXMXD/jy3KP/9tzHKhh6HuA5UHEWmTydF3Fd58lSZvsiNmfurFhJU+e6FJNwfOYjWUoTW5mK9VHUh2xqrRLK6J1Y6NLKotCiMnorExturK1mo5HyPkz0DjEyRDDIkWKOgnXNmyPBEpK9vXPmQu7/zoobjGONEgIT/vfxhXzEfOlmYlh+U86sceRb48CpKa2FYq2Y0diRFm53ky54NU3leluahD7Exk1VmGHEq/7kQ6a46QfFq20TAHicbZIHb9swEIX9xZKt2GmTpm269x5q6+6990h/A0PRMhGZFEjKdvLry9pBgQA9gIf3Dod37w5sLbUW0Wv9PzZZok1CSocuGcv06LPCAQ6yyhqHWOcwRzjKBsc4zglOcorTnOEs5zjPBS5yictc4SrXuM4NbnKL2+Tc4S73GHCfBzzkEY95wlOe8ZwXvOQVr3nDW97xng985BOf+cJXvvGdH/zkF5v8bvVFWTpViqCt6Qjn7NS3hZcdKYxUVSpHwoU1OVJye8vO8jlQxca/gjaFCsqNtRFBrf8rN2avc0Xayrq81pG4biTN2PietCY4IYMqEmnrnVQ6631b+kkaXz5ICuVlqmbRQHee80GmZrWIs4pltaNyXwk/akfUGeoqjk+H2vmQlE7XaelsU3fnOSrFxpBUahg6lTbRT7eyotCmzMZipsd6VyVjZZos+l8wo2YhMdaovrEhF1Vlp6pI66iiuvOcD9q1NmmtJzZktVMTbRu/5qKozbeaEKzJ7XC4ur9gUqfLUUi8mKieH0fZvLBTswf/2usv4LwtW+CmTkI823pwSu2/c9aYxTYIShyKgMZimOKRVIzYZotZ/CMFYxpqdpgwZLfV+gPpZLiDAAAA\") format(\"woff\");\n font-weight: normal;\n font-style: normal;\n}\n.ag-theme-blue .ag-icon {\n font-family: \"agGridClassic\";\n font-size: 12px;\n line-height: 12px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.ag-theme-blue .ag-icon-aggregation::before {\n content: \"\\f101\";\n}\n.ag-theme-blue .ag-icon-arrows::before {\n content: \"\\f102\";\n}\n.ag-theme-blue .ag-icon-asc::before {\n content: \"\\f103\";\n}\n.ag-theme-blue .ag-icon-cancel::before {\n content: \"\\f104\";\n}\n.ag-theme-blue .ag-icon-chart::before {\n content: \"\\f105\";\n}\n.ag-theme-blue .ag-icon-color-picker::before {\n content: \"\\f109\";\n}\n.ag-theme-blue .ag-icon-columns::before {\n content: \"\\f10a\";\n}\n.ag-theme-blue .ag-icon-contracted::before {\n content: \"\\f10b\";\n}\n.ag-theme-blue .ag-icon-copy::before {\n content: \"\\f10c\";\n}\n.ag-theme-blue .ag-icon-cross::before {\n content: \"\\f10d\";\n}\n.ag-theme-blue .ag-icon-csv::before {\n content: \"\\f10e\";\n}\n.ag-theme-blue .ag-icon-desc::before {\n content: \"\\f10f\";\n}\n.ag-theme-blue .ag-icon-excel::before {\n content: \"\\f110\";\n}\n.ag-theme-blue .ag-icon-expanded::before {\n content: \"\\f111\";\n}\n.ag-theme-blue .ag-icon-eye-slash::before {\n content: \"\\f112\";\n}\n.ag-theme-blue .ag-icon-eye::before {\n content: \"\\f113\";\n}\n.ag-theme-blue .ag-icon-filter::before {\n content: \"\\f114\";\n}\n.ag-theme-blue .ag-icon-first::before {\n content: \"\\f115\";\n}\n.ag-theme-blue .ag-icon-grip::before {\n content: \"\\f116\";\n}\n.ag-theme-blue .ag-icon-group::before {\n content: \"\\f117\";\n}\n.ag-theme-blue .ag-icon-last::before {\n content: \"\\f118\";\n}\n.ag-theme-blue .ag-icon-left::before {\n content: \"\\f119\";\n}\n.ag-theme-blue .ag-icon-linked::before {\n content: \"\\f11a\";\n}\n.ag-theme-blue .ag-icon-loading::before {\n content: \"\\f11b\";\n}\n.ag-theme-blue .ag-icon-maximize::before {\n content: \"\\f11c\";\n}\n.ag-theme-blue .ag-icon-menu::before {\n content: \"\\f11d\";\n}\n.ag-theme-blue .ag-icon-minimize::before {\n content: \"\\f11e\";\n}\n.ag-theme-blue .ag-icon-next::before {\n content: \"\\f11f\";\n}\n.ag-theme-blue .ag-icon-none::before {\n content: \"\\f120\";\n}\n.ag-theme-blue .ag-icon-not-allowed::before {\n content: \"\\f121\";\n}\n.ag-theme-blue .ag-icon-paste::before {\n content: \"\\f122\";\n}\n.ag-theme-blue .ag-icon-pin::before {\n content: \"\\f123\";\n}\n.ag-theme-blue .ag-icon-pivot::before {\n content: \"\\f124\";\n}\n.ag-theme-blue .ag-icon-previous::before {\n content: \"\\f125\";\n}\n.ag-theme-blue .ag-icon-right::before {\n content: \"\\f128\";\n}\n.ag-theme-blue .ag-icon-save::before {\n content: \"\\f129\";\n}\n.ag-theme-blue .ag-icon-small-down::before {\n content: \"\\f12a\";\n}\n.ag-theme-blue .ag-icon-small-left::before {\n content: \"\\f12b\";\n}\n.ag-theme-blue .ag-icon-small-right::before {\n content: \"\\f12c\";\n}\n.ag-theme-blue .ag-icon-small-up::before {\n content: \"\\f12d\";\n}\n.ag-theme-blue .ag-icon-tick::before {\n content: \"\\f12e\";\n}\n.ag-theme-blue .ag-icon-tree-closed::before {\n content: \"\\f12f\";\n}\n.ag-theme-blue .ag-icon-tree-indeterminate::before {\n content: \"\\f130\";\n}\n.ag-theme-blue .ag-icon-tree-open::before {\n content: \"\\f131\";\n}\n.ag-theme-blue .ag-icon-unlinked::before {\n content: \"\\f132\";\n}\n.ag-theme-blue .ag-icon-row-drag::before {\n content: \"\\f116\";\n}\n.ag-theme-blue .ag-left-arrow::before {\n content: \"\\f119\";\n}\n.ag-theme-blue .ag-right-arrow::before {\n content: \"\\f128\";\n}\n.ag-theme-blue .ag-root-wrapper {\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n}\n.ag-theme-blue [class^=ag-], .ag-theme-blue [class^=ag-]:focus, .ag-theme-blue [class^=ag-]:after, .ag-theme-blue [class^=ag-]:before {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n outline: none;\n}\n.ag-theme-blue [class^=ag-]::-ms-clear {\n display: none;\n}\n.ag-theme-blue .ag-checkbox .ag-input-wrapper,\n.ag-theme-blue .ag-radio-button .ag-input-wrapper {\n overflow: visible;\n}\n.ag-theme-blue .ag-range-field .ag-input-wrapper {\n height: 100%;\n}\n.ag-theme-blue .ag-toggle-button {\n -webkit-box-flex: 0;\n flex: none;\n width: unset;\n min-width: unset;\n}\n.ag-theme-blue .ag-ltr .ag-label-align-right .ag-label {\n margin-left: 4px;\n}\n\n.ag-theme-blue .ag-rtl .ag-label-align-right .ag-label {\n margin-right: 4px;\n}\n\n.ag-theme-blue input[class^=ag-] {\n margin: 0;\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n}\n.ag-theme-blue textarea[class^=ag-],\n.ag-theme-blue select[class^=ag-] {\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n}\n.ag-theme-blue input[class^=ag-]:not([type]),\n.ag-theme-blue input[class^=ag-][type=text],\n.ag-theme-blue input[class^=ag-][type=number],\n.ag-theme-blue input[class^=ag-][type=tel],\n.ag-theme-blue input[class^=ag-][type=date],\n.ag-theme-blue input[class^=ag-][type=datetime-local],\n.ag-theme-blue textarea[class^=ag-] {\n font-size: inherit;\n line-height: inherit;\n color: inherit;\n border-width: 1px;\n border-style: solid;\n border-color: #000;\n border-color: var(--ag-input-border-color, #000);\n}\n.ag-theme-blue input[class^=ag-]:not([type]):disabled,\n.ag-theme-blue input[class^=ag-][type=text]:disabled,\n.ag-theme-blue input[class^=ag-][type=number]:disabled,\n.ag-theme-blue input[class^=ag-][type=tel]:disabled,\n.ag-theme-blue input[class^=ag-][type=date]:disabled,\n.ag-theme-blue input[class^=ag-][type=datetime-local]:disabled,\n.ag-theme-blue textarea[class^=ag-]:disabled {\n color: rgba(34, 34, 34, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(34, 34, 34, 0.5));\n background-color: #dedede;\n background-color: var(--ag-input-disabled-background-color, #dedede);\n border-color: rgba(0, 0, 0, 0.3);\n border-color: var(--ag-input-disabled-border-color, rgba(0, 0, 0, 0.3));\n}\n.ag-theme-blue input[class^=ag-]:not([type]):focus,\n.ag-theme-blue input[class^=ag-][type=text]:focus,\n.ag-theme-blue input[class^=ag-][type=number]:focus,\n.ag-theme-blue input[class^=ag-][type=tel]:focus,\n.ag-theme-blue input[class^=ag-][type=date]:focus,\n.ag-theme-blue input[class^=ag-][type=datetime-local]:focus,\n.ag-theme-blue textarea[class^=ag-]:focus {\n outline: none;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-blue input[class^=ag-]:not([type]):invalid,\n.ag-theme-blue input[class^=ag-][type=text]:invalid,\n.ag-theme-blue input[class^=ag-][type=number]:invalid,\n.ag-theme-blue input[class^=ag-][type=tel]:invalid,\n.ag-theme-blue input[class^=ag-][type=date]:invalid,\n.ag-theme-blue input[class^=ag-][type=datetime-local]:invalid,\n.ag-theme-blue textarea[class^=ag-]:invalid {\n border-width: 2px;\n border-style: solid;\n border-color: var(--ag-input-border-color-invalid);\n}\n.ag-theme-blue input[class^=ag-][type=number] {\n -moz-appearance: textfield;\n}\n.ag-theme-blue input[class^=ag-][type=number]::-webkit-outer-spin-button, .ag-theme-blue input[class^=ag-][type=number]::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n.ag-theme-blue input[class^=ag-][type=range] {\n padding: 0;\n}\n.ag-theme-blue .ag-drag-handle {\n color: #222;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #222));\n}\n.ag-theme-blue .ag-list-item, .ag-theme-blue .ag-virtual-list-item {\n height: 20px;\n}\n.ag-theme-blue .ag-keyboard-focus .ag-virtual-list-item:focus {\n outline: none;\n}\n.ag-theme-blue .ag-keyboard-focus .ag-virtual-list-item:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-blue .ag-select-list {\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n overflow-y: auto;\n overflow-x: hidden;\n}\n.ag-theme-blue .ag-list-item {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ag-theme-blue .ag-list-item.ag-active-item {\n background-color: #f0f0f0;\n background-color: var(--ag-row-hover-color, #f0f0f0);\n}\n.ag-theme-blue .ag-select-list-item {\n padding-left: 4px;\n padding-right: 4px;\n cursor: default;\n -moz-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n}\n.ag-theme-blue .ag-select-list-item span {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n.ag-theme-blue .ag-select .ag-picker-field-wrapper {\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n min-height: 20px;\n cursor: default;\n}\n.ag-theme-blue .ag-select.ag-disabled .ag-picker-field-wrapper:focus {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.ag-theme-blue .ag-select:not(.ag-cell-editor) {\n height: 20px;\n}\n.ag-theme-blue .ag-select .ag-picker-field-display {\n margin: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ag-theme-blue .ag-select .ag-picker-field-icon {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-blue .ag-select.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-blue .ag-rich-select {\n background-color: #f6f6f6;\n background-color: var(--ag-control-panel-background-color, #f6f6f6);\n}\n.ag-theme-blue .ag-rich-select-list {\n width: 100%;\n min-width: 200px;\n height: 162.5px;\n}\n.ag-theme-blue .ag-rich-select-value {\n padding: 0 4px 0 12px;\n height: 25px;\n border-bottom: solid 1px;\n border-bottom-color: #9bc2e6;\n border-bottom-color: var(--ag-secondary-border-color, var(--ag-border-color, #9bc2e6));\n}\n.ag-theme-blue .ag-rich-select-virtual-list-item {\n cursor: default;\n height: 20px;\n}\n.ag-theme-blue .ag-rich-select-virtual-list-item:hover {\n background-color: #f0f0f0;\n background-color: var(--ag-row-hover-color, #f0f0f0);\n}\n.ag-theme-blue .ag-rich-select-row {\n padding-left: 12px;\n}\n.ag-theme-blue .ag-rich-select-row-selected {\n background-color: #c8c8c8;\n background-color: var(--ag-selected-row-background-color, #c8c8c8);\n}\n.ag-theme-blue .ag-row-drag,\n.ag-theme-blue .ag-selection-checkbox,\n.ag-theme-blue .ag-group-expanded,\n.ag-theme-blue .ag-group-contracted {\n color: #222;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #222));\n}\n.ag-theme-blue .ag-ltr .ag-row-drag, .ag-theme-blue .ag-ltr .ag-selection-checkbox, .ag-theme-blue .ag-ltr .ag-group-expanded, .ag-theme-blue .ag-ltr .ag-group-contracted {\n margin-right: 12px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-drag, .ag-theme-blue .ag-rtl .ag-selection-checkbox, .ag-theme-blue .ag-rtl .ag-group-expanded, .ag-theme-blue .ag-rtl .ag-group-contracted {\n margin-left: 12px;\n}\n\n.ag-theme-blue .ag-cell-wrapper > *:not(.ag-cell-value):not(.ag-group-value) {\n height: min(var(--ag-line-height, 23px), 23px);\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-flex: 0;\n flex: none;\n}\n.ag-theme-blue .ag-group-expanded,\n.ag-theme-blue .ag-group-contracted {\n cursor: pointer;\n}\n.ag-theme-blue .ag-group-title-bar-icon {\n cursor: pointer;\n -webkit-box-flex: 0;\n flex: none;\n color: #222;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #222));\n}\n.ag-theme-blue .ag-ltr .ag-group-child-count {\n margin-left: 2px;\n}\n\n.ag-theme-blue .ag-rtl .ag-group-child-count {\n margin-right: 2px;\n}\n\n.ag-theme-blue .ag-group-title-bar {\n background-color: #ececec;\n background-color: var(--ag-subheader-background-color, #ececec);\n padding: 4px;\n}\n.ag-theme-blue .ag-group-toolbar {\n padding: 4px;\n}\n.ag-theme-blue .ag-disabled-group-title-bar, .ag-theme-blue .ag-disabled-group-container {\n opacity: 0.5;\n}\n.ag-theme-blue .group-item {\n margin: 2px 0;\n}\n.ag-theme-blue .ag-label {\n white-space: nowrap;\n}\n.ag-theme-blue .ag-ltr .ag-label {\n margin-right: 4px;\n}\n\n.ag-theme-blue .ag-rtl .ag-label {\n margin-left: 4px;\n}\n\n.ag-theme-blue .ag-label-align-top .ag-label {\n margin-bottom: 2px;\n}\n.ag-theme-blue .ag-ltr .ag-slider-field, .ag-theme-blue .ag-ltr .ag-angle-select-field {\n margin-right: 8px;\n}\n\n.ag-theme-blue .ag-rtl .ag-slider-field, .ag-theme-blue .ag-rtl .ag-angle-select-field {\n margin-left: 8px;\n}\n\n.ag-theme-blue .ag-angle-select-parent-circle {\n width: 24px;\n height: 24px;\n border-radius: 12px;\n border: solid 1px;\n border-color: #9bc2e6;\n border-color: var(--ag-border-color, #9bc2e6);\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n}\n.ag-theme-blue .ag-angle-select-child-circle {\n top: 4px;\n left: 12px;\n width: 6px;\n height: 6px;\n margin-left: -3px;\n margin-top: -4px;\n border-radius: 3px;\n background-color: #222;\n background-color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #222));\n}\n.ag-theme-blue .ag-picker-field-wrapper {\n border: 1px solid;\n border-color: #9bc2e6;\n border-color: var(--ag-border-color, #9bc2e6);\n border-radius: 5px;\n}\n.ag-theme-blue .ag-picker-field-button {\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n color: #222;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #222));\n}\n.ag-theme-blue .ag-dialog.ag-color-dialog {\n border-radius: 5px;\n}\n.ag-theme-blue .ag-color-picker .ag-picker-field-display {\n height: 12px;\n}\n.ag-theme-blue .ag-color-panel {\n padding: 4px;\n}\n.ag-theme-blue .ag-spectrum-color {\n background-color: rgb(255, 0, 0);\n border-radius: 2px;\n}\n.ag-theme-blue .ag-spectrum-tools {\n padding: 10px;\n}\n.ag-theme-blue .ag-spectrum-sat {\n background-image: -webkit-gradient(linear, left top, right top, from(white), to(rgba(204, 154, 129, 0)));\n background-image: linear-gradient(to right, white, rgba(204, 154, 129, 0));\n}\n.ag-theme-blue .ag-spectrum-val {\n background-image: -webkit-gradient(linear, left bottom, left top, from(black), to(rgba(204, 154, 129, 0)));\n background-image: linear-gradient(to top, black, rgba(204, 154, 129, 0));\n}\n.ag-theme-blue .ag-spectrum-dragger {\n border-radius: 12px;\n height: 12px;\n width: 12px;\n border: 1px solid white;\n background: black;\n -webkit-box-shadow: 0 0 2px 0px rgba(0, 0, 0, 0.24);\n box-shadow: 0 0 2px 0px rgba(0, 0, 0, 0.24);\n}\n.ag-theme-blue .ag-spectrum-hue-background {\n border-radius: 2px;\n}\n.ag-theme-blue .ag-spectrum-alpha-background {\n border-radius: 2px;\n}\n.ag-theme-blue .ag-spectrum-tool {\n margin-bottom: 10px;\n height: 11px;\n border-radius: 2px;\n}\n.ag-theme-blue .ag-spectrum-slider {\n margin-top: -12px;\n width: 13px;\n height: 13px;\n border-radius: 13px;\n background-color: rgb(248, 248, 248);\n -webkit-box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\n box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\n}\n.ag-theme-blue .ag-recent-color {\n margin: 0 3px;\n}\n.ag-theme-blue .ag-recent-color:first-child {\n margin-left: 0;\n}\n.ag-theme-blue .ag-recent-color:last-child {\n margin-right: 0;\n}\n.ag-theme-blue.ag-dnd-ghost {\n border: solid 1px;\n border-color: #9bc2e6;\n border-color: var(--ag-border-color, #9bc2e6);\n background: #fff;\n background: var(--ag-background-color, #fff);\n border-radius: 0px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n overflow: hidden;\n text-overflow: ellipsis;\n border: solid 1px;\n border-color: #9bc2e6;\n border-color: var(--ag-secondary-border-color, var(--ag-border-color, #9bc2e6));\n color: #222;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #222));\n height: 25px !important;\n line-height: 25px;\n margin: 0;\n padding: 0 8px;\n -webkit-transform: translateY(8px);\n transform: translateY(8px);\n}\n.ag-theme-blue .ag-dnd-ghost-icon {\n margin-right: 4px;\n color: #222;\n color: var(--ag-foreground-color, #222);\n}\n.ag-theme-blue .ag-popup-child:not(.ag-tooltip-custom) {\n -webkit-box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.3);\n box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.3);\n}\n.ag-dragging-range-handle .ag-theme-blue .ag-dialog, .ag-dragging-fill-handle .ag-theme-blue .ag-dialog {\n opacity: 0.7;\n pointer-events: none;\n}\n.ag-theme-blue .ag-dialog {\n border-radius: 0px;\n border: solid 1px;\n border-color: #9bc2e6;\n border-color: var(--ag-border-color, #9bc2e6);\n}\n.ag-theme-blue .ag-panel {\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n}\n.ag-theme-blue .ag-panel-title-bar {\n background-color: #5e9cd3;\n background-color: var(--ag-header-background-color, #5e9cd3);\n color: #fff;\n color: var(--ag-header-foreground-color, #fff);\n height: 25px;\n padding: 4px 12px;\n border-bottom: solid 1px;\n border-bottom-color: #9bc2e6;\n border-bottom-color: var(--ag-border-color, #9bc2e6);\n}\n.ag-theme-blue .ag-ltr .ag-panel-title-bar-button {\n margin-left: 4px;\n}\n\n.ag-theme-blue .ag-rtl .ag-panel-title-bar-button {\n margin-right: 4px;\n}\n\n.ag-theme-blue .ag-tooltip {\n background-color: #5e9cd3;\n background-color: var(--ag-header-background-color, #5e9cd3);\n color: #222;\n color: var(--ag-foreground-color, #222);\n padding: 4px;\n border: solid 1px;\n border-color: #9bc2e6;\n border-color: var(--ag-border-color, #9bc2e6);\n border-radius: 0px;\n -webkit-transition: opacity 1s;\n transition: opacity 1s;\n white-space: normal;\n}\n.ag-theme-blue .ag-tooltip.ag-tooltip-hiding {\n opacity: 0;\n}\n.ag-theme-blue .ag-tooltip-custom {\n -webkit-transition: opacity 1s;\n transition: opacity 1s;\n}\n.ag-theme-blue .ag-tooltip-custom.ag-tooltip-hiding {\n opacity: 0;\n}\n.ag-theme-blue .ag-ltr .ag-column-select-indent-1 {\n padding-left: 16px;\n}\n\n.ag-theme-blue .ag-rtl .ag-column-select-indent-1 {\n padding-right: 16px;\n}\n\n.ag-theme-blue .ag-ltr .ag-column-select-indent-2 {\n padding-left: 32px;\n}\n\n.ag-theme-blue .ag-rtl .ag-column-select-indent-2 {\n padding-right: 32px;\n}\n\n.ag-theme-blue .ag-ltr .ag-column-select-indent-3 {\n padding-left: 48px;\n}\n\n.ag-theme-blue .ag-rtl .ag-column-select-indent-3 {\n padding-right: 48px;\n}\n\n.ag-theme-blue .ag-ltr .ag-column-select-indent-4 {\n padding-left: 64px;\n}\n\n.ag-theme-blue .ag-rtl .ag-column-select-indent-4 {\n padding-right: 64px;\n}\n\n.ag-theme-blue .ag-ltr .ag-column-select-indent-5 {\n padding-left: 80px;\n}\n\n.ag-theme-blue .ag-rtl .ag-column-select-indent-5 {\n padding-right: 80px;\n}\n\n.ag-theme-blue .ag-ltr .ag-column-select-indent-6 {\n padding-left: 96px;\n}\n\n.ag-theme-blue .ag-rtl .ag-column-select-indent-6 {\n padding-right: 96px;\n}\n\n.ag-theme-blue .ag-ltr .ag-column-select-indent-7 {\n padding-left: 112px;\n}\n\n.ag-theme-blue .ag-rtl .ag-column-select-indent-7 {\n padding-right: 112px;\n}\n\n.ag-theme-blue .ag-ltr .ag-column-select-indent-8 {\n padding-left: 128px;\n}\n\n.ag-theme-blue .ag-rtl .ag-column-select-indent-8 {\n padding-right: 128px;\n}\n\n.ag-theme-blue .ag-ltr .ag-column-select-indent-9 {\n padding-left: 144px;\n}\n\n.ag-theme-blue .ag-rtl .ag-column-select-indent-9 {\n padding-right: 144px;\n}\n\n.ag-theme-blue .ag-column-select-header-icon {\n cursor: pointer;\n}\n.ag-theme-blue .ag-keyboard-focus .ag-column-select-header-icon:focus {\n outline: none;\n}\n.ag-theme-blue .ag-keyboard-focus .ag-column-select-header-icon:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 0px;\n left: 0px;\n display: block;\n width: calc(100% - 0px);\n height: calc(100% - 0px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-blue .ag-ltr .ag-column-group-icons:not(:last-child), .ag-theme-blue .ag-ltr .ag-column-select-header-icon:not(:last-child), .ag-theme-blue .ag-ltr .ag-column-select-header-checkbox:not(:last-child), .ag-theme-blue .ag-ltr .ag-column-select-header-filter-wrapper:not(:last-child), .ag-theme-blue .ag-ltr .ag-column-select-checkbox:not(:last-child), .ag-theme-blue .ag-ltr .ag-column-select-column-drag-handle:not(:last-child), .ag-theme-blue .ag-ltr .ag-column-select-column-group-drag-handle:not(:last-child), .ag-theme-blue .ag-ltr .ag-column-select-column-label:not(:last-child) {\n margin-right: 8px;\n}\n\n.ag-theme-blue .ag-rtl .ag-column-group-icons:not(:last-child), .ag-theme-blue .ag-rtl .ag-column-select-header-icon:not(:last-child), .ag-theme-blue .ag-rtl .ag-column-select-header-checkbox:not(:last-child), .ag-theme-blue .ag-rtl .ag-column-select-header-filter-wrapper:not(:last-child), .ag-theme-blue .ag-rtl .ag-column-select-checkbox:not(:last-child), .ag-theme-blue .ag-rtl .ag-column-select-column-drag-handle:not(:last-child), .ag-theme-blue .ag-rtl .ag-column-select-column-group-drag-handle:not(:last-child), .ag-theme-blue .ag-rtl .ag-column-select-column-label:not(:last-child) {\n margin-left: 8px;\n}\n\n.ag-theme-blue .ag-keyboard-focus .ag-column-select-virtual-list-item:focus {\n outline: none;\n}\n.ag-theme-blue .ag-keyboard-focus .ag-column-select-virtual-list-item:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 1px;\n left: 1px;\n display: block;\n width: calc(100% - 2px);\n height: calc(100% - 2px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-blue .ag-column-select-column-group:not(:last-child),\n.ag-theme-blue .ag-column-select-column:not(:last-child) {\n margin-bottom: 4px;\n}\n.ag-theme-blue .ag-column-select-column-readonly,\n.ag-theme-blue .ag-column-select-column-group-readonly {\n color: rgba(34, 34, 34, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(34, 34, 34, 0.5));\n pointer-events: none;\n}\n.ag-theme-blue .ag-ltr .ag-column-select-add-group-indent {\n margin-left: 20px;\n}\n\n.ag-theme-blue .ag-rtl .ag-column-select-add-group-indent {\n margin-right: 20px;\n}\n\n.ag-theme-blue .ag-column-select-virtual-list-viewport {\n padding: 3px 0px;\n}\n.ag-theme-blue .ag-column-select-virtual-list-item {\n padding: 0 6px;\n}\n.ag-theme-blue .ag-rtl {\n text-align: right;\n}\n.ag-theme-blue .ag-root-wrapper {\n border: solid 1px;\n border-color: #9bc2e6;\n border-color: var(--ag-border-color, #9bc2e6);\n}\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-1 {\n padding-left: 36px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-1 {\n padding-right: 36px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-1 {\n padding-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-1 {\n padding-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-1 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-1 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-2 {\n padding-left: 60px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-2 {\n padding-right: 60px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-2 {\n padding-left: 48px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-2 {\n padding-right: 48px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-2 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-2 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-3 {\n padding-left: 84px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-3 {\n padding-right: 84px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-3 {\n padding-left: 72px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-3 {\n padding-right: 72px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-3 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-3 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-4 {\n padding-left: 108px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-4 {\n padding-right: 108px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-4 {\n padding-left: 96px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-4 {\n padding-right: 96px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-4 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-4 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-5 {\n padding-left: 132px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-5 {\n padding-right: 132px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-5 {\n padding-left: 120px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-5 {\n padding-right: 120px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-5 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-5 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-6 {\n padding-left: 156px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-6 {\n padding-right: 156px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-6 {\n padding-left: 144px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-6 {\n padding-right: 144px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-6 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-6 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-7 {\n padding-left: 180px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-7 {\n padding-right: 180px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-7 {\n padding-left: 168px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-7 {\n padding-right: 168px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-7 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-7 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-8 {\n padding-left: 204px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-8 {\n padding-right: 204px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-8 {\n padding-left: 192px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-8 {\n padding-right: 192px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-8 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-8 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-9 {\n padding-left: 228px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-9 {\n padding-right: 228px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-9 {\n padding-left: 216px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-9 {\n padding-right: 216px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-9 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-9 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-10 {\n padding-left: 252px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-10 {\n padding-right: 252px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-10 {\n padding-left: 240px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-10 {\n padding-right: 240px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-10 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-10 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-11 {\n padding-left: 276px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-11 {\n padding-right: 276px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-11 {\n padding-left: 264px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-11 {\n padding-right: 264px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-11 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-11 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-12 {\n padding-left: 300px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-12 {\n padding-right: 300px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-12 {\n padding-left: 288px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-12 {\n padding-right: 288px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-12 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-12 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-13 {\n padding-left: 324px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-13 {\n padding-right: 324px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-13 {\n padding-left: 312px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-13 {\n padding-right: 312px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-13 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-13 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-14 {\n padding-left: 348px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-14 {\n padding-right: 348px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-14 {\n padding-left: 336px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-14 {\n padding-right: 336px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-14 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-14 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-15 {\n padding-left: 372px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-15 {\n padding-right: 372px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-15 {\n padding-left: 360px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-15 {\n padding-right: 360px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-15 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-15 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-16 {\n padding-left: 396px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-16 {\n padding-right: 396px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-16 {\n padding-left: 384px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-16 {\n padding-right: 384px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-16 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-16 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-17 {\n padding-left: 420px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-17 {\n padding-right: 420px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-17 {\n padding-left: 408px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-17 {\n padding-right: 408px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-17 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-17 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-18 {\n padding-left: 444px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-18 {\n padding-right: 444px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-18 {\n padding-left: 432px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-18 {\n padding-right: 432px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-18 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-18 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-19 {\n padding-left: 468px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-19 {\n padding-right: 468px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-19 {\n padding-left: 456px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-19 {\n padding-right: 456px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-19 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-19 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-20 {\n padding-left: 492px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-20 {\n padding-right: 492px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-20 {\n padding-left: 480px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-20 {\n padding-right: 480px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-20 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-20 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-21 {\n padding-left: 516px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-21 {\n padding-right: 516px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-21 {\n padding-left: 504px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-21 {\n padding-right: 504px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-21 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-21 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-22 {\n padding-left: 540px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-22 {\n padding-right: 540px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-22 {\n padding-left: 528px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-22 {\n padding-right: 528px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-22 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-22 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-23 {\n padding-left: 564px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-23 {\n padding-right: 564px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-23 {\n padding-left: 552px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-23 {\n padding-right: 552px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-23 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-23 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-24 {\n padding-left: 588px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-24 {\n padding-right: 588px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-24 {\n padding-left: 576px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-24 {\n padding-right: 576px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-24 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-24 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-25 {\n padding-left: 612px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-25 {\n padding-right: 612px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-25 {\n padding-left: 600px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-25 {\n padding-right: 600px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-25 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-25 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-26 {\n padding-left: 636px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-26 {\n padding-right: 636px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-26 {\n padding-left: 624px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-26 {\n padding-right: 624px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-26 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-26 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-27 {\n padding-left: 660px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-27 {\n padding-right: 660px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-27 {\n padding-left: 648px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-27 {\n padding-right: 648px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-27 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-27 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-28 {\n padding-left: 684px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-28 {\n padding-right: 684px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-28 {\n padding-left: 672px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-28 {\n padding-right: 672px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-28 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-28 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-29 {\n padding-left: 708px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-29 {\n padding-right: 708px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-29 {\n padding-left: 696px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-29 {\n padding-right: 696px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-29 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-29 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-30 {\n padding-left: 732px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-30 {\n padding-right: 732px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-30 {\n padding-left: 720px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-30 {\n padding-right: 720px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-30 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-30 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-31 {\n padding-left: 756px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-31 {\n padding-right: 756px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-31 {\n padding-left: 744px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-31 {\n padding-right: 744px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-31 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-31 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-32 {\n padding-left: 780px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-32 {\n padding-right: 780px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-32 {\n padding-left: 768px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-32 {\n padding-right: 768px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-32 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-32 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-33 {\n padding-left: 804px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-33 {\n padding-right: 804px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-33 {\n padding-left: 792px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-33 {\n padding-right: 792px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-33 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-33 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-34 {\n padding-left: 828px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-34 {\n padding-right: 828px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-34 {\n padding-left: 816px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-34 {\n padding-right: 816px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-34 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-34 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-35 {\n padding-left: 852px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-35 {\n padding-right: 852px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-35 {\n padding-left: 840px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-35 {\n padding-right: 840px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-35 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-35 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-36 {\n padding-left: 876px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-36 {\n padding-right: 876px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-36 {\n padding-left: 864px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-36 {\n padding-right: 864px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-36 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-36 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-37 {\n padding-left: 900px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-37 {\n padding-right: 900px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-37 {\n padding-left: 888px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-37 {\n padding-right: 888px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-37 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-37 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-38 {\n padding-left: 924px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-38 {\n padding-right: 924px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-38 {\n padding-left: 912px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-38 {\n padding-right: 912px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-38 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-38 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-39 {\n padding-left: 948px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-39 {\n padding-right: 948px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-39 {\n padding-left: 936px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-39 {\n padding-right: 936px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-39 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-39 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-40 {\n padding-left: 972px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-40 {\n padding-right: 972px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-40 {\n padding-left: 960px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-40 {\n padding-right: 960px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-40 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-40 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-41 {\n padding-left: 996px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-41 {\n padding-right: 996px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-41 {\n padding-left: 984px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-41 {\n padding-right: 984px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-41 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-41 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-42 {\n padding-left: 1020px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-42 {\n padding-right: 1020px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-42 {\n padding-left: 1008px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-42 {\n padding-right: 1008px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-42 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-42 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-43 {\n padding-left: 1044px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-43 {\n padding-right: 1044px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-43 {\n padding-left: 1032px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-43 {\n padding-right: 1032px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-43 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-43 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-44 {\n padding-left: 1068px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-44 {\n padding-right: 1068px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-44 {\n padding-left: 1056px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-44 {\n padding-right: 1056px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-44 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-44 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-45 {\n padding-left: 1092px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-45 {\n padding-right: 1092px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-45 {\n padding-left: 1080px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-45 {\n padding-right: 1080px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-45 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-45 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-46 {\n padding-left: 1116px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-46 {\n padding-right: 1116px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-46 {\n padding-left: 1104px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-46 {\n padding-right: 1104px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-46 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-46 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-47 {\n padding-left: 1140px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-47 {\n padding-right: 1140px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-47 {\n padding-left: 1128px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-47 {\n padding-right: 1128px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-47 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-47 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-48 {\n padding-left: 1164px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-48 {\n padding-right: 1164px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-48 {\n padding-left: 1152px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-48 {\n padding-right: 1152px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-48 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-48 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-49 {\n padding-left: 1188px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-49 {\n padding-right: 1188px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-49 {\n padding-left: 1176px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-49 {\n padding-right: 1176px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-49 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-49 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-50 {\n padding-left: 1212px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-50 {\n padding-right: 1212px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-50 {\n padding-left: 1200px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-50 {\n padding-right: 1200px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-50 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-50 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-51 {\n padding-left: 1236px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-51 {\n padding-right: 1236px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-51 {\n padding-left: 1224px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-51 {\n padding-right: 1224px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-51 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-51 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-52 {\n padding-left: 1260px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-52 {\n padding-right: 1260px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-52 {\n padding-left: 1248px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-52 {\n padding-right: 1248px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-52 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-52 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-53 {\n padding-left: 1284px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-53 {\n padding-right: 1284px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-53 {\n padding-left: 1272px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-53 {\n padding-right: 1272px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-53 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-53 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-54 {\n padding-left: 1308px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-54 {\n padding-right: 1308px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-54 {\n padding-left: 1296px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-54 {\n padding-right: 1296px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-54 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-54 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-55 {\n padding-left: 1332px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-55 {\n padding-right: 1332px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-55 {\n padding-left: 1320px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-55 {\n padding-right: 1320px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-55 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-55 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-56 {\n padding-left: 1356px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-56 {\n padding-right: 1356px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-56 {\n padding-left: 1344px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-56 {\n padding-right: 1344px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-56 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-56 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-57 {\n padding-left: 1380px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-57 {\n padding-right: 1380px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-57 {\n padding-left: 1368px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-57 {\n padding-right: 1368px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-57 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-57 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-58 {\n padding-left: 1404px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-58 {\n padding-right: 1404px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-58 {\n padding-left: 1392px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-58 {\n padding-right: 1392px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-58 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-58 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-59 {\n padding-left: 1428px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-59 {\n padding-right: 1428px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-59 {\n padding-left: 1416px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-59 {\n padding-right: 1416px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-59 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-59 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-60 {\n padding-left: 1452px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-60 {\n padding-right: 1452px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-60 {\n padding-left: 1440px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-60 {\n padding-right: 1440px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-60 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-60 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-61 {\n padding-left: 1476px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-61 {\n padding-right: 1476px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-61 {\n padding-left: 1464px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-61 {\n padding-right: 1464px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-61 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-61 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-62 {\n padding-left: 1500px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-62 {\n padding-right: 1500px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-62 {\n padding-left: 1488px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-62 {\n padding-right: 1488px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-62 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-62 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-63 {\n padding-left: 1524px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-63 {\n padding-right: 1524px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-63 {\n padding-left: 1512px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-63 {\n padding-right: 1512px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-63 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-63 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-64 {\n padding-left: 1548px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-64 {\n padding-right: 1548px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-64 {\n padding-left: 1536px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-64 {\n padding-right: 1536px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-64 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-64 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-65 {\n padding-left: 1572px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-65 {\n padding-right: 1572px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-65 {\n padding-left: 1560px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-65 {\n padding-right: 1560px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-65 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-65 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-66 {\n padding-left: 1596px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-66 {\n padding-right: 1596px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-66 {\n padding-left: 1584px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-66 {\n padding-right: 1584px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-66 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-66 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-67 {\n padding-left: 1620px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-67 {\n padding-right: 1620px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-67 {\n padding-left: 1608px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-67 {\n padding-right: 1608px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-67 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-67 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-68 {\n padding-left: 1644px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-68 {\n padding-right: 1644px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-68 {\n padding-left: 1632px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-68 {\n padding-right: 1632px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-68 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-68 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-69 {\n padding-left: 1668px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-69 {\n padding-right: 1668px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-69 {\n padding-left: 1656px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-69 {\n padding-right: 1656px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-69 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-69 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-70 {\n padding-left: 1692px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-70 {\n padding-right: 1692px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-70 {\n padding-left: 1680px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-70 {\n padding-right: 1680px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-70 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-70 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-71 {\n padding-left: 1716px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-71 {\n padding-right: 1716px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-71 {\n padding-left: 1704px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-71 {\n padding-right: 1704px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-71 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-71 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-72 {\n padding-left: 1740px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-72 {\n padding-right: 1740px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-72 {\n padding-left: 1728px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-72 {\n padding-right: 1728px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-72 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-72 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-73 {\n padding-left: 1764px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-73 {\n padding-right: 1764px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-73 {\n padding-left: 1752px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-73 {\n padding-right: 1752px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-73 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-73 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-74 {\n padding-left: 1788px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-74 {\n padding-right: 1788px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-74 {\n padding-left: 1776px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-74 {\n padding-right: 1776px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-74 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-74 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-75 {\n padding-left: 1812px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-75 {\n padding-right: 1812px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-75 {\n padding-left: 1800px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-75 {\n padding-right: 1800px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-75 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-75 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-76 {\n padding-left: 1836px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-76 {\n padding-right: 1836px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-76 {\n padding-left: 1824px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-76 {\n padding-right: 1824px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-76 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-76 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-77 {\n padding-left: 1860px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-77 {\n padding-right: 1860px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-77 {\n padding-left: 1848px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-77 {\n padding-right: 1848px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-77 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-77 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-78 {\n padding-left: 1884px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-78 {\n padding-right: 1884px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-78 {\n padding-left: 1872px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-78 {\n padding-right: 1872px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-78 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-78 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-79 {\n padding-left: 1908px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-79 {\n padding-right: 1908px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-79 {\n padding-left: 1896px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-79 {\n padding-right: 1896px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-79 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-79 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-80 {\n padding-left: 1932px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-80 {\n padding-right: 1932px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-80 {\n padding-left: 1920px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-80 {\n padding-right: 1920px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-80 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-80 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-81 {\n padding-left: 1956px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-81 {\n padding-right: 1956px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-81 {\n padding-left: 1944px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-81 {\n padding-right: 1944px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-81 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-81 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-82 {\n padding-left: 1980px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-82 {\n padding-right: 1980px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-82 {\n padding-left: 1968px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-82 {\n padding-right: 1968px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-82 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-82 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-83 {\n padding-left: 2004px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-83 {\n padding-right: 2004px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-83 {\n padding-left: 1992px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-83 {\n padding-right: 1992px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-83 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-83 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-84 {\n padding-left: 2028px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-84 {\n padding-right: 2028px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-84 {\n padding-left: 2016px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-84 {\n padding-right: 2016px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-84 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-84 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-85 {\n padding-left: 2052px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-85 {\n padding-right: 2052px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-85 {\n padding-left: 2040px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-85 {\n padding-right: 2040px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-85 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-85 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-86 {\n padding-left: 2076px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-86 {\n padding-right: 2076px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-86 {\n padding-left: 2064px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-86 {\n padding-right: 2064px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-86 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-86 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-87 {\n padding-left: 2100px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-87 {\n padding-right: 2100px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-87 {\n padding-left: 2088px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-87 {\n padding-right: 2088px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-87 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-87 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-88 {\n padding-left: 2124px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-88 {\n padding-right: 2124px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-88 {\n padding-left: 2112px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-88 {\n padding-right: 2112px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-88 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-88 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-89 {\n padding-left: 2148px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-89 {\n padding-right: 2148px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-89 {\n padding-left: 2136px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-89 {\n padding-right: 2136px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-89 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-89 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-90 {\n padding-left: 2172px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-90 {\n padding-right: 2172px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-90 {\n padding-left: 2160px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-90 {\n padding-right: 2160px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-90 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-90 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-91 {\n padding-left: 2196px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-91 {\n padding-right: 2196px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-91 {\n padding-left: 2184px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-91 {\n padding-right: 2184px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-91 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-91 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-92 {\n padding-left: 2220px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-92 {\n padding-right: 2220px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-92 {\n padding-left: 2208px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-92 {\n padding-right: 2208px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-92 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-92 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-93 {\n padding-left: 2244px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-93 {\n padding-right: 2244px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-93 {\n padding-left: 2232px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-93 {\n padding-right: 2232px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-93 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-93 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-94 {\n padding-left: 2268px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-94 {\n padding-right: 2268px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-94 {\n padding-left: 2256px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-94 {\n padding-right: 2256px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-94 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-94 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-95 {\n padding-left: 2292px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-95 {\n padding-right: 2292px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-95 {\n padding-left: 2280px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-95 {\n padding-right: 2280px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-95 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-95 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-96 {\n padding-left: 2316px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-96 {\n padding-right: 2316px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-96 {\n padding-left: 2304px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-96 {\n padding-right: 2304px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-96 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-96 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-97 {\n padding-left: 2340px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-97 {\n padding-right: 2340px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-97 {\n padding-left: 2328px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-97 {\n padding-right: 2328px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-97 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-97 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-98 {\n padding-left: 2364px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-98 {\n padding-right: 2364px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-98 {\n padding-left: 2352px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-98 {\n padding-right: 2352px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-98 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-98 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-99 {\n padding-left: 2388px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-99 {\n padding-right: 2388px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-indent-99 {\n padding-left: 2376px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-indent-99 {\n padding-right: 2376px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-level-99 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-level-99 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-ltr .ag-row-group-leaf-indent {\n margin-left: 24px;\n}\n\n.ag-theme-blue .ag-rtl .ag-row-group-leaf-indent {\n margin-right: 24px;\n}\n\n.ag-theme-blue .ag-value-change-delta {\n padding-right: 2px;\n}\n.ag-theme-blue .ag-value-change-delta-up {\n color: darkgreen;\n color: var(--ag-value-change-delta-up-color, darkgreen);\n}\n.ag-theme-blue .ag-value-change-delta-down {\n color: darkred;\n color: var(--ag-value-change-delta-down-color, darkred);\n}\n.ag-theme-blue .ag-value-change-value {\n background-color: transparent;\n border-radius: 1px;\n padding-left: 1px;\n padding-right: 1px;\n -webkit-transition: background-color 1s;\n transition: background-color 1s;\n}\n.ag-theme-blue .ag-value-change-value-highlight {\n background-color: #cec;\n background-color: var(--ag-value-change-value-highlight-background-color, #cec);\n -webkit-transition: background-color 0.1s;\n transition: background-color 0.1s;\n}\n.ag-theme-blue .ag-cell-data-changed {\n background-color: #cec !important;\n background-color: var(--ag-value-change-value-highlight-background-color, #cec) !important;\n}\n.ag-theme-blue .ag-cell-data-changed-animation {\n background-color: transparent;\n}\n.ag-theme-blue .ag-cell-highlight {\n background-color: rgba(136, 255, 136, 0.4) !important;\n background-color: var(--ag-range-selection-highlight-color, rgba(136, 255, 136, 0.4)) !important;\n}\n.ag-theme-blue .ag-row {\n height: 25px;\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n color: #222;\n color: var(--ag-data-color, var(--ag-foreground-color, #222));\n}\n.ag-theme-blue .ag-row-highlight-above::after, .ag-theme-blue .ag-row-highlight-below::after {\n content: \"\";\n position: absolute;\n width: calc(100% - 1px);\n height: 1px;\n background-color: #222;\n background-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #222));\n left: 1px;\n}\n.ag-theme-blue .ag-row-highlight-above::after {\n top: -1px;\n}\n.ag-theme-blue .ag-row-highlight-above.ag-row-first::after {\n top: 0;\n}\n.ag-theme-blue .ag-row-highlight-below::after {\n bottom: 0px;\n}\n.ag-theme-blue .ag-row-odd {\n background-color: #deebf7;\n background-color: var(--ag-odd-row-background-color, #deebf7);\n}\n.ag-theme-blue .ag-body-horizontal-scroll:not(.ag-scrollbar-invisible) .ag-horizontal-left-spacer:not(.ag-scroller-corner) {\n border-right: solid 1px;\n border-right-color: #9bc2e6;\n border-right-color: var(--ag-border-color, #9bc2e6);\n}\n.ag-theme-blue .ag-body-horizontal-scroll:not(.ag-scrollbar-invisible) .ag-horizontal-right-spacer:not(.ag-scroller-corner) {\n border-left: solid 1px;\n border-left-color: #9bc2e6;\n border-left-color: var(--ag-border-color, #9bc2e6);\n}\n.ag-theme-blue .ag-row-hover {\n background-color: #f0f0f0;\n background-color: var(--ag-row-hover-color, #f0f0f0);\n}\n.ag-theme-blue .ag-column-hover {\n background-color: #f0f0f0;\n background-color: var(--ag-column-hover-color, #f0f0f0);\n}\n.ag-theme-blue .ag-ltr .ag-right-aligned-cell {\n text-align: right;\n}\n\n.ag-theme-blue .ag-rtl .ag-right-aligned-cell {\n text-align: left;\n}\n\n.ag-theme-blue .ag-ltr .ag-right-aligned-cell .ag-cell-value, .ag-theme-blue .ag-ltr .ag-right-aligned-cell .ag-group-value {\n margin-left: auto;\n}\n\n.ag-theme-blue .ag-rtl .ag-right-aligned-cell .ag-cell-value, .ag-theme-blue .ag-rtl .ag-right-aligned-cell .ag-group-value {\n margin-right: auto;\n}\n\n.ag-theme-blue .ag-cell, .ag-theme-blue .ag-full-width-row .ag-cell-wrapper.ag-row-group {\n border: 1px solid transparent;\n line-height: min(var(--ag-line-height, 23px), 23px);\n padding-left: 11px;\n padding-right: 11px;\n -webkit-font-smoothing: subpixel-antialiased;\n}\n.ag-theme-blue .ag-row > .ag-cell-wrapper {\n padding-left: 11px;\n padding-right: 11px;\n}\n.ag-theme-blue .ag-row-dragging {\n cursor: move;\n opacity: 0.5;\n}\n.ag-theme-blue .ag-cell-inline-editing {\n border: solid 1px;\n border-color: #9bc2e6;\n border-color: var(--ag-border-color, #9bc2e6);\n background: #fff;\n background: var(--ag-background-color, #fff);\n border-radius: 0px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n padding: 0;\n height: 25px;\n background-color: #f6f6f6;\n background-color: var(--ag-control-panel-background-color, #f6f6f6);\n}\n.ag-theme-blue .ag-popup-editor {\n border: solid 1px;\n border-color: #9bc2e6;\n border-color: var(--ag-border-color, #9bc2e6);\n background: #fff;\n background: var(--ag-background-color, #fff);\n border-radius: 0px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n background-color: #f6f6f6;\n background-color: var(--ag-control-panel-background-color, #f6f6f6);\n padding: 0;\n}\n.ag-theme-blue .ag-large-text-input {\n height: auto;\n padding: 12px;\n}\n.ag-theme-blue .ag-details-row {\n padding: 20px;\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n}\n.ag-theme-blue .ag-layout-auto-height .ag-center-cols-clipper, .ag-theme-blue .ag-layout-auto-height .ag-center-cols-container, .ag-theme-blue .ag-layout-print .ag-center-cols-clipper, .ag-theme-blue .ag-layout-print .ag-center-cols-container {\n min-height: 50px;\n}\n.ag-theme-blue .ag-overlay-loading-wrapper {\n background-color: rgba(255, 255, 255, 0.66);\n background-color: var(--ag-modal-overlay-background-color, rgba(255, 255, 255, 0.66));\n}\n.ag-theme-blue .ag-overlay-loading-center {\n border: solid 1px;\n border-color: #9bc2e6;\n border-color: var(--ag-border-color, #9bc2e6);\n background: #fff;\n background: var(--ag-background-color, #fff);\n border-radius: 0px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n}\n.ag-theme-blue .ag-overlay-no-rows-wrapper.ag-layout-auto-height {\n padding-top: 30px;\n}\n.ag-theme-blue .ag-loading {\n padding-left: 12px;\n display: -webkit-box;\n display: flex;\n height: 100%;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-blue .ag-loading-icon {\n padding-right: 12px;\n}\n.ag-theme-blue .ag-icon-loading {\n -webkit-animation-name: spin;\n animation-name: spin;\n -webkit-animation-duration: 1000ms;\n animation-duration: 1000ms;\n -webkit-animation-iteration-count: infinite;\n animation-iteration-count: infinite;\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n}\n@-webkit-keyframes spin {\n from {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@keyframes spin {\n from {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.ag-theme-blue .ag-floating-top {\n border-bottom: solid 1px;\n border-bottom-color: #9bc2e6;\n border-bottom-color: var(--ag-border-color, #9bc2e6);\n}\n.ag-theme-blue .ag-floating-bottom {\n border-top: solid 1px;\n border-top-color: #9bc2e6;\n border-top-color: var(--ag-border-color, #9bc2e6);\n}\n.ag-theme-blue .ag-ltr .ag-cell {\n border-right: dotted #9bc2e6;\n}\n\n.ag-theme-blue .ag-rtl .ag-cell {\n border-left: dotted #9bc2e6;\n}\n\n.ag-theme-blue .ag-ltr .ag-cell {\n border-right-width: 1px;\n}\n\n.ag-theme-blue .ag-rtl .ag-cell {\n border-left-width: 1px;\n}\n\n.ag-theme-blue .ag-cell.ag-cell-first-right-pinned:not(.ag-cell-range-left):not(.ag-cell-range-single-cell) {\n border-left: solid 1px;\n border-left-color: #9bc2e6;\n border-left-color: var(--ag-border-color, #9bc2e6);\n}\n.ag-theme-blue .ag-cell.ag-cell-last-left-pinned:not(.ag-cell-range-right):not(.ag-cell-range-single-cell) {\n border-right: solid 1px;\n border-right-color: #9bc2e6;\n border-right-color: var(--ag-border-color, #9bc2e6);\n}\n.ag-theme-blue .ag-row-selected {\n background-color: #c8c8c8;\n background-color: var(--ag-selected-row-background-color, #c8c8c8);\n}\n.ag-theme-blue .ag-cell-range-selected:not(.ag-cell-focus),\n.ag-theme-blue .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing) {\n background-color: rgba(34, 34, 34, 0.2);\n background-color: var(--ag-range-selection-background-color, rgba(34, 34, 34, 0.2));\n}\n.ag-theme-blue .ag-cell-range-selected:not(.ag-cell-focus).ag-cell-range-chart,\n.ag-theme-blue .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing).ag-cell-range-chart {\n background-color: rgba(0, 88, 255, 0.1) !important;\n background-color: var(--ag-range-selection-chart-background-color, rgba(0, 88, 255, 0.1)) !important;\n}\n.ag-theme-blue .ag-cell-range-selected:not(.ag-cell-focus).ag-cell-range-chart.ag-cell-range-chart-category,\n.ag-theme-blue .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing).ag-cell-range-chart.ag-cell-range-chart-category {\n background-color: rgba(0, 255, 132, 0.1) !important;\n background-color: var(--ag-range-selection-chart-category-background-color, rgba(0, 255, 132, 0.1)) !important;\n}\n.ag-theme-blue .ag-cell-range-selected-1:not(.ag-cell-focus),\n.ag-theme-blue .ag-root:not(.ag-context-menu-open) .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-1:not(.ag-cell-inline-editing) {\n background-color: rgba(34, 34, 34, 0.2);\n background-color: var(--ag-range-selection-background-color-1, var(--ag-range-selection-background-color, rgba(34, 34, 34, 0.2)));\n}\n.ag-theme-blue .ag-cell-range-selected-2:not(.ag-cell-focus),\n.ag-theme-blue .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-2 {\n background-color: rgba(34, 34, 34, 0.36);\n background-color: var(--ag-range-selection-background-color-2, rgba(34, 34, 34, 0.36));\n}\n.ag-theme-blue .ag-cell-range-selected-3:not(.ag-cell-focus),\n.ag-theme-blue .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-3 {\n background-color: rgba(34, 34, 34, 0.488);\n background-color: var(--ag-range-selection-background-color-3, rgba(34, 34, 34, 0.488));\n}\n.ag-theme-blue .ag-cell-range-selected-4:not(.ag-cell-focus),\n.ag-theme-blue .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-4 {\n background-color: rgba(34, 34, 34, 0.5904);\n background-color: var(--ag-range-selection-background-color-4, rgba(34, 34, 34, 0.5904));\n}\n.ag-theme-blue .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-top {\n border-top-color: #222;\n border-top-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #222));\n}\n.ag-theme-blue .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-right {\n border-right-color: #222;\n border-right-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #222));\n}\n.ag-theme-blue .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-bottom {\n border-bottom-color: #222;\n border-bottom-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #222));\n}\n.ag-theme-blue .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-left {\n border-left-color: #222;\n border-left-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #222));\n}\n.ag-theme-blue .ag-ltr .ag-has-focus .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-blue .ag-ltr .ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-blue .ag-ltr .ag-has-focus .ag-full-width-row.ag-row-focus .ag-cell-wrapper.ag-row-group,\n.ag-theme-blue .ag-ltr .ag-cell-range-single-cell,\n.ag-theme-blue .ag-ltr .ag-cell-range-single-cell.ag-cell-range-handle, .ag-theme-blue .ag-rtl .ag-has-focus .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-blue .ag-rtl .ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-blue .ag-rtl .ag-has-focus .ag-full-width-row.ag-row-focus .ag-cell-wrapper.ag-row-group,\n.ag-theme-blue .ag-rtl .ag-cell-range-single-cell,\n.ag-theme-blue .ag-rtl .ag-cell-range-single-cell.ag-cell-range-handle {\n border: 1px solid;\n border-color: #222;\n border-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #222));\n outline: initial;\n}\n.ag-theme-blue .ag-cell.ag-selection-fill-top,\n.ag-theme-blue .ag-cell.ag-selection-fill-top.ag-cell-range-selected {\n border-top: 1px dashed;\n border-top-color: #222;\n border-top-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #222));\n}\n.ag-theme-blue .ag-ltr .ag-cell.ag-selection-fill-right, .ag-theme-blue .ag-ltr .ag-cell.ag-selection-fill-right.ag-cell-range-selected {\n border-right: 1px dashed;\n border-right-color: #222;\n border-right-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #222));\n}\n\n.ag-theme-blue .ag-rtl .ag-cell.ag-selection-fill-right, .ag-theme-blue .ag-rtl .ag-cell.ag-selection-fill-right.ag-cell-range-selected {\n border-left: 1px dashed;\n border-left-color: #222;\n border-left-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #222));\n}\n\n.ag-theme-blue .ag-cell.ag-selection-fill-bottom,\n.ag-theme-blue .ag-cell.ag-selection-fill-bottom.ag-cell-range-selected {\n border-bottom: 1px dashed;\n border-bottom-color: #222;\n border-bottom-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #222));\n}\n.ag-theme-blue .ag-ltr .ag-cell.ag-selection-fill-left, .ag-theme-blue .ag-ltr .ag-cell.ag-selection-fill-left.ag-cell-range-selected {\n border-left: 1px dashed;\n border-left-color: #222;\n border-left-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #222));\n}\n\n.ag-theme-blue .ag-rtl .ag-cell.ag-selection-fill-left, .ag-theme-blue .ag-rtl .ag-cell.ag-selection-fill-left.ag-cell-range-selected {\n border-right: 1px dashed;\n border-right-color: #222;\n border-right-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #222));\n}\n\n.ag-theme-blue .ag-range-handle, .ag-theme-blue .ag-fill-handle {\n position: absolute;\n width: 6px;\n height: 6px;\n bottom: -1px;\n background-color: #222;\n background-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #222));\n}\n.ag-theme-blue .ag-ltr .ag-range-handle, .ag-theme-blue .ag-ltr .ag-fill-handle {\n right: -1px;\n}\n\n.ag-theme-blue .ag-rtl .ag-range-handle, .ag-theme-blue .ag-rtl .ag-fill-handle {\n left: -1px;\n}\n\n.ag-theme-blue .ag-fill-handle {\n cursor: cell;\n}\n.ag-theme-blue .ag-range-handle {\n cursor: nwse-resize;\n}\n.ag-theme-blue .ag-cell-inline-editing {\n border-color: var(--ag-input-focus-border-color) !important;\n}\n.ag-theme-blue .ag-menu {\n border: solid 1px;\n border-color: #9bc2e6;\n border-color: var(--ag-border-color, #9bc2e6);\n background: #fff;\n background: var(--ag-background-color, #fff);\n border-radius: 0px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n padding: 0;\n}\n.ag-theme-blue .ag-menu-list {\n cursor: default;\n padding: 4px 0;\n}\n.ag-theme-blue .ag-menu-separator {\n height: 9px;\n}\n.ag-theme-blue .ag-menu-separator-part::after {\n content: \"\";\n display: block;\n border-top: solid 1px;\n border-top-color: #9bc2e6;\n border-top-color: var(--ag-border-color, #9bc2e6);\n}\n.ag-theme-blue .ag-menu-option-active, .ag-theme-blue .ag-compact-menu-option-active {\n background-color: #f0f0f0;\n background-color: var(--ag-row-hover-color, #f0f0f0);\n}\n.ag-theme-blue .ag-menu-option-part, .ag-theme-blue .ag-compact-menu-option-part {\n line-height: 12px;\n padding: 6px 0;\n}\n.ag-theme-blue .ag-menu-option-disabled, .ag-theme-blue .ag-compact-menu-option-disabled {\n opacity: 0.5;\n}\n.ag-theme-blue .ag-menu-option-icon, .ag-theme-blue .ag-compact-menu-option-icon {\n width: 12px;\n}\n.ag-theme-blue .ag-ltr .ag-menu-option-icon, .ag-theme-blue .ag-ltr .ag-compact-menu-option-icon {\n padding-left: 8px;\n}\n\n.ag-theme-blue .ag-rtl .ag-menu-option-icon, .ag-theme-blue .ag-rtl .ag-compact-menu-option-icon {\n padding-right: 8px;\n}\n\n.ag-theme-blue .ag-menu-option-text, .ag-theme-blue .ag-compact-menu-option-text {\n padding-left: 8px;\n padding-right: 8px;\n}\n.ag-theme-blue .ag-ltr .ag-menu-option-shortcut, .ag-theme-blue .ag-ltr .ag-compact-menu-option-shortcut {\n padding-right: 4px;\n}\n\n.ag-theme-blue .ag-rtl .ag-menu-option-shortcut, .ag-theme-blue .ag-rtl .ag-compact-menu-option-shortcut {\n padding-left: 4px;\n}\n\n.ag-theme-blue .ag-menu-option-popup-pointer, .ag-theme-blue .ag-compact-menu-option-popup-pointer {\n padding-right: 4px;\n}\n.ag-theme-blue .ag-tabs {\n min-width: 220px;\n}\n.ag-theme-blue .ag-tabs-header {\n width: 100%;\n display: -webkit-box;\n display: flex;\n}\n.ag-theme-blue .ag-tab {\n border-bottom: 0 solid transparent;\n display: -webkit-box;\n display: flex;\n -webkit-box-flex: 0;\n flex: none;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n cursor: pointer;\n}\n.ag-theme-blue .ag-keyboard-focus .ag-tab:focus {\n outline: none;\n}\n.ag-theme-blue .ag-keyboard-focus .ag-tab:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-blue .ag-tab-selected {\n border-bottom-color: #222;\n border-bottom-color: var(--ag-selected-tab-underline-color, var(--ag-range-selection-border-color, var(--ag-foreground-color, #222)));\n}\n.ag-theme-blue .ag-menu-header {\n color: #222;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #222));\n}\n.ag-theme-blue .ag-filter-separator {\n border-top: solid 1px;\n border-top-color: #9bc2e6;\n border-top-color: var(--ag-border-color, #9bc2e6);\n}\n.ag-theme-blue .ag-menu:not(.ag-tabs) .ag-filter-select {\n min-width: 167px;\n}\n.ag-theme-blue .ag-tabs .ag-filter-select {\n min-width: 206px;\n}\n.ag-theme-blue .ag-filter-select .ag-picker-field-wrapper {\n width: 0;\n}\n.ag-theme-blue .ag-filter-condition-operator {\n height: 17px;\n}\n.ag-theme-blue .ag-ltr .ag-filter-condition-operator-or {\n margin-left: 8px;\n}\n\n.ag-theme-blue .ag-rtl .ag-filter-condition-operator-or {\n margin-right: 8px;\n}\n\n.ag-theme-blue .ag-set-filter-select-all {\n padding-top: 6px;\n}\n.ag-theme-blue .ag-set-filter-list, .ag-theme-blue .ag-filter-no-matches {\n height: 120px;\n}\n.ag-theme-blue .ag-set-filter-filter {\n margin-top: 6px;\n margin-left: 6px;\n margin-right: 6px;\n}\n.ag-theme-blue .ag-filter-to {\n margin-top: 4px;\n}\n.ag-theme-blue .ag-mini-filter {\n margin: 6px 6px;\n}\n.ag-theme-blue .ag-set-filter-item {\n margin: 0px 6px;\n}\n.ag-theme-blue .ag-ltr .ag-set-filter-item-value {\n margin-left: 6px;\n}\n\n.ag-theme-blue .ag-rtl .ag-set-filter-item-value {\n margin-right: 6px;\n}\n\n.ag-theme-blue .ag-filter-apply-panel {\n padding: 6px 6px;\n border-top: solid 1px;\n border-top-color: #9bc2e6;\n border-top-color: var(--ag-secondary-border-color, var(--ag-border-color, #9bc2e6));\n}\n.ag-theme-blue .ag-filter-apply-panel-button {\n line-height: 1.5;\n}\n.ag-theme-blue .ag-ltr .ag-filter-apply-panel-button {\n margin-left: 8px;\n}\n\n.ag-theme-blue .ag-rtl .ag-filter-apply-panel-button {\n margin-right: 8px;\n}\n\n.ag-theme-blue .ag-simple-filter-body-wrapper {\n padding: 6px 6px;\n padding-bottom: 2px;\n}\n.ag-theme-blue .ag-simple-filter-body-wrapper > * {\n margin-bottom: 4px;\n}\n.ag-theme-blue .ag-filter-no-matches {\n padding: 6px 6px;\n}\n.ag-theme-blue .ag-multi-filter-menu-item {\n margin: 4px 0;\n}\n.ag-theme-blue .ag-multi-filter-group-title-bar {\n padding: 8px 4px;\n background-color: transparent;\n}\n.ag-theme-blue .ag-keyboard-focus .ag-multi-filter-group-title-bar:focus {\n outline: none;\n}\n.ag-theme-blue .ag-keyboard-focus .ag-multi-filter-group-title-bar:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-blue .ag-side-bar {\n position: relative;\n}\n.ag-theme-blue .ag-tool-panel-wrapper {\n width: 200px;\n background-color: #f6f6f6;\n background-color: var(--ag-control-panel-background-color, #f6f6f6);\n}\n.ag-theme-blue .ag-side-buttons {\n padding-top: 16px;\n width: 16px;\n position: relative;\n color: #222;\n color: var(--ag-foreground-color, #222);\n overflow: hidden;\n}\n.ag-theme-blue button.ag-side-button-button {\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n background: transparent;\n padding: 8px 0 8px 0;\n width: calc(100% + 1px);\n margin: 0;\n min-height: 72px;\n background-position-y: center;\n background-position-x: center;\n background-repeat: no-repeat;\n border: none;\n border-top: solid 1px;\n border-top-color: #9bc2e6;\n border-top-color: var(--ag-border-color, #9bc2e6);\n border-bottom: solid 1px;\n border-bottom-color: #9bc2e6;\n border-bottom-color: var(--ag-border-color, #9bc2e6);\n}\n.ag-theme-blue button.ag-side-button-button:focus {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.ag-theme-blue .ag-keyboard-focus .ag-side-button-button:focus {\n outline: none;\n}\n.ag-theme-blue .ag-keyboard-focus .ag-side-button-button:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-blue .ag-selected .ag-side-button-button {\n background-color: #f6f6f6;\n background-color: var(--ag-control-panel-background-color, #f6f6f6);\n border-top-color: #9bc2e6;\n border-top-color: var(--ag-border-color, #9bc2e6);\n border-bottom-color: #9bc2e6;\n border-bottom-color: var(--ag-border-color, #9bc2e6);\n}\n.ag-theme-blue .ag-side-button-icon-wrapper {\n margin-bottom: 3px;\n}\n.ag-theme-blue .ag-ltr .ag-side-bar-left,\n.ag-theme-blue .ag-rtl .ag-side-bar-right {\n border-right: solid 1px;\n border-right-color: #9bc2e6;\n border-right-color: var(--ag-border-color, #9bc2e6);\n}\n.ag-theme-blue .ag-ltr .ag-side-bar-left .ag-tool-panel-wrapper,\n.ag-theme-blue .ag-rtl .ag-side-bar-right .ag-tool-panel-wrapper {\n border-left: solid 1px;\n border-left-color: #9bc2e6;\n border-left-color: var(--ag-border-color, #9bc2e6);\n}\n.ag-theme-blue .ag-ltr .ag-side-bar-left .ag-side-button-button,\n.ag-theme-blue .ag-rtl .ag-side-bar-right .ag-side-button-button {\n border-right: 0 solid transparent;\n margin-right: -1px;\n padding-right: 1px;\n}\n.ag-theme-blue .ag-ltr .ag-side-bar-left .ag-selected .ag-side-button-button,\n.ag-theme-blue .ag-rtl .ag-side-bar-right .ag-selected .ag-side-button-button {\n border-right-color: #222;\n border-right-color: var(--ag-selected-tab-underline-color, var(--ag-range-selection-border-color, var(--ag-foreground-color, #222)));\n}\n.ag-theme-blue .ag-rtl .ag-side-bar-left,\n.ag-theme-blue .ag-ltr .ag-side-bar-right {\n border-left: solid 1px;\n border-left-color: #9bc2e6;\n border-left-color: var(--ag-border-color, #9bc2e6);\n}\n.ag-theme-blue .ag-rtl .ag-side-bar-left .ag-tool-panel-wrapper,\n.ag-theme-blue .ag-ltr .ag-side-bar-right .ag-tool-panel-wrapper {\n border-right: solid 1px;\n border-right-color: #9bc2e6;\n border-right-color: var(--ag-border-color, #9bc2e6);\n}\n.ag-theme-blue .ag-rtl .ag-side-bar-left .ag-side-button-button,\n.ag-theme-blue .ag-ltr .ag-side-bar-right .ag-side-button-button {\n border-left: 0 solid transparent;\n margin-left: -1px;\n padding-left: 1px;\n}\n.ag-theme-blue .ag-rtl .ag-side-bar-left .ag-selected .ag-side-button-button,\n.ag-theme-blue .ag-ltr .ag-side-bar-right .ag-selected .ag-side-button-button {\n border-left-color: #222;\n border-left-color: var(--ag-selected-tab-underline-color, var(--ag-range-selection-border-color, var(--ag-foreground-color, #222)));\n}\n.ag-theme-blue .ag-filter-toolpanel-header {\n height: 24px;\n}\n.ag-theme-blue .ag-ltr .ag-filter-toolpanel-header, .ag-theme-blue .ag-ltr .ag-filter-toolpanel-search {\n padding-left: 4px;\n}\n\n.ag-theme-blue .ag-rtl .ag-filter-toolpanel-header, .ag-theme-blue .ag-rtl .ag-filter-toolpanel-search {\n padding-right: 4px;\n}\n\n.ag-theme-blue .ag-keyboard-focus .ag-filter-toolpanel-header:focus {\n outline: none;\n}\n.ag-theme-blue .ag-keyboard-focus .ag-filter-toolpanel-header:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-blue .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n font-family: \"agGridClassic\";\n font-size: 12px;\n line-height: 12px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n content: \"\\f114\";\n position: absolute;\n}\n.ag-theme-blue .ag-ltr .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n padding-left: 4px;\n}\n\n.ag-theme-blue .ag-rtl .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n padding-right: 4px;\n}\n\n.ag-theme-blue .ag-filter-toolpanel-group-level-0-header {\n height: 32px;\n}\n.ag-theme-blue .ag-filter-toolpanel-group-item {\n margin-top: 2px;\n margin-bottom: 2px;\n}\n.ag-theme-blue .ag-filter-toolpanel-search {\n height: 25px;\n}\n.ag-theme-blue .ag-filter-toolpanel-search-input {\n -webkit-box-flex: 1;\n flex-grow: 1;\n height: 16px;\n}\n.ag-theme-blue .ag-ltr .ag-filter-toolpanel-search-input {\n margin-right: 4px;\n}\n\n.ag-theme-blue .ag-rtl .ag-filter-toolpanel-search-input {\n margin-left: 4px;\n}\n\n.ag-theme-blue .ag-filter-toolpanel-group-level-0 {\n border-top: solid 1px;\n border-top-color: #9bc2e6;\n border-top-color: var(--ag-secondary-border-color, var(--ag-border-color, #9bc2e6));\n}\n.ag-theme-blue .ag-ltr .ag-filter-toolpanel-expand, .ag-theme-blue .ag-ltr .ag-filter-toolpanel-group-title-bar-icon {\n margin-right: 4px;\n}\n\n.ag-theme-blue .ag-rtl .ag-filter-toolpanel-expand, .ag-theme-blue .ag-rtl .ag-filter-toolpanel-group-title-bar-icon {\n margin-left: 4px;\n}\n\n.ag-theme-blue .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-1-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-blue .ag-ltr .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-2-header {\n padding-left: 20px;\n}\n\n.ag-theme-blue .ag-rtl .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-2-header {\n padding-right: 20px;\n}\n\n.ag-theme-blue .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-2-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-blue .ag-ltr .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-3-header {\n padding-left: 36px;\n}\n\n.ag-theme-blue .ag-rtl .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-3-header {\n padding-right: 36px;\n}\n\n.ag-theme-blue .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-3-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-blue .ag-ltr .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-4-header {\n padding-left: 52px;\n}\n\n.ag-theme-blue .ag-rtl .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-4-header {\n padding-right: 52px;\n}\n\n.ag-theme-blue .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-4-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-blue .ag-ltr .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-5-header {\n padding-left: 68px;\n}\n\n.ag-theme-blue .ag-rtl .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-5-header {\n padding-right: 68px;\n}\n\n.ag-theme-blue .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-5-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-blue .ag-ltr .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-6-header {\n padding-left: 84px;\n}\n\n.ag-theme-blue .ag-rtl .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-6-header {\n padding-right: 84px;\n}\n\n.ag-theme-blue .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-6-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-blue .ag-ltr .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-7-header {\n padding-left: 100px;\n}\n\n.ag-theme-blue .ag-rtl .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-7-header {\n padding-right: 100px;\n}\n\n.ag-theme-blue .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-7-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-blue .ag-ltr .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-8-header {\n padding-left: 116px;\n}\n\n.ag-theme-blue .ag-rtl .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-8-header {\n padding-right: 116px;\n}\n\n.ag-theme-blue .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-8-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-blue .ag-ltr .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-9-header {\n padding-left: 132px;\n}\n\n.ag-theme-blue .ag-rtl .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-9-header {\n padding-right: 132px;\n}\n\n.ag-theme-blue .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-9-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-blue .ag-ltr .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-10-header {\n padding-left: 148px;\n}\n\n.ag-theme-blue .ag-rtl .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-10-header {\n padding-right: 148px;\n}\n\n.ag-theme-blue .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-10-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-blue .ag-ltr .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-11-header {\n padding-left: 164px;\n}\n\n.ag-theme-blue .ag-rtl .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-11-header {\n padding-right: 164px;\n}\n\n.ag-theme-blue .ag-filter-toolpanel-instance-header.ag-filter-toolpanel-group-level-1-header {\n padding-left: 4px;\n}\n.ag-theme-blue .ag-filter-toolpanel-instance-filter {\n border-top: solid 1px;\n border-top-color: #9bc2e6;\n border-top-color: var(--ag-border-color, #9bc2e6);\n border-bottom: solid 1px;\n border-bottom-color: #9bc2e6;\n border-bottom-color: var(--ag-border-color, #9bc2e6);\n margin-top: 4px;\n}\n.ag-theme-blue .ag-ltr .ag-filter-toolpanel-instance-header-icon {\n margin-left: 4px;\n}\n\n.ag-theme-blue .ag-rtl .ag-filter-toolpanel-instance-header-icon {\n margin-right: 4px;\n}\n\n.ag-theme-blue .ag-pivot-mode-panel {\n min-height: 25px;\n height: 25px;\n display: -webkit-box;\n display: flex;\n}\n.ag-theme-blue .ag-pivot-mode-select {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-blue .ag-ltr .ag-pivot-mode-select {\n margin-left: 6px;\n}\n\n.ag-theme-blue .ag-rtl .ag-pivot-mode-select {\n margin-right: 6px;\n}\n\n.ag-theme-blue .ag-keyboard-focus .ag-column-select-header:focus {\n outline: none;\n}\n.ag-theme-blue .ag-keyboard-focus .ag-column-select-header:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-blue .ag-column-select-header {\n height: 25px;\n -webkit-box-align: center;\n align-items: center;\n padding: 0 6px;\n border-bottom: solid 1px;\n border-bottom-color: #9bc2e6;\n border-bottom-color: var(--ag-secondary-border-color, var(--ag-border-color, #9bc2e6));\n}\n.ag-theme-blue .ag-column-panel-column-select {\n border-bottom: solid 1px;\n border-bottom-color: #9bc2e6;\n border-bottom-color: var(--ag-secondary-border-color, var(--ag-border-color, #9bc2e6));\n border-top: solid 1px;\n border-top-color: #9bc2e6;\n border-top-color: var(--ag-secondary-border-color, var(--ag-border-color, #9bc2e6));\n}\n.ag-theme-blue .ag-column-group-icons,\n.ag-theme-blue .ag-column-select-header-icon {\n color: #222;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #222));\n}\n.ag-theme-blue .ag-column-select-list .ag-list-item-hovered::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n height: 1px;\n background-color: #222;\n background-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #222));\n}\n.ag-theme-blue .ag-column-select-list .ag-item-highlight-top::after {\n top: 0;\n}\n.ag-theme-blue .ag-column-select-list .ag-item-highlight-bottom::after {\n bottom: 0;\n}\n.ag-theme-blue .ag-header {\n background-color: #5e9cd3;\n background-color: var(--ag-header-background-color, #5e9cd3);\n border-bottom: solid 1px;\n border-bottom-color: #9bc2e6;\n border-bottom-color: var(--ag-border-color, #9bc2e6);\n}\n.ag-theme-blue .ag-header-row {\n color: #fff;\n color: var(--ag-header-foreground-color, #fff);\n height: 25px;\n}\n.ag-theme-blue .ag-pinned-right-header {\n border-left: solid 1px;\n border-left-color: #9bc2e6;\n border-left-color: var(--ag-border-color, #9bc2e6);\n}\n.ag-theme-blue .ag-pinned-left-header {\n border-right: solid 1px;\n border-right-color: #9bc2e6;\n border-right-color: var(--ag-border-color, #9bc2e6);\n}\n.ag-theme-blue .ag-ltr .ag-header-cell:not(.ag-right-aligned-header) .ag-header-label-icon {\n margin-left: 4px;\n}\n\n.ag-theme-blue .ag-rtl .ag-header-cell:not(.ag-right-aligned-header) .ag-header-label-icon {\n margin-right: 4px;\n}\n\n.ag-theme-blue .ag-ltr .ag-header-cell.ag-right-aligned-header .ag-header-label-icon {\n margin-right: 4px;\n}\n\n.ag-theme-blue .ag-rtl .ag-header-cell.ag-right-aligned-header .ag-header-label-icon {\n margin-left: 4px;\n}\n\n.ag-theme-blue .ag-header-cell,\n.ag-theme-blue .ag-header-group-cell {\n padding-left: 12px;\n padding-right: 12px;\n}\n.ag-theme-blue .ag-header-cell.ag-header-cell-moving,\n.ag-theme-blue .ag-header-group-cell.ag-header-cell-moving {\n background-color: #9bc2e6;\n background-color: var(--ag-header-cell-moving-background-color, #9bc2e6);\n}\n.ag-theme-blue .ag-keyboard-focus .ag-header-cell:focus {\n outline: none;\n}\n.ag-theme-blue .ag-keyboard-focus .ag-header-cell:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-blue .ag-keyboard-focus .ag-header-group-cell:focus {\n outline: none;\n}\n.ag-theme-blue .ag-keyboard-focus .ag-header-group-cell:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-blue .ag-header-icon {\n color: #222;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #222));\n}\n.ag-theme-blue .ag-header-expand-icon {\n cursor: pointer;\n}\n.ag-theme-blue .ag-ltr .ag-header-expand-icon {\n padding-left: 4px;\n}\n\n.ag-theme-blue .ag-rtl .ag-header-expand-icon {\n padding-right: 4px;\n}\n\n.ag-theme-blue .ag-header-row:not(:first-child) .ag-header-cell,\n.ag-theme-blue .ag-header-row:not(:first-child) .ag-header-group-cell.ag-header-group-cell-with-group {\n border-top: solid 1px;\n border-top-color: #9bc2e6;\n border-top-color: var(--ag-border-color, #9bc2e6);\n}\n.ag-theme-blue .ag-header-cell::after,\n.ag-theme-blue .ag-header-group-cell::after {\n content: \"\";\n position: absolute;\n z-index: 1;\n display: block;\n width: 1px;\n height: 100%;\n top: calc(50% - 50%);\n background-color: rgba(155, 194, 230, 0.5);\n background-color: var(--ag-header-column-separator-color, rgba(155, 194, 230, 0.5));\n}\n.ag-theme-blue .ag-ltr .ag-header-cell::after, .ag-theme-blue .ag-ltr .ag-header-group-cell::after {\n right: 0;\n}\n\n.ag-theme-blue .ag-rtl .ag-header-cell::after, .ag-theme-blue .ag-rtl .ag-header-group-cell::after {\n left: 0;\n}\n\n.ag-theme-blue .ag-ltr .ag-header-select-all {\n margin-right: 12px;\n}\n\n.ag-theme-blue .ag-rtl .ag-header-select-all {\n margin-left: 12px;\n}\n\n.ag-theme-blue .ag-ltr .ag-floating-filter-button {\n margin-left: 12px;\n}\n\n.ag-theme-blue .ag-rtl .ag-floating-filter-button {\n margin-right: 12px;\n}\n\n.ag-theme-blue .ag-floating-filter-button-button {\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background: transparent;\n border: none;\n height: 12px;\n padding: 0;\n width: 12px;\n}\n.ag-theme-blue .ag-filter-loading {\n background-color: #f6f6f6;\n background-color: var(--ag-control-panel-background-color, #f6f6f6);\n height: 100%;\n padding: 6px 6px;\n position: absolute;\n width: 100%;\n z-index: 1;\n}\n.ag-theme-blue .ag-paging-panel {\n border-top: 1px solid;\n border-top-color: #9bc2e6;\n border-top-color: var(--ag-border-color, #9bc2e6);\n color: #222;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #222));\n height: 25px;\n}\n.ag-theme-blue .ag-paging-panel > * {\n margin: 0 12px;\n}\n.ag-theme-blue .ag-paging-button {\n cursor: pointer;\n}\n.ag-theme-blue .ag-paging-button.ag-disabled {\n cursor: default;\n color: rgba(34, 34, 34, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(34, 34, 34, 0.5));\n}\n.ag-theme-blue .ag-keyboard-focus .ag-paging-button:focus {\n outline: none;\n}\n.ag-theme-blue .ag-keyboard-focus .ag-paging-button:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 0px;\n left: 0px;\n display: block;\n width: calc(100% - 0px);\n height: calc(100% - 0px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-blue .ag-paging-button, .ag-theme-blue .ag-paging-description {\n margin: 0 4px;\n}\n.ag-theme-blue .ag-status-bar {\n border-top: solid 1px;\n border-top-color: #9bc2e6;\n border-top-color: var(--ag-border-color, #9bc2e6);\n color: rgba(34, 34, 34, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(34, 34, 34, 0.5));\n padding-right: 16px;\n padding-left: 16px;\n line-height: 1.5;\n}\n.ag-theme-blue .ag-status-name-value-value {\n color: #222;\n color: var(--ag-foreground-color, #222);\n}\n.ag-theme-blue .ag-status-bar-center {\n text-align: center;\n}\n.ag-theme-blue .ag-status-name-value {\n margin-left: 4px;\n margin-right: 4px;\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.ag-theme-blue .ag-column-drop-cell {\n background: #ddebf7;\n background: var(--ag-chip-background-color, #ddebf7);\n border-radius: 16px;\n height: 16px;\n padding: 0 2px;\n border: 1px solid transparent;\n}\n.ag-theme-blue .ag-keyboard-focus .ag-column-drop-cell:focus {\n outline: none;\n}\n.ag-theme-blue .ag-keyboard-focus .ag-column-drop-cell:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 2px;\n left: 2px;\n display: block;\n width: calc(100% - 4px);\n height: calc(100% - 4px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-blue .ag-column-drop-cell-text {\n margin: 0 4px;\n}\n.ag-theme-blue .ag-column-drop-cell-button {\n min-width: 16px;\n margin: 0 2px;\n color: #222;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #222));\n}\n.ag-theme-blue .ag-column-drop-cell-drag-handle {\n margin-left: 8px;\n}\n.ag-theme-blue .ag-column-drop-cell-ghost {\n opacity: 0.5;\n}\n.ag-theme-blue .ag-column-drop-horizontal {\n background-color: #f6f6f6;\n background-color: var(--ag-control-panel-background-color, #f6f6f6);\n color: #222;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #222));\n height: 25px;\n border-bottom: solid 1px;\n border-bottom-color: #9bc2e6;\n border-bottom-color: var(--ag-border-color, #9bc2e6);\n}\n.ag-theme-blue .ag-ltr .ag-column-drop-horizontal {\n padding-left: 12px;\n}\n\n.ag-theme-blue .ag-rtl .ag-column-drop-horizontal {\n padding-right: 12px;\n}\n\n.ag-theme-blue .ag-ltr .ag-column-drop-horizontal-half-width:not(:last-child) {\n border-right: solid 1px;\n border-right-color: #9bc2e6;\n border-right-color: var(--ag-border-color, #9bc2e6);\n}\n\n.ag-theme-blue .ag-rtl .ag-column-drop-horizontal-half-width:not(:last-child) {\n border-left: solid 1px;\n border-left-color: #9bc2e6;\n border-left-color: var(--ag-border-color, #9bc2e6);\n}\n\n.ag-theme-blue .ag-column-drop-horizontal-cell-separator {\n margin: 0 4px;\n color: #222;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #222));\n}\n.ag-theme-blue .ag-column-drop-horizontal-empty-message {\n color: rgba(34, 34, 34, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(34, 34, 34, 0.5));\n}\n.ag-theme-blue .ag-ltr .ag-column-drop-horizontal-icon {\n margin-right: 12px;\n}\n\n.ag-theme-blue .ag-rtl .ag-column-drop-horizontal-icon {\n margin-left: 12px;\n}\n\n.ag-theme-blue .ag-column-drop-vertical-list {\n padding-bottom: 4px;\n padding-right: 4px;\n padding-left: 4px;\n}\n.ag-theme-blue .ag-column-drop-vertical-cell {\n margin-top: 4px;\n}\n.ag-theme-blue .ag-column-drop-vertical {\n min-height: 50px;\n border-bottom: solid 1px;\n border-bottom-color: #9bc2e6;\n border-bottom-color: var(--ag-secondary-border-color, var(--ag-border-color, #9bc2e6));\n}\n.ag-theme-blue .ag-column-drop-vertical.ag-last-column-drop {\n border-bottom: none;\n}\n.ag-theme-blue .ag-column-drop-vertical-icon {\n margin-left: 4px;\n margin-right: 4px;\n}\n.ag-theme-blue .ag-column-drop-vertical-empty-message {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n overflow: hidden;\n color: rgba(34, 34, 34, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(34, 34, 34, 0.5));\n margin-top: 4px;\n}\n.ag-theme-blue .ag-select-agg-func-popup {\n border: solid 1px;\n border-color: #9bc2e6;\n border-color: var(--ag-border-color, #9bc2e6);\n background: #fff;\n background: var(--ag-background-color, #fff);\n border-radius: 0px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n background: #fff;\n background: var(--ag-background-color, #fff);\n height: 70px;\n padding: 0;\n}\n.ag-theme-blue .ag-select-agg-func-virtual-list-item {\n cursor: default;\n padding-left: 8px;\n}\n.ag-theme-blue .ag-select-agg-func-virtual-list-item:hover {\n background-color: #c8c8c8;\n background-color: var(--ag-selected-row-background-color, #c8c8c8);\n}\n.ag-theme-blue .ag-keyboard-focus .ag-select-agg-func-virtual-list-item:focus {\n outline: none;\n}\n.ag-theme-blue .ag-keyboard-focus .ag-select-agg-func-virtual-list-item:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 1px;\n left: 1px;\n display: block;\n width: calc(100% - 2px);\n height: calc(100% - 2px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-blue .ag-chart-menu {\n border-radius: 0px;\n background: #fff;\n background: var(--ag-background-color, #fff);\n}\n.ag-theme-blue .ag-chart-menu-icon {\n opacity: 0.5;\n line-height: 24px;\n font-size: 24px;\n width: 24px;\n height: 24px;\n margin: 2px 0;\n cursor: pointer;\n border-radius: 0px;\n color: #222;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #222));\n}\n.ag-theme-blue .ag-chart-menu-icon:hover {\n opacity: 1;\n}\n.ag-theme-blue .ag-chart-mini-thumbnail {\n border: 1px solid;\n border-color: #9bc2e6;\n border-color: var(--ag-secondary-border-color, var(--ag-border-color, #9bc2e6));\n border-radius: 5px;\n margin: 5px;\n}\n.ag-theme-blue .ag-chart-mini-thumbnail:nth-last-child(3), .ag-theme-blue .ag-chart-mini-thumbnail:nth-last-child(3) ~ .ag-chart-mini-thumbnail {\n margin-left: auto;\n margin-right: auto;\n}\n.ag-theme-blue .ag-ltr .ag-chart-mini-thumbnail:first-child {\n margin-left: 0;\n}\n\n.ag-theme-blue .ag-rtl .ag-chart-mini-thumbnail:first-child {\n margin-right: 0;\n}\n\n.ag-theme-blue .ag-ltr .ag-chart-mini-thumbnail:last-child {\n margin-right: 0;\n}\n\n.ag-theme-blue .ag-rtl .ag-chart-mini-thumbnail:last-child {\n margin-left: 0;\n}\n\n.ag-theme-blue .ag-chart-mini-thumbnail.ag-selected {\n border-color: #222;\n border-color: var(--ag-minichart-selected-chart-color, var(--ag-checkbox-checked-color, var(--ag-foreground-color, #222)));\n}\n.ag-theme-blue .ag-chart-settings-card-item {\n background: #222;\n background: var(--ag-foreground-color, #222);\n width: 8px;\n height: 8px;\n border-radius: 4px;\n}\n.ag-theme-blue .ag-chart-settings-card-item.ag-selected {\n background-color: #222;\n background-color: var(--ag-minichart-selected-page-color, var(--ag-checkbox-checked-color, var(--ag-foreground-color, #222)));\n}\n.ag-theme-blue .ag-chart-data-column-drag-handle {\n margin-left: 4px;\n}\n.ag-theme-blue .ag-charts-settings-group-title-bar,\n.ag-theme-blue .ag-charts-data-group-title-bar,\n.ag-theme-blue .ag-charts-format-top-level-group-title-bar {\n border-top: solid 1px;\n border-top-color: #9bc2e6;\n border-top-color: var(--ag-secondary-border-color, var(--ag-border-color, #9bc2e6));\n}\n.ag-theme-blue .ag-charts-settings-group-container {\n padding: 4px;\n}\n.ag-theme-blue .ag-charts-data-group-container {\n padding: 3px 6px;\n}\n.ag-theme-blue .ag-charts-data-group-container .ag-charts-data-group-item:not(.ag-charts-format-sub-level-group) {\n height: 20px;\n}\n.ag-theme-blue .ag-charts-data-group-container .ag-list-item-hovered::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n height: 1px;\n background-color: #222;\n background-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #222));\n}\n.ag-theme-blue .ag-charts-data-group-container .ag-item-highlight-top::after {\n top: 0;\n}\n.ag-theme-blue .ag-charts-data-group-container .ag-item-highlight-bottom::after {\n bottom: 0;\n}\n.ag-theme-blue .ag-charts-format-top-level-group-container {\n margin-left: 8px;\n padding: 4px;\n}\n.ag-theme-blue .ag-charts-format-top-level-group-item {\n margin: 4px 0;\n}\n.ag-theme-blue .ag-charts-format-sub-level-group-container {\n padding: 6px 6px;\n padding-bottom: 2px;\n}\n.ag-theme-blue .ag-charts-format-sub-level-group-container > * {\n margin-bottom: 4px;\n}\n.ag-theme-blue .ag-charts-group-container.ag-group-container-horizontal {\n padding: 4px;\n}\n.ag-theme-blue .ag-chart-data-section,\n.ag-theme-blue .ag-chart-format-section {\n display: -webkit-box;\n display: flex;\n margin: 0;\n}\n.ag-theme-blue .ag-chart-menu-panel {\n background-color: #f6f6f6;\n background-color: var(--ag-control-panel-background-color, #f6f6f6);\n}\n.ag-theme-blue .ag-ltr .ag-chart-menu-panel {\n border-left: solid 1px;\n border-left-color: #9bc2e6;\n border-left-color: var(--ag-border-color, #9bc2e6);\n}\n\n.ag-theme-blue .ag-rtl .ag-chart-menu-panel {\n border-right: solid 1px;\n border-right-color: #9bc2e6;\n border-right-color: var(--ag-border-color, #9bc2e6);\n}\n\n.ag-theme-blue .ag-date-time-list-page-title {\n -webkit-box-flex: 1;\n flex-grow: 1;\n text-align: center;\n}\n.ag-theme-blue .ag-date-time-list-page-column-label {\n text-align: center;\n}\n.ag-theme-blue .ag-date-time-list-page-entry {\n text-align: center;\n}\n.ag-theme-blue .ag-checkbox-input-wrapper {\n font-family: \"agGridClassic\";\n font-size: 12px;\n line-height: 12px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 12px;\n height: 12px;\n background-color: var(--ag-checkbox-background-color);\n border-radius: 0px;\n display: inline-block;\n vertical-align: middle;\n -webkit-box-flex: 0;\n flex: none;\n}\n.ag-theme-blue .ag-checkbox-input-wrapper input, .ag-theme-blue .ag-checkbox-input-wrapper input {\n -webkit-appearance: none;\n opacity: 0;\n width: 100%;\n height: 100%;\n}\n.ag-theme-blue .ag-checkbox-input-wrapper:focus-within, .ag-theme-blue .ag-checkbox-input-wrapper:active {\n outline: none;\n}\n.ag-theme-blue .ag-checkbox-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-blue .ag-checkbox-input-wrapper::after {\n content: \"\\f108\";\n color: #222;\n color: var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #222));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-blue .ag-checkbox-input-wrapper.ag-checked::after {\n content: \"\\f106\";\n color: #222;\n color: var(--ag-checkbox-checked-color, var(--ag-foreground-color, #222));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-blue .ag-checkbox-input-wrapper.ag-indeterminate::after {\n content: \"\\f107\";\n color: #222;\n color: var(--ag-checkbox-indeterminate-color, var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #222)));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-blue .ag-toggle-button-input-wrapper {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n width: 24px;\n height: 12px;\n background-color: #222;\n background-color: var(--ag-toggle-button-off-background-color, var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #222)));\n border-radius: 6px;\n position: relative;\n -webkit-box-flex: 0;\n flex: none;\n border: 1px solid;\n border-color: #222;\n border-color: var(--ag-toggle-button-off-border-color, var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #222)));\n}\n.ag-theme-blue .ag-toggle-button-input-wrapper input {\n opacity: 0;\n height: 100%;\n width: 100%;\n}\n.ag-theme-blue .ag-toggle-button-input-wrapper:focus-within {\n outline: none;\n}\n.ag-theme-blue .ag-toggle-button-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-blue .ag-toggle-button-input-wrapper.ag-checked {\n background-color: #222;\n background-color: var(--ag-toggle-button-on-background-color, var(--ag-checkbox-checked-color, var(--ag-foreground-color, #222)));\n border-color: #222;\n border-color: var(--ag-toggle-button-on-border-color, var(--ag-checkbox-checked-color, var(--ag-foreground-color, #222)));\n}\n.ag-theme-blue .ag-toggle-button-input-wrapper::before {\n content: \" \";\n position: absolute;\n top: -1px;\n left: -1px;\n display: block;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n height: 12px;\n width: 12px;\n background-color: #fff;\n background-color: var(--ag-toggle-button-switch-background-color, var(--ag-background-color, #fff));\n border-radius: 6px;\n -webkit-transition: left 100ms;\n transition: left 100ms;\n border: 1px solid;\n border-color: #222;\n border-color: var(--ag-toggle-button-switch-border-color, var(--ag-toggle-button-off-border-color, var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #222))));\n}\n.ag-theme-blue .ag-toggle-button-input-wrapper.ag-checked::before {\n left: calc(100% - 12px );\n border-color: #222;\n border-color: var(--ag-toggle-button-on-border-color, var(--ag-checkbox-checked-color, var(--ag-foreground-color, #222)));\n}\n.ag-theme-blue .ag-radio-button-input-wrapper {\n font-family: \"agGridClassic\";\n font-size: 12px;\n line-height: 12px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 12px;\n height: 12px;\n background-color: var(--ag-checkbox-background-color);\n border-radius: 0px;\n display: inline-block;\n vertical-align: middle;\n -webkit-box-flex: 0;\n flex: none;\n border-radius: 12px;\n}\n.ag-theme-blue .ag-radio-button-input-wrapper input, .ag-theme-blue .ag-radio-button-input-wrapper input {\n -webkit-appearance: none;\n opacity: 0;\n width: 100%;\n height: 100%;\n}\n.ag-theme-blue .ag-radio-button-input-wrapper:focus-within, .ag-theme-blue .ag-radio-button-input-wrapper:active {\n outline: none;\n}\n.ag-theme-blue .ag-radio-button-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-blue .ag-radio-button-input-wrapper::after {\n content: \"\\f126\";\n color: #222;\n color: var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #222));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-blue .ag-radio-button-input-wrapper.ag-checked::after {\n content: \"\\f127\";\n color: #222;\n color: var(--ag-checkbox-checked-color, var(--ag-foreground-color, #222));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-blue input[class^=ag-][type=range] {\n -webkit-appearance: none;\n width: 100%;\n height: 100%;\n background: none;\n overflow: visible;\n}\n.ag-theme-blue input[class^=ag-][type=range]::-webkit-slider-runnable-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: #9bc2e6;\n background-color: var(--ag-border-color, #9bc2e6);\n border-radius: 0px;\n border-radius: 0px;\n}\n.ag-theme-blue input[class^=ag-][type=range]::-moz-range-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: #9bc2e6;\n background-color: var(--ag-border-color, #9bc2e6);\n border-radius: 0px;\n border-radius: 0px;\n}\n.ag-theme-blue input[class^=ag-][type=range]::-ms-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: #9bc2e6;\n background-color: var(--ag-border-color, #9bc2e6);\n border-radius: 0px;\n border-radius: 0px;\n color: transparent;\n width: calc(100% - 2px);\n}\n.ag-theme-blue input[class^=ag-][type=range]::-webkit-slider-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: 12px;\n height: 12px;\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n border: 1px solid;\n border-color: #222;\n border-color: var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #222));\n border-radius: 12px;\n -webkit-transform: translateY(-4.5px);\n transform: translateY(-4.5px);\n}\n.ag-theme-blue input[class^=ag-][type=range]::-ms-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: 12px;\n height: 12px;\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n border: 1px solid;\n border-color: #222;\n border-color: var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #222));\n border-radius: 12px;\n}\n.ag-theme-blue input[class^=ag-][type=range]::-moz-ag-range-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: 12px;\n height: 12px;\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n border: 1px solid;\n border-color: #222;\n border-color: var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #222));\n border-radius: 12px;\n}\n.ag-theme-blue input[class^=ag-][type=range]:focus {\n outline: none;\n}\n.ag-theme-blue input[class^=ag-][type=range]:focus::-webkit-slider-thumb {\n border-color: #222;\n border-color: var(--ag-checkbox-checked-color, var(--ag-foreground-color, #222));\n}\n.ag-theme-blue input[class^=ag-][type=range]:focus::-ms-thumb {\n border-color: #222;\n border-color: var(--ag-checkbox-checked-color, var(--ag-foreground-color, #222));\n}\n.ag-theme-blue input[class^=ag-][type=range]:focus::-moz-ag-range-thumb {\n border-color: #222;\n border-color: var(--ag-checkbox-checked-color, var(--ag-foreground-color, #222));\n}\n.ag-theme-blue input[class^=ag-][type=range]:active::-webkit-slider-runnable-track {\n background-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-blue input[class^=ag-][type=range]:active::-moz-ag-range-track {\n background-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-blue input[class^=ag-][type=range]:active::-ms-track {\n background-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-blue input[class^=ag-][type=range]:disabled {\n opacity: 0.5;\n}\n.ag-theme-blue .ag-icon {\n color: #333;\n margin: 1px 1px 2px 1px;\n}\n.ag-theme-blue .ag-icon-tree-closed::before {\n content: \"\\f10b\";\n}\n.ag-theme-blue .ag-icon-tree-open::before {\n content: \"\\f111\";\n}\n.ag-theme-blue .ag-header, .ag-theme-blue .ag-column-drop-cell {\n background-image: none;\n}\n.ag-theme-blue .ag-tab {\n border: 1px solid transparent;\n padding: 4px 8px;\n margin: 4px;\n margin-bottom: -1px;\n}\n.ag-theme-blue .ag-tabs-body {\n margin: 2px 0;\n}\n.ag-theme-blue .ag-tab-selected {\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n border-color: #9bc2e6;\n border-color: var(--ag-border-color, #9bc2e6);\n border-bottom-color: transparent;\n}\n.ag-theme-blue .ag-tabs-header {\n background-color: #5e9cd3;\n background-color: var(--ag-header-background-color, #5e9cd3);\n border-bottom: 1px solid;\n border-bottom-color: #9bc2e6;\n border-bottom-color: var(--ag-border-color, #9bc2e6);\n}\n.ag-theme-blue .ag-filter .ag-filter-apply-panel {\n -webkit-box-pack: start;\n justify-content: flex-start;\n}\n.ag-theme-blue .ag-menu-option-active {\n background-color: #c8c8c8;\n background-color: var(--ag-selected-row-background-color, #c8c8c8);\n}\n.ag-theme-blue .ag-column-drop-cell {\n border: 1px solid;\n border-color: #9bc2e6;\n border-color: var(--ag-border-color, #9bc2e6);\n border-radius: 0;\n}\n.ag-theme-blue .ag-column-drop-cell-button .ag-icon {\n border: 1px solid transparent;\n}\n.ag-theme-blue .ag-column-drop-cell-button:hover .ag-icon {\n border-color: #9bc2e6;\n border-color: var(--ag-border-color, #9bc2e6);\n}\n.ag-theme-blue .ag-panel-title-bar-button-icon {\n font-size: 20px;\n line-height: 20px;\n}\n.ag-theme-blue .ag-menu-option-part {\n padding-top: 4px;\n padding-bottom: 4px;\n}\n.ag-theme-blue .ag-column-drop-vertical-title-bar {\n margin-top: 4px;\n margin-left: 4px;\n}\n.ag-theme-blue .ag-column-drop-vertical-title {\n margin-left: 4px;\n}\n.ag-theme-blue .ag-column-drop-vertical-empty-message {\n margin-left: 24px;\n}\n", ""]);
58388// Exports
58389module.exports = exports;
58390
58391
58392/***/ }),
58393/* 289 */
58394/***/ (function(module, exports, __webpack_require__) {
58395
58396var api = __webpack_require__(276);
58397 var content = __webpack_require__(290);
58398
58399 content = content.__esModule ? content.default : content;
58400
58401 if (typeof content === 'string') {
58402 content = [[module.i, content, '']];
58403 }
58404
58405var options = {};
58406
58407options.insert = "head";
58408options.singleton = false;
58409
58410var update = api(content, options);
58411
58412
58413
58414module.exports = content.locals || {};
58415
58416/***/ }),
58417/* 290 */
58418/***/ (function(module, exports, __webpack_require__) {
58419
58420// Imports
58421var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58422exports = ___CSS_LOADER_API_IMPORT___(false);
58423// Module
58424exports.push([module.i, ".ag-theme-bootstrap {\n -webkit-font-smoothing: antialiased;\n color: #000;\n color: var(--ag-foreground-color, #000);\n font-family: \"Helvetica Neue\", sans-serif;\n font-size: 14px;\n line-height: normal;\n}\n@font-face {\n font-family: \"agGridClassic\";\n src: url(\"data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABXwAAsAAAAAKrgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAAmMAAAR2Zoxou09TLzIAAANsAAAAQQAAAFZWVlMSY21hcAAAA7AAAAIbAAAFnIlT7KJnbHlmAAAFzAAADBkAABg4HeN0mGhlYWQAABHoAAAANAAAADZ2z8SBaGhlYQAAEhwAAAAeAAAAJAfTBCxobXR4AAASPAAAABgAAAE4yyH/7GxvY2EAABJUAAAAdgAAAJ5JCULobWF4cAAAEswAAAAfAAAAIAFkAKpuYW1lAAAS7AAAATMAAAJS8kTiWnBvc3QAABQgAAABzQAAArBhTs2TeJx9lMtOU1EUhv/DaREoAlG8pCIiGi+oiMrxXHpoy6WH1tbEgTEOnGBMjAlxxHP4AD4BQ5/AB3DgE/gADhw6Nn5r9WCFAey03Xtd/vXvf62NAklTWlNTYzvF4KVm9vcOPqquioZ/5v9/H+x/eL+niaMTvor/TiioTGtGy3qtA30LZoKD4HBsPqyHr8J34efwS/hLIVFLWiW6pqesWAnfkVJlaijXmMaxxew34BOymmq59RyMqu7pqqfL1IzJ6Tniip7xmQOncJyOtolKWYbZ4XvAuqfZUyJy3Qc/g80m1gqKLKJJrnlNgp4Q01Sb/Cb+89TcoXaEv8BXwK6KpcW+rQtwsoyKq9rVGz3Bbzc1lKzMSfnE2vVz5Kc1NDmKaoHToJZhr8LgyN6gakLGY9AzorZKRVd0k+wGOB3Q2p694dnLRCZwS3WDnd0zges08Zle6K1X3S1zOq7pUIFV2I/shePlenjM2gZrQOwjOIys1p8H1IrUx1+jV4X29UmH+qrv+qGf+q0/OqOL1En8Dtug75yqzQQKnozu4m39s9pdx5mBk1HHIya5ecPVifH1Sg2tWo2bmTop+whr6vFT8LT4Lmxy+lGhRuR1rdNV1ibnmOiz5XQ2WdOudI8pmPUJ7vss1HWHvi064nAOc7S+CqLthvyuuG5N8Ba8b6auvbA5P9lbsH7XmdVr/EbcMHOdnuO9jsWQRpYlz8phbxjr+HNYj6oZqwVYresuPpuxvr+OLpVucZ8hk4QIexl9n6/bMMjKlzpPD419u+zYJY+LPSvgP0FUvvDUtbOZLuBm8zH4C3G+c6UAeJxjYGSazTiBgZWBgamKaQ8DA0MPhGZ8wGDIyAQUZWBlZsAKAtJcUxgOMOh+NGJ+AeRGMX9i4ALSjCA5AOaCCwgAAAB4nLXUB1IbQRCF4V+BLMA22eQcBQaTcxAiHwJnCgcKZ87hs/kefQL8Rt0+AK7yVn3bO1Or3ZlavQaqgJzMSB6ytWR0RSar2UxlPkd9ZT7Pb40L1JLVdZErbrizhft7zRa55Jpby1RGf4+M7i7QwxjLGh2yxAE7lFnlXDN7rLPPLkdsssEJK2yzxjFnbFHilAv9Pq0irzVWU6P31mklDXpiI0084jEttNJGOx100kW33tRLH/0MMMgQw4wwyjgTTDLFtHZSZJY5njHPgs7PNVrUIqt52HH4wPvTsXSwU149X97TjnePNje02e2147Ot0unFPzzsPxyFdMr9itEZ6Yu6tNvLsCQvwoG8DDvyKpTldViVN+Fc3ob0b3gX9uQqrMt12Jf3YVc+hCP5GDblU9iQm3Ait2FFPodt+RLW5Gs4lm8h7f172JIfoSQ/w6ncBX1Ay7iUF8s6Us25lC/Lu5Qxq3Ipe1btSLXGkWqtI9U6R6r1LmXSGhypFlz6ktboSLXJkWqzU3awoBRhQXnCnjglC2txyhjW6pQ2rM0pd1i7UwKxDqcsYp1OqcS6nPKJPXVKKtbtlFmsxym9WK9TjrE+p0Rj/U7ZxgacUo4NOuUdG3JKPjbs1AOwEadugI069QVszKlDYONOvQKbcKkv2qRLebApp96BTTv1FGzGqa9gRac+g806dRxszlXuCepC2LyrPHPBsfgHpKymyQB4nO1Ye2wUxxnfmfXt3t57d+92zxycvXf4FkNico+99QMMGOOzcWzTnIMJaQ04GMWYRDEESJqktAElJErSShFVqUmAqj0XmlQFI+XRBxKpGleRGqePNKnyKn+0Sdq4pHXS6uRb+s3eww8ooPSfVu3Zu/P6Zuabb34z3+9bClHwo5P0IMVRFFJkVvEpIq3QSWN4717Un7v/9dfxAfzT8fERtBftBRFT/n36faoSChqr6jKr8oqZ6ApvJjKvmAmroHNdqbGxlnWIXgdpap2RW9cCaZdhkPpUF8J0JdcFVS1dlzblu1LFOdfTj1FWKLAqBw8fRt9+th/1ob7+Z47jXc9uRX3G01ufyX1YlMcTeIKym/KgC2gD+uCJljOjqTNnUqNnWkbRqmJutOUMZaGoiwas6wNKpMKUSi2hllKURQnVII1PNKK4EgsiH+91IVoJMZCRoCYJTREU58NVcV+YhpTenhOV+lCoXsEfwUupV3Iej9/vwRd4Wc59N51GHen0SHc3DtWF8Mfwgv+cG17012U+x/N+P4//wsvGqPF2JoOOGZth2bP0WgzrKSoSnlbOMkcnFsF6RZnebioRKik1MUOdAWPi74kT59fSHxSVKCp180xdXjRsP1t1EB1dRM3VRb02XWhFU66oyO+N06jzKloYzgzZ0lnzX9vsV5r5KpOS9cKi76G3AjqslJ+iAHgyh2i9AjEs/Pm8EsySUCMq/pOxqf42I4cax8Ze/oHdXu6WomuikrscnUPHG6DBeAktHxtrdDqDgUh5KBoNlVfND5LhGXOOQ/QhmI0FvLphbTJFVfnAbPDQc1J03DhNNxmnM7OS7Aj8UEcGfqiT5KmC7h8UbLX02qyFAMe+sBbW4lqcHgwRi4Hl8hYkljMtQyxnvDJi/vIWFAoWnChYUAQJHn8E23aGqDRCUUV9mugmc5U86BPnFS0MN4XCK7Sm8HEND2cMRwZNpo1R1DFijKbxsFnOQvk4VGap0l3wAP0AOdscgu1gOQQ3go4mkbDHmDBfxsQeJMALb59VRAIU8za/OEXfSf+Z8oB1FlCt1Jepp2DoCOykZYZF6LCGQEFGlhqQWOV14XCopkxLNOI4saWXCUXUGhSGDt4giiX1RhSTZGLgEFRriWQsSMcJPmqQWoOJuWNBXOiU71OBJDmI4WZK6tFGsj9enxu5MGzPUhq6S/Qd7La7LEanqusqTqp6y6jRhB7BiLZ4foeNTZwQ9Hpkr8dmcfoVUV4o2pzWMqvXLc93yJUSg60u2ykhJC3gnR7OZWWtbgcv2QWPN8ALFZLg5602J1tmcQcFxm4RBLtTsC1bshjT2Gq3WrCGWZvbweA4jWyCFf/RuudBC65Vp141lXlkfOpR+p7flHN87mu/dVQERasQqKzyhbSId74qcG6b0+dNxCqXSH6/ze1yl1dLbnuVYHfZy3mHLLh4K8OKSk2V6PT5fR6b3S2ITs7O0SxrYcUFT/zwR5ydsbFOm4X7Nee2ci7uF27O5hGo/+/df/XeFf34QdOP83FgC+TgfufYM/3G08bT/ehe7MpNQuEo2tIPomVz9rrtqvusQ2skkYzHpAq0ApNtk3xeN5Jhe1woFFmKWAKEiJa48vZcf0s7x1q8bl70LFtpczFOq1v0dXY7bJzgFco29JRxPNRcybBj9w66nHbJI/o3bnQLFovHwS+44163T3BxHLPvi4yV4d2mTf4X1vjZeAPxelfy3k8YjquxhtFMZtr3vEzrVDkVpZbB/LqcjEuyJLvAoQM7RMkVSAuHwKerYg1WGTaIZEmXGWJp+EuCgGl1FeSRkoisaHr4vqEN1Xc0aqsqXcYva9pVW+OS2uv3/SH5+WW25kT0sc7052Jf2LhlfWPd0tjG3eiNdS0uQQoq9obraNeiG4Sym9r3L7890hxfZEf7bBilLYwrYLzN1G7QYq3Nt0l++8r5Ni5R1Rhb+9CNxuForyjLFfPi3YHptcjgQxdRSVgLWYdJRwq6JiFP6iS9qDS5ldSqyHIUJnIyiOhoiqyga8/9D371fqLkLbu+cldzYmVv3+13bV6/1lTW0XL73oGUDa1Ftq5kKlm1KBlZRvvodPuDezq6HI61keWx9gPtN5+MtW7QaxlGj20VZamyvPbWRLK3nnbOX4ys9nntXiuLqTx3M3nODuBSEGmICuJVLeqLa2mTx2ToQWC9m0ay3d0FWTwF/J02oxI+zAOhVVkZrUhjz0sv1WazeMJwoEmj+dw5KBBxR4FfnJ3FowJUxTSb14HdFB90lbwCHGgkk8ma/8BC/lUOHctkxjMm8Tp2aQIqWQrrPgtnW6GqqGrqesJ9TDIHXKtA60oPH9YUFPZBLJF/quBBx4HVgY2A4ZGUsCMz3dyNOgvTmerQg2kwXyadhSSbxqlsTkij493AndLp/xg95uxtVZiPIxKdsXgqnc5dMDc3O2Nn8z7jGL3e9BkykD0SoqJtJ/Je4iSuR8dO5OPAk4Ro4oufXvyU/hv9VypBDeZPB+MmdB08txrR4aCDc5bztS4UxFDRiIhb16IRkoUmcv+yZjORk+MS6aQm1CgRM+WDuNgM5AEa9aQawV+q83oX1R6o62y/sWOnF351rbZyAWEelzHlAa+gtbUF9s8XxADnx+XVVskmCUis67ixvbPuQO0iEBd8yCZZF/ux084FRDGwP9DWpgneQDlTBoMgodzWWkfGhZk62w/DTKSw0xyglfO4tJhVYOYFWtuSXjFwINDaGuB4T8hfbcWMh8xkqnSg9jCIC24WW6v9IQ/H2ojggYDoTba1BuYxgjWmuTxcq7mKmef2EJymCvPmZOF4wKUJcQLcnHBMYPMgWojrmhpmfTh1eM/hN96AV6aU+cajfX2P9uEfz6okmdzzfaTJ9IEzY9zoNUberBnUIx3ucFm/cuz90bup6HDtEfR26r3oU7VPXSUAzzWm3rnhCIg/8F4qCmnJh0zHaWaEhgoPfWjqJ3RT/snmIzEShxX9+2dZm25+toAlkovvymu7753UDUf0YZRIvUuUvtrasoW1PQkmOaIfKX0veRzOpIXsMDmN6FbzJKJY8YLNn8MA/SvKOf0NxuRvMhoe6EcqUvsHBvqNN403+wfwqe1QA7ntxkPboQ7athd4wEWwxYeUl1pIxQkPICfMQ5xXJXFVHvBMSQs5s/EYyZLYeik5jqZvBt5NTufkwbuHmtasaRq62/h491BTc3PT0G40nnsuuaopNbRlk14ny4vbtFWrodBbW+eXF9MfgvBu48LunUR4527kgW5rPsk9t1iW6/TevqFU08pkW76wZai1aVWyhPsmehB2252PViFEjcvkpoSoldxq27KZkbRxOo0maX+uHw+nR8j992/2RaU4GUoozMthVg3r5DrGE72nsul09lQvmgT3NzaQzQ6g2nTex5QwpgArqKVWXB5lhOSYMGsAn6pZIPIm7DL/Dc881OR0i8QBkC8nczCXu3Mfwdy+EXpl7kUc5OV/OBuGhhocZx1msmM8dx63yJegD1/I5OGHU3DBv+Dn0TLHjH5OnMp8iZfnYND09vjxORjEM/BTDVImKDwEQpUELR4CIdaElJe0hEyiTFrQ5MMlpLiL6DlogqVO37TlPAAFfr1bLo+Umwkuzvf1EuHePhDW62ZjudrkYZfDsmyqSGArmYAm34oiIuHpNShhho2XhfPDQ0WNzhd1fGT1roO7Vpuva9bS2Nxc6LJ613T8dbTgS1Wdg0fR8P7v9aMtxtH+E7mf49TJfCh2YqSE40HAsZOSCA8DWlC6oyyFT71xAPDz6WgIt4aixuiO+vHx+h3d4MDfQguNt8iXLrRw/o6G8fGGHejJaXzjYTI6sMAR/E1jFA8bp0v30DBgH5NvOzzhF2gSdeS2zW3DeepBrwLSODpnTA4RgtKRlyi0ZegUwRUHATuiM7nXjFf2nEUv4NdyryFtN+Sm9WolO0uOACiW2wbgJNUlThGmUlQP3P2Sdy6nqECkrsAokjGZlmIlpsB4obXAE0gP1qyTEcEDioTyBSmGb2LZnhn0oYcV2U6G2QBcgDjnHtbLhuDpIS4e6MEGhukEiZ4ZNKCHZbH/Opdr6luuiAtSutcVefVSmY7Zo6Dvz56k41I1pj65DkaE4WBU1QnD/xPnjHQ0AAAAeJxjYGRgYADiY81JvPH8Nl8ZuJlfAAWiOB/va4DR/7/9/8b8mfkTUCUHAxOQZAAAhKEPOXicY2BkYGB+wcAAIv9/+/+V+TMDIwMq8AMAnl4HBgAAeJxjYGBgYH5Bb/z/Gy3NZqADAAB/FDOneJxjYAACCYYghiyGFoYLjGKMYYx9jAcY3zCZMEUwVTFHsJix+LEcYDViLWK9wWbC5sWWwraB7Qu7BXsAewaHAIcTxxSODZxMnCKcZpw9nKs4T3A+4nLhCuOaw/WNm4/bgtuNO4Q7ibuAu4V7Eo8M6RAAslkbZAAAeJxjYGRgYPBjmMfAwwACTEDMBYQMDP/BfAYAIQYCDwB4nH2QvU7DMBSFT/qHaAWqBGJgMgsLUvqz0bVSs3foniZ2miqNg+NW6s5z8AQ8R5+Dp2DmxHgpErUl57vfPfcOATDECQGaE+DGvc1p4YrVL7dJ95475CfPXQwQeu7Rv3ru4wULzwPc4Y0bgs41zSPePbdwiw/PbfpPzx3yyXMXD/jy3KP/9tzHKhh6HuA5UHEWmTydF3Fd58lSZvsiNmfurFhJU+e6FJNwfOYjWUoTW5mK9VHUh2xqrRLK6J1Y6NLKotCiMnorExturK1mo5HyPkz0DjEyRDDIkWKOgnXNmyPBEpK9vXPmQu7/zoobjGONEgIT/vfxhXzEfOlmYlh+U86sceRb48CpKa2FYq2Y0diRFm53ky54NU3leluahD7Exk1VmGHEq/7kQ6a46QfFq20TAHicbZIHb9swEIX9xZKt2GmTpm269x5q6+6990h/A0PRMhGZFEjKdvLry9pBgQA9gIf3Dod37w5sLbUW0Wv9PzZZok1CSocuGcv06LPCAQ6yyhqHWOcwRzjKBsc4zglOcorTnOEs5zjPBS5yictc4SrXuM4NbnKL2+Tc4S73GHCfBzzkEY95wlOe8ZwXvOQVr3nDW97xng985BOf+cJXvvGdH/zkF5v8bvVFWTpViqCt6Qjn7NS3hZcdKYxUVSpHwoU1OVJye8vO8jlQxca/gjaFCsqNtRFBrf8rN2avc0Xayrq81pG4biTN2PietCY4IYMqEmnrnVQ6631b+kkaXz5ICuVlqmbRQHee80GmZrWIs4pltaNyXwk/akfUGeoqjk+H2vmQlE7XaelsU3fnOSrFxpBUahg6lTbRT7eyotCmzMZipsd6VyVjZZos+l8wo2YhMdaovrEhF1Vlp6pI66iiuvOcD9q1NmmtJzZktVMTbRu/5qKozbeaEKzJ7XC4ur9gUqfLUUi8mKieH0fZvLBTswf/2usv4LwtW+CmTkI823pwSu2/c9aYxTYIShyKgMZimOKRVIzYZotZ/CMFYxpqdpgwZLfV+gPpZLiDAAAA\") format(\"woff\");\n font-weight: normal;\n font-style: normal;\n}\n.ag-theme-bootstrap .ag-icon {\n font-family: \"agGridClassic\";\n font-size: 12px;\n line-height: 12px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.ag-theme-bootstrap .ag-icon-aggregation::before {\n content: \"\\f101\";\n}\n.ag-theme-bootstrap .ag-icon-arrows::before {\n content: \"\\f102\";\n}\n.ag-theme-bootstrap .ag-icon-asc::before {\n content: \"\\f103\";\n}\n.ag-theme-bootstrap .ag-icon-cancel::before {\n content: \"\\f104\";\n}\n.ag-theme-bootstrap .ag-icon-chart::before {\n content: \"\\f105\";\n}\n.ag-theme-bootstrap .ag-icon-color-picker::before {\n content: \"\\f109\";\n}\n.ag-theme-bootstrap .ag-icon-columns::before {\n content: \"\\f10a\";\n}\n.ag-theme-bootstrap .ag-icon-contracted::before {\n content: \"\\f10b\";\n}\n.ag-theme-bootstrap .ag-icon-copy::before {\n content: \"\\f10c\";\n}\n.ag-theme-bootstrap .ag-icon-cross::before {\n content: \"\\f10d\";\n}\n.ag-theme-bootstrap .ag-icon-csv::before {\n content: \"\\f10e\";\n}\n.ag-theme-bootstrap .ag-icon-desc::before {\n content: \"\\f10f\";\n}\n.ag-theme-bootstrap .ag-icon-excel::before {\n content: \"\\f110\";\n}\n.ag-theme-bootstrap .ag-icon-expanded::before {\n content: \"\\f111\";\n}\n.ag-theme-bootstrap .ag-icon-eye-slash::before {\n content: \"\\f112\";\n}\n.ag-theme-bootstrap .ag-icon-eye::before {\n content: \"\\f113\";\n}\n.ag-theme-bootstrap .ag-icon-filter::before {\n content: \"\\f114\";\n}\n.ag-theme-bootstrap .ag-icon-first::before {\n content: \"\\f115\";\n}\n.ag-theme-bootstrap .ag-icon-grip::before {\n content: \"\\f116\";\n}\n.ag-theme-bootstrap .ag-icon-group::before {\n content: \"\\f117\";\n}\n.ag-theme-bootstrap .ag-icon-last::before {\n content: \"\\f118\";\n}\n.ag-theme-bootstrap .ag-icon-left::before {\n content: \"\\f119\";\n}\n.ag-theme-bootstrap .ag-icon-linked::before {\n content: \"\\f11a\";\n}\n.ag-theme-bootstrap .ag-icon-loading::before {\n content: \"\\f11b\";\n}\n.ag-theme-bootstrap .ag-icon-maximize::before {\n content: \"\\f11c\";\n}\n.ag-theme-bootstrap .ag-icon-menu::before {\n content: \"\\f11d\";\n}\n.ag-theme-bootstrap .ag-icon-minimize::before {\n content: \"\\f11e\";\n}\n.ag-theme-bootstrap .ag-icon-next::before {\n content: \"\\f11f\";\n}\n.ag-theme-bootstrap .ag-icon-none::before {\n content: \"\\f120\";\n}\n.ag-theme-bootstrap .ag-icon-not-allowed::before {\n content: \"\\f121\";\n}\n.ag-theme-bootstrap .ag-icon-paste::before {\n content: \"\\f122\";\n}\n.ag-theme-bootstrap .ag-icon-pin::before {\n content: \"\\f123\";\n}\n.ag-theme-bootstrap .ag-icon-pivot::before {\n content: \"\\f124\";\n}\n.ag-theme-bootstrap .ag-icon-previous::before {\n content: \"\\f125\";\n}\n.ag-theme-bootstrap .ag-icon-right::before {\n content: \"\\f128\";\n}\n.ag-theme-bootstrap .ag-icon-save::before {\n content: \"\\f129\";\n}\n.ag-theme-bootstrap .ag-icon-small-down::before {\n content: \"\\f12a\";\n}\n.ag-theme-bootstrap .ag-icon-small-left::before {\n content: \"\\f12b\";\n}\n.ag-theme-bootstrap .ag-icon-small-right::before {\n content: \"\\f12c\";\n}\n.ag-theme-bootstrap .ag-icon-small-up::before {\n content: \"\\f12d\";\n}\n.ag-theme-bootstrap .ag-icon-tick::before {\n content: \"\\f12e\";\n}\n.ag-theme-bootstrap .ag-icon-tree-closed::before {\n content: \"\\f12f\";\n}\n.ag-theme-bootstrap .ag-icon-tree-indeterminate::before {\n content: \"\\f130\";\n}\n.ag-theme-bootstrap .ag-icon-tree-open::before {\n content: \"\\f131\";\n}\n.ag-theme-bootstrap .ag-icon-unlinked::before {\n content: \"\\f132\";\n}\n.ag-theme-bootstrap .ag-icon-row-drag::before {\n content: \"\\f116\";\n}\n.ag-theme-bootstrap .ag-left-arrow::before {\n content: \"\\f119\";\n}\n.ag-theme-bootstrap .ag-right-arrow::before {\n content: \"\\f128\";\n}\n.ag-theme-bootstrap .ag-root-wrapper {\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n}\n.ag-theme-bootstrap [class^=ag-], .ag-theme-bootstrap [class^=ag-]:focus, .ag-theme-bootstrap [class^=ag-]:after, .ag-theme-bootstrap [class^=ag-]:before {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n outline: none;\n}\n.ag-theme-bootstrap [class^=ag-]::-ms-clear {\n display: none;\n}\n.ag-theme-bootstrap .ag-checkbox .ag-input-wrapper,\n.ag-theme-bootstrap .ag-radio-button .ag-input-wrapper {\n overflow: visible;\n}\n.ag-theme-bootstrap .ag-range-field .ag-input-wrapper {\n height: 100%;\n}\n.ag-theme-bootstrap .ag-toggle-button {\n -webkit-box-flex: 0;\n flex: none;\n width: unset;\n min-width: unset;\n}\n.ag-theme-bootstrap .ag-ltr .ag-label-align-right .ag-label {\n margin-left: 4px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-label-align-right .ag-label {\n margin-right: 4px;\n}\n\n.ag-theme-bootstrap input[class^=ag-] {\n margin: 0;\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n}\n.ag-theme-bootstrap textarea[class^=ag-],\n.ag-theme-bootstrap select[class^=ag-] {\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n}\n.ag-theme-bootstrap input[class^=ag-]:not([type]),\n.ag-theme-bootstrap input[class^=ag-][type=text],\n.ag-theme-bootstrap input[class^=ag-][type=number],\n.ag-theme-bootstrap input[class^=ag-][type=tel],\n.ag-theme-bootstrap input[class^=ag-][type=date],\n.ag-theme-bootstrap input[class^=ag-][type=datetime-local],\n.ag-theme-bootstrap textarea[class^=ag-] {\n font-size: inherit;\n line-height: inherit;\n color: inherit;\n border-width: 1px;\n border-style: solid;\n border-color: #000;\n border-color: var(--ag-input-border-color, #000);\n}\n.ag-theme-bootstrap input[class^=ag-]:not([type]):disabled,\n.ag-theme-bootstrap input[class^=ag-][type=text]:disabled,\n.ag-theme-bootstrap input[class^=ag-][type=number]:disabled,\n.ag-theme-bootstrap input[class^=ag-][type=tel]:disabled,\n.ag-theme-bootstrap input[class^=ag-][type=date]:disabled,\n.ag-theme-bootstrap input[class^=ag-][type=datetime-local]:disabled,\n.ag-theme-bootstrap textarea[class^=ag-]:disabled {\n color: rgba(0, 0, 0, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.5));\n background-color: #ebebeb;\n background-color: var(--ag-input-disabled-background-color, #ebebeb);\n border-color: rgba(0, 0, 0, 0.3);\n border-color: var(--ag-input-disabled-border-color, rgba(0, 0, 0, 0.3));\n}\n.ag-theme-bootstrap input[class^=ag-]:not([type]):focus,\n.ag-theme-bootstrap input[class^=ag-][type=text]:focus,\n.ag-theme-bootstrap input[class^=ag-][type=number]:focus,\n.ag-theme-bootstrap input[class^=ag-][type=tel]:focus,\n.ag-theme-bootstrap input[class^=ag-][type=date]:focus,\n.ag-theme-bootstrap input[class^=ag-][type=datetime-local]:focus,\n.ag-theme-bootstrap textarea[class^=ag-]:focus {\n outline: none;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-bootstrap input[class^=ag-]:not([type]):invalid,\n.ag-theme-bootstrap input[class^=ag-][type=text]:invalid,\n.ag-theme-bootstrap input[class^=ag-][type=number]:invalid,\n.ag-theme-bootstrap input[class^=ag-][type=tel]:invalid,\n.ag-theme-bootstrap input[class^=ag-][type=date]:invalid,\n.ag-theme-bootstrap input[class^=ag-][type=datetime-local]:invalid,\n.ag-theme-bootstrap textarea[class^=ag-]:invalid {\n border-width: 2px;\n border-style: solid;\n border-color: var(--ag-input-border-color-invalid);\n}\n.ag-theme-bootstrap input[class^=ag-][type=number] {\n -moz-appearance: textfield;\n}\n.ag-theme-bootstrap input[class^=ag-][type=number]::-webkit-outer-spin-button, .ag-theme-bootstrap input[class^=ag-][type=number]::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n.ag-theme-bootstrap input[class^=ag-][type=range] {\n padding: 0;\n}\n.ag-theme-bootstrap .ag-drag-handle {\n color: #000;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-bootstrap .ag-list-item, .ag-theme-bootstrap .ag-virtual-list-item {\n height: 20px;\n}\n.ag-theme-bootstrap .ag-keyboard-focus .ag-virtual-list-item:focus {\n outline: none;\n}\n.ag-theme-bootstrap .ag-keyboard-focus .ag-virtual-list-item:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-bootstrap .ag-select-list {\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n overflow-y: auto;\n overflow-x: hidden;\n}\n.ag-theme-bootstrap .ag-list-item {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ag-theme-bootstrap .ag-list-item.ag-active-item {\n background-color: var(--ag-row-hover-color);\n}\n.ag-theme-bootstrap .ag-select-list-item {\n padding-left: 4px;\n padding-right: 4px;\n cursor: default;\n -moz-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n}\n.ag-theme-bootstrap .ag-select-list-item span {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n.ag-theme-bootstrap .ag-select .ag-picker-field-wrapper {\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n min-height: 20px;\n cursor: default;\n}\n.ag-theme-bootstrap .ag-select.ag-disabled .ag-picker-field-wrapper:focus {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.ag-theme-bootstrap .ag-select:not(.ag-cell-editor) {\n height: 20px;\n}\n.ag-theme-bootstrap .ag-select .ag-picker-field-display {\n margin: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ag-theme-bootstrap .ag-select .ag-picker-field-icon {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-bootstrap .ag-select.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-bootstrap .ag-rich-select {\n background-color: #f6f6f6;\n background-color: var(--ag-control-panel-background-color, #f6f6f6);\n}\n.ag-theme-bootstrap .ag-rich-select-list {\n width: 100%;\n min-width: 200px;\n height: 162.5px;\n}\n.ag-theme-bootstrap .ag-rich-select-value {\n padding: 0 4px 0 12px;\n height: 25px;\n}\n.ag-theme-bootstrap .ag-rich-select-virtual-list-item {\n cursor: default;\n height: 20px;\n}\n.ag-theme-bootstrap .ag-rich-select-virtual-list-item:hover {\n background-color: var(--ag-row-hover-color);\n}\n.ag-theme-bootstrap .ag-rich-select-row {\n padding-left: 12px;\n}\n.ag-theme-bootstrap .ag-rich-select-row-selected {\n background-color: #bde2e5;\n background-color: var(--ag-selected-row-background-color, #bde2e5);\n}\n.ag-theme-bootstrap .ag-row-drag,\n.ag-theme-bootstrap .ag-selection-checkbox,\n.ag-theme-bootstrap .ag-group-expanded,\n.ag-theme-bootstrap .ag-group-contracted {\n color: #000;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-bootstrap .ag-ltr .ag-row-drag, .ag-theme-bootstrap .ag-ltr .ag-selection-checkbox, .ag-theme-bootstrap .ag-ltr .ag-group-expanded, .ag-theme-bootstrap .ag-ltr .ag-group-contracted {\n margin-right: 12px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-drag, .ag-theme-bootstrap .ag-rtl .ag-selection-checkbox, .ag-theme-bootstrap .ag-rtl .ag-group-expanded, .ag-theme-bootstrap .ag-rtl .ag-group-contracted {\n margin-left: 12px;\n}\n\n.ag-theme-bootstrap .ag-cell-wrapper > *:not(.ag-cell-value):not(.ag-group-value) {\n height: min(var(--ag-line-height, 23px), 23px);\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-flex: 0;\n flex: none;\n}\n.ag-theme-bootstrap .ag-group-expanded,\n.ag-theme-bootstrap .ag-group-contracted {\n cursor: pointer;\n}\n.ag-theme-bootstrap .ag-group-title-bar-icon {\n cursor: pointer;\n -webkit-box-flex: 0;\n flex: none;\n color: #000;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-bootstrap .ag-ltr .ag-group-child-count {\n margin-left: 2px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-group-child-count {\n margin-right: 2px;\n}\n\n.ag-theme-bootstrap .ag-group-title-bar {\n background-color: #ececec;\n background-color: var(--ag-subheader-background-color, #ececec);\n padding: 4px;\n}\n.ag-theme-bootstrap .ag-group-toolbar {\n padding: 4px;\n}\n.ag-theme-bootstrap .ag-disabled-group-title-bar, .ag-theme-bootstrap .ag-disabled-group-container {\n opacity: 0.5;\n}\n.ag-theme-bootstrap .group-item {\n margin: 2px 0;\n}\n.ag-theme-bootstrap .ag-label {\n white-space: nowrap;\n}\n.ag-theme-bootstrap .ag-ltr .ag-label {\n margin-right: 4px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-label {\n margin-left: 4px;\n}\n\n.ag-theme-bootstrap .ag-label-align-top .ag-label {\n margin-bottom: 2px;\n}\n.ag-theme-bootstrap .ag-ltr .ag-slider-field, .ag-theme-bootstrap .ag-ltr .ag-angle-select-field {\n margin-right: 8px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-slider-field, .ag-theme-bootstrap .ag-rtl .ag-angle-select-field {\n margin-left: 8px;\n}\n\n.ag-theme-bootstrap .ag-angle-select-parent-circle {\n width: 24px;\n height: 24px;\n border-radius: 12px;\n border: solid 1px;\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n}\n.ag-theme-bootstrap .ag-angle-select-child-circle {\n top: 4px;\n left: 12px;\n width: 6px;\n height: 6px;\n margin-left: -3px;\n margin-top: -4px;\n border-radius: 3px;\n background-color: #000;\n background-color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-bootstrap .ag-picker-field-wrapper {\n border: 1px solid;\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n border-radius: 5px;\n}\n.ag-theme-bootstrap .ag-picker-field-button {\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n color: #000;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-bootstrap .ag-dialog.ag-color-dialog {\n border-radius: 5px;\n}\n.ag-theme-bootstrap .ag-color-picker .ag-picker-field-display {\n height: 12px;\n}\n.ag-theme-bootstrap .ag-color-panel {\n padding: 4px;\n}\n.ag-theme-bootstrap .ag-spectrum-color {\n background-color: rgb(255, 0, 0);\n border-radius: 2px;\n}\n.ag-theme-bootstrap .ag-spectrum-tools {\n padding: 10px;\n}\n.ag-theme-bootstrap .ag-spectrum-sat {\n background-image: -webkit-gradient(linear, left top, right top, from(white), to(rgba(204, 154, 129, 0)));\n background-image: linear-gradient(to right, white, rgba(204, 154, 129, 0));\n}\n.ag-theme-bootstrap .ag-spectrum-val {\n background-image: -webkit-gradient(linear, left bottom, left top, from(black), to(rgba(204, 154, 129, 0)));\n background-image: linear-gradient(to top, black, rgba(204, 154, 129, 0));\n}\n.ag-theme-bootstrap .ag-spectrum-dragger {\n border-radius: 12px;\n height: 12px;\n width: 12px;\n border: 1px solid white;\n background: black;\n -webkit-box-shadow: 0 0 2px 0px rgba(0, 0, 0, 0.24);\n box-shadow: 0 0 2px 0px rgba(0, 0, 0, 0.24);\n}\n.ag-theme-bootstrap .ag-spectrum-hue-background {\n border-radius: 2px;\n}\n.ag-theme-bootstrap .ag-spectrum-alpha-background {\n border-radius: 2px;\n}\n.ag-theme-bootstrap .ag-spectrum-tool {\n margin-bottom: 10px;\n height: 11px;\n border-radius: 2px;\n}\n.ag-theme-bootstrap .ag-spectrum-slider {\n margin-top: -12px;\n width: 13px;\n height: 13px;\n border-radius: 13px;\n background-color: rgb(248, 248, 248);\n -webkit-box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\n box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\n}\n.ag-theme-bootstrap .ag-recent-color {\n margin: 0 3px;\n}\n.ag-theme-bootstrap .ag-recent-color:first-child {\n margin-left: 0;\n}\n.ag-theme-bootstrap .ag-recent-color:last-child {\n margin-right: 0;\n}\n.ag-theme-bootstrap.ag-dnd-ghost {\n background: #FFF;\n background: var(--ag-background-color, #FFF);\n border-radius: 0px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n overflow: hidden;\n text-overflow: ellipsis;\n color: #000;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n height: 25px !important;\n line-height: 25px;\n margin: 0;\n padding: 0 8px;\n -webkit-transform: translateY(8px);\n transform: translateY(8px);\n}\n.ag-theme-bootstrap .ag-dnd-ghost-icon {\n margin-right: 4px;\n color: #000;\n color: var(--ag-foreground-color, #000);\n}\n.ag-theme-bootstrap .ag-popup-child:not(.ag-tooltip-custom) {\n -webkit-box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.3);\n box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.3);\n}\n.ag-dragging-range-handle .ag-theme-bootstrap .ag-dialog, .ag-dragging-fill-handle .ag-theme-bootstrap .ag-dialog {\n opacity: 0.7;\n pointer-events: none;\n}\n.ag-theme-bootstrap .ag-dialog {\n border-radius: 0px;\n}\n.ag-theme-bootstrap .ag-panel {\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n}\n.ag-theme-bootstrap .ag-panel-title-bar {\n background-color: var(--ag-header-background-color);\n color: #000;\n color: var(--ag-header-foreground-color, var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000)));\n height: 25px;\n padding: 4px 12px;\n}\n.ag-theme-bootstrap .ag-ltr .ag-panel-title-bar-button {\n margin-left: 4px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-panel-title-bar-button {\n margin-right: 4px;\n}\n\n.ag-theme-bootstrap .ag-tooltip {\n background-color: var(--ag-header-background-color);\n color: #000;\n color: var(--ag-foreground-color, #000);\n padding: 4px;\n border-radius: 0px;\n -webkit-transition: opacity 1s;\n transition: opacity 1s;\n white-space: normal;\n}\n.ag-theme-bootstrap .ag-tooltip.ag-tooltip-hiding {\n opacity: 0;\n}\n.ag-theme-bootstrap .ag-tooltip-custom {\n -webkit-transition: opacity 1s;\n transition: opacity 1s;\n}\n.ag-theme-bootstrap .ag-tooltip-custom.ag-tooltip-hiding {\n opacity: 0;\n}\n.ag-theme-bootstrap .ag-ltr .ag-column-select-indent-1 {\n padding-left: 16px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-column-select-indent-1 {\n padding-right: 16px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-column-select-indent-2 {\n padding-left: 32px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-column-select-indent-2 {\n padding-right: 32px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-column-select-indent-3 {\n padding-left: 48px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-column-select-indent-3 {\n padding-right: 48px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-column-select-indent-4 {\n padding-left: 64px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-column-select-indent-4 {\n padding-right: 64px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-column-select-indent-5 {\n padding-left: 80px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-column-select-indent-5 {\n padding-right: 80px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-column-select-indent-6 {\n padding-left: 96px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-column-select-indent-6 {\n padding-right: 96px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-column-select-indent-7 {\n padding-left: 112px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-column-select-indent-7 {\n padding-right: 112px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-column-select-indent-8 {\n padding-left: 128px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-column-select-indent-8 {\n padding-right: 128px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-column-select-indent-9 {\n padding-left: 144px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-column-select-indent-9 {\n padding-right: 144px;\n}\n\n.ag-theme-bootstrap .ag-column-select-header-icon {\n cursor: pointer;\n}\n.ag-theme-bootstrap .ag-keyboard-focus .ag-column-select-header-icon:focus {\n outline: none;\n}\n.ag-theme-bootstrap .ag-keyboard-focus .ag-column-select-header-icon:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 0px;\n left: 0px;\n display: block;\n width: calc(100% - 0px);\n height: calc(100% - 0px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-bootstrap .ag-ltr .ag-column-group-icons:not(:last-child), .ag-theme-bootstrap .ag-ltr .ag-column-select-header-icon:not(:last-child), .ag-theme-bootstrap .ag-ltr .ag-column-select-header-checkbox:not(:last-child), .ag-theme-bootstrap .ag-ltr .ag-column-select-header-filter-wrapper:not(:last-child), .ag-theme-bootstrap .ag-ltr .ag-column-select-checkbox:not(:last-child), .ag-theme-bootstrap .ag-ltr .ag-column-select-column-drag-handle:not(:last-child), .ag-theme-bootstrap .ag-ltr .ag-column-select-column-group-drag-handle:not(:last-child), .ag-theme-bootstrap .ag-ltr .ag-column-select-column-label:not(:last-child) {\n margin-right: 8px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-column-group-icons:not(:last-child), .ag-theme-bootstrap .ag-rtl .ag-column-select-header-icon:not(:last-child), .ag-theme-bootstrap .ag-rtl .ag-column-select-header-checkbox:not(:last-child), .ag-theme-bootstrap .ag-rtl .ag-column-select-header-filter-wrapper:not(:last-child), .ag-theme-bootstrap .ag-rtl .ag-column-select-checkbox:not(:last-child), .ag-theme-bootstrap .ag-rtl .ag-column-select-column-drag-handle:not(:last-child), .ag-theme-bootstrap .ag-rtl .ag-column-select-column-group-drag-handle:not(:last-child), .ag-theme-bootstrap .ag-rtl .ag-column-select-column-label:not(:last-child) {\n margin-left: 8px;\n}\n\n.ag-theme-bootstrap .ag-keyboard-focus .ag-column-select-virtual-list-item:focus {\n outline: none;\n}\n.ag-theme-bootstrap .ag-keyboard-focus .ag-column-select-virtual-list-item:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 1px;\n left: 1px;\n display: block;\n width: calc(100% - 2px);\n height: calc(100% - 2px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-bootstrap .ag-column-select-column-group:not(:last-child),\n.ag-theme-bootstrap .ag-column-select-column:not(:last-child) {\n margin-bottom: 4px;\n}\n.ag-theme-bootstrap .ag-column-select-column-readonly,\n.ag-theme-bootstrap .ag-column-select-column-group-readonly {\n color: rgba(0, 0, 0, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.5));\n pointer-events: none;\n}\n.ag-theme-bootstrap .ag-ltr .ag-column-select-add-group-indent {\n margin-left: 20px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-column-select-add-group-indent {\n margin-right: 20px;\n}\n\n.ag-theme-bootstrap .ag-column-select-virtual-list-viewport {\n padding: 3px 0px;\n}\n.ag-theme-bootstrap .ag-column-select-virtual-list-item {\n padding: 0 6px;\n}\n.ag-theme-bootstrap .ag-rtl {\n text-align: right;\n}\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-1 {\n padding-left: 36px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-1 {\n padding-right: 36px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-1 {\n padding-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-1 {\n padding-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-1 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-1 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-2 {\n padding-left: 60px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-2 {\n padding-right: 60px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-2 {\n padding-left: 48px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-2 {\n padding-right: 48px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-2 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-2 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-3 {\n padding-left: 84px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-3 {\n padding-right: 84px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-3 {\n padding-left: 72px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-3 {\n padding-right: 72px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-3 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-3 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-4 {\n padding-left: 108px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-4 {\n padding-right: 108px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-4 {\n padding-left: 96px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-4 {\n padding-right: 96px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-4 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-4 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-5 {\n padding-left: 132px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-5 {\n padding-right: 132px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-5 {\n padding-left: 120px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-5 {\n padding-right: 120px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-5 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-5 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-6 {\n padding-left: 156px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-6 {\n padding-right: 156px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-6 {\n padding-left: 144px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-6 {\n padding-right: 144px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-6 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-6 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-7 {\n padding-left: 180px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-7 {\n padding-right: 180px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-7 {\n padding-left: 168px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-7 {\n padding-right: 168px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-7 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-7 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-8 {\n padding-left: 204px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-8 {\n padding-right: 204px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-8 {\n padding-left: 192px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-8 {\n padding-right: 192px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-8 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-8 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-9 {\n padding-left: 228px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-9 {\n padding-right: 228px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-9 {\n padding-left: 216px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-9 {\n padding-right: 216px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-9 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-9 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-10 {\n padding-left: 252px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-10 {\n padding-right: 252px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-10 {\n padding-left: 240px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-10 {\n padding-right: 240px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-10 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-10 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-11 {\n padding-left: 276px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-11 {\n padding-right: 276px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-11 {\n padding-left: 264px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-11 {\n padding-right: 264px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-11 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-11 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-12 {\n padding-left: 300px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-12 {\n padding-right: 300px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-12 {\n padding-left: 288px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-12 {\n padding-right: 288px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-12 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-12 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-13 {\n padding-left: 324px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-13 {\n padding-right: 324px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-13 {\n padding-left: 312px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-13 {\n padding-right: 312px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-13 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-13 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-14 {\n padding-left: 348px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-14 {\n padding-right: 348px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-14 {\n padding-left: 336px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-14 {\n padding-right: 336px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-14 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-14 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-15 {\n padding-left: 372px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-15 {\n padding-right: 372px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-15 {\n padding-left: 360px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-15 {\n padding-right: 360px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-15 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-15 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-16 {\n padding-left: 396px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-16 {\n padding-right: 396px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-16 {\n padding-left: 384px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-16 {\n padding-right: 384px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-16 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-16 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-17 {\n padding-left: 420px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-17 {\n padding-right: 420px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-17 {\n padding-left: 408px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-17 {\n padding-right: 408px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-17 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-17 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-18 {\n padding-left: 444px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-18 {\n padding-right: 444px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-18 {\n padding-left: 432px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-18 {\n padding-right: 432px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-18 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-18 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-19 {\n padding-left: 468px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-19 {\n padding-right: 468px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-19 {\n padding-left: 456px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-19 {\n padding-right: 456px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-19 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-19 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-20 {\n padding-left: 492px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-20 {\n padding-right: 492px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-20 {\n padding-left: 480px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-20 {\n padding-right: 480px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-20 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-20 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-21 {\n padding-left: 516px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-21 {\n padding-right: 516px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-21 {\n padding-left: 504px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-21 {\n padding-right: 504px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-21 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-21 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-22 {\n padding-left: 540px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-22 {\n padding-right: 540px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-22 {\n padding-left: 528px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-22 {\n padding-right: 528px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-22 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-22 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-23 {\n padding-left: 564px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-23 {\n padding-right: 564px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-23 {\n padding-left: 552px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-23 {\n padding-right: 552px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-23 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-23 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-24 {\n padding-left: 588px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-24 {\n padding-right: 588px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-24 {\n padding-left: 576px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-24 {\n padding-right: 576px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-24 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-24 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-25 {\n padding-left: 612px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-25 {\n padding-right: 612px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-25 {\n padding-left: 600px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-25 {\n padding-right: 600px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-25 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-25 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-26 {\n padding-left: 636px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-26 {\n padding-right: 636px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-26 {\n padding-left: 624px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-26 {\n padding-right: 624px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-26 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-26 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-27 {\n padding-left: 660px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-27 {\n padding-right: 660px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-27 {\n padding-left: 648px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-27 {\n padding-right: 648px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-27 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-27 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-28 {\n padding-left: 684px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-28 {\n padding-right: 684px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-28 {\n padding-left: 672px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-28 {\n padding-right: 672px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-28 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-28 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-29 {\n padding-left: 708px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-29 {\n padding-right: 708px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-29 {\n padding-left: 696px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-29 {\n padding-right: 696px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-29 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-29 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-30 {\n padding-left: 732px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-30 {\n padding-right: 732px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-30 {\n padding-left: 720px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-30 {\n padding-right: 720px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-30 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-30 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-31 {\n padding-left: 756px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-31 {\n padding-right: 756px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-31 {\n padding-left: 744px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-31 {\n padding-right: 744px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-31 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-31 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-32 {\n padding-left: 780px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-32 {\n padding-right: 780px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-32 {\n padding-left: 768px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-32 {\n padding-right: 768px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-32 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-32 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-33 {\n padding-left: 804px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-33 {\n padding-right: 804px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-33 {\n padding-left: 792px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-33 {\n padding-right: 792px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-33 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-33 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-34 {\n padding-left: 828px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-34 {\n padding-right: 828px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-34 {\n padding-left: 816px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-34 {\n padding-right: 816px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-34 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-34 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-35 {\n padding-left: 852px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-35 {\n padding-right: 852px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-35 {\n padding-left: 840px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-35 {\n padding-right: 840px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-35 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-35 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-36 {\n padding-left: 876px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-36 {\n padding-right: 876px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-36 {\n padding-left: 864px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-36 {\n padding-right: 864px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-36 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-36 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-37 {\n padding-left: 900px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-37 {\n padding-right: 900px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-37 {\n padding-left: 888px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-37 {\n padding-right: 888px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-37 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-37 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-38 {\n padding-left: 924px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-38 {\n padding-right: 924px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-38 {\n padding-left: 912px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-38 {\n padding-right: 912px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-38 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-38 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-39 {\n padding-left: 948px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-39 {\n padding-right: 948px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-39 {\n padding-left: 936px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-39 {\n padding-right: 936px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-39 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-39 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-40 {\n padding-left: 972px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-40 {\n padding-right: 972px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-40 {\n padding-left: 960px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-40 {\n padding-right: 960px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-40 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-40 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-41 {\n padding-left: 996px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-41 {\n padding-right: 996px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-41 {\n padding-left: 984px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-41 {\n padding-right: 984px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-41 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-41 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-42 {\n padding-left: 1020px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-42 {\n padding-right: 1020px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-42 {\n padding-left: 1008px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-42 {\n padding-right: 1008px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-42 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-42 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-43 {\n padding-left: 1044px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-43 {\n padding-right: 1044px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-43 {\n padding-left: 1032px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-43 {\n padding-right: 1032px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-43 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-43 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-44 {\n padding-left: 1068px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-44 {\n padding-right: 1068px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-44 {\n padding-left: 1056px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-44 {\n padding-right: 1056px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-44 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-44 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-45 {\n padding-left: 1092px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-45 {\n padding-right: 1092px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-45 {\n padding-left: 1080px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-45 {\n padding-right: 1080px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-45 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-45 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-46 {\n padding-left: 1116px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-46 {\n padding-right: 1116px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-46 {\n padding-left: 1104px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-46 {\n padding-right: 1104px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-46 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-46 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-47 {\n padding-left: 1140px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-47 {\n padding-right: 1140px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-47 {\n padding-left: 1128px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-47 {\n padding-right: 1128px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-47 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-47 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-48 {\n padding-left: 1164px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-48 {\n padding-right: 1164px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-48 {\n padding-left: 1152px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-48 {\n padding-right: 1152px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-48 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-48 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-49 {\n padding-left: 1188px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-49 {\n padding-right: 1188px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-49 {\n padding-left: 1176px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-49 {\n padding-right: 1176px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-49 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-49 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-50 {\n padding-left: 1212px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-50 {\n padding-right: 1212px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-50 {\n padding-left: 1200px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-50 {\n padding-right: 1200px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-50 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-50 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-51 {\n padding-left: 1236px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-51 {\n padding-right: 1236px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-51 {\n padding-left: 1224px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-51 {\n padding-right: 1224px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-51 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-51 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-52 {\n padding-left: 1260px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-52 {\n padding-right: 1260px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-52 {\n padding-left: 1248px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-52 {\n padding-right: 1248px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-52 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-52 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-53 {\n padding-left: 1284px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-53 {\n padding-right: 1284px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-53 {\n padding-left: 1272px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-53 {\n padding-right: 1272px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-53 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-53 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-54 {\n padding-left: 1308px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-54 {\n padding-right: 1308px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-54 {\n padding-left: 1296px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-54 {\n padding-right: 1296px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-54 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-54 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-55 {\n padding-left: 1332px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-55 {\n padding-right: 1332px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-55 {\n padding-left: 1320px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-55 {\n padding-right: 1320px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-55 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-55 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-56 {\n padding-left: 1356px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-56 {\n padding-right: 1356px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-56 {\n padding-left: 1344px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-56 {\n padding-right: 1344px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-56 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-56 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-57 {\n padding-left: 1380px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-57 {\n padding-right: 1380px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-57 {\n padding-left: 1368px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-57 {\n padding-right: 1368px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-57 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-57 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-58 {\n padding-left: 1404px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-58 {\n padding-right: 1404px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-58 {\n padding-left: 1392px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-58 {\n padding-right: 1392px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-58 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-58 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-59 {\n padding-left: 1428px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-59 {\n padding-right: 1428px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-59 {\n padding-left: 1416px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-59 {\n padding-right: 1416px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-59 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-59 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-60 {\n padding-left: 1452px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-60 {\n padding-right: 1452px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-60 {\n padding-left: 1440px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-60 {\n padding-right: 1440px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-60 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-60 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-61 {\n padding-left: 1476px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-61 {\n padding-right: 1476px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-61 {\n padding-left: 1464px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-61 {\n padding-right: 1464px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-61 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-61 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-62 {\n padding-left: 1500px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-62 {\n padding-right: 1500px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-62 {\n padding-left: 1488px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-62 {\n padding-right: 1488px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-62 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-62 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-63 {\n padding-left: 1524px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-63 {\n padding-right: 1524px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-63 {\n padding-left: 1512px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-63 {\n padding-right: 1512px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-63 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-63 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-64 {\n padding-left: 1548px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-64 {\n padding-right: 1548px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-64 {\n padding-left: 1536px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-64 {\n padding-right: 1536px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-64 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-64 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-65 {\n padding-left: 1572px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-65 {\n padding-right: 1572px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-65 {\n padding-left: 1560px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-65 {\n padding-right: 1560px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-65 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-65 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-66 {\n padding-left: 1596px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-66 {\n padding-right: 1596px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-66 {\n padding-left: 1584px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-66 {\n padding-right: 1584px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-66 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-66 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-67 {\n padding-left: 1620px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-67 {\n padding-right: 1620px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-67 {\n padding-left: 1608px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-67 {\n padding-right: 1608px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-67 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-67 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-68 {\n padding-left: 1644px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-68 {\n padding-right: 1644px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-68 {\n padding-left: 1632px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-68 {\n padding-right: 1632px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-68 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-68 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-69 {\n padding-left: 1668px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-69 {\n padding-right: 1668px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-69 {\n padding-left: 1656px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-69 {\n padding-right: 1656px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-69 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-69 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-70 {\n padding-left: 1692px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-70 {\n padding-right: 1692px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-70 {\n padding-left: 1680px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-70 {\n padding-right: 1680px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-70 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-70 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-71 {\n padding-left: 1716px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-71 {\n padding-right: 1716px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-71 {\n padding-left: 1704px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-71 {\n padding-right: 1704px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-71 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-71 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-72 {\n padding-left: 1740px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-72 {\n padding-right: 1740px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-72 {\n padding-left: 1728px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-72 {\n padding-right: 1728px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-72 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-72 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-73 {\n padding-left: 1764px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-73 {\n padding-right: 1764px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-73 {\n padding-left: 1752px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-73 {\n padding-right: 1752px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-73 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-73 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-74 {\n padding-left: 1788px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-74 {\n padding-right: 1788px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-74 {\n padding-left: 1776px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-74 {\n padding-right: 1776px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-74 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-74 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-75 {\n padding-left: 1812px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-75 {\n padding-right: 1812px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-75 {\n padding-left: 1800px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-75 {\n padding-right: 1800px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-75 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-75 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-76 {\n padding-left: 1836px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-76 {\n padding-right: 1836px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-76 {\n padding-left: 1824px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-76 {\n padding-right: 1824px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-76 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-76 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-77 {\n padding-left: 1860px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-77 {\n padding-right: 1860px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-77 {\n padding-left: 1848px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-77 {\n padding-right: 1848px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-77 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-77 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-78 {\n padding-left: 1884px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-78 {\n padding-right: 1884px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-78 {\n padding-left: 1872px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-78 {\n padding-right: 1872px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-78 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-78 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-79 {\n padding-left: 1908px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-79 {\n padding-right: 1908px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-79 {\n padding-left: 1896px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-79 {\n padding-right: 1896px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-79 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-79 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-80 {\n padding-left: 1932px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-80 {\n padding-right: 1932px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-80 {\n padding-left: 1920px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-80 {\n padding-right: 1920px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-80 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-80 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-81 {\n padding-left: 1956px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-81 {\n padding-right: 1956px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-81 {\n padding-left: 1944px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-81 {\n padding-right: 1944px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-81 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-81 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-82 {\n padding-left: 1980px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-82 {\n padding-right: 1980px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-82 {\n padding-left: 1968px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-82 {\n padding-right: 1968px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-82 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-82 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-83 {\n padding-left: 2004px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-83 {\n padding-right: 2004px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-83 {\n padding-left: 1992px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-83 {\n padding-right: 1992px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-83 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-83 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-84 {\n padding-left: 2028px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-84 {\n padding-right: 2028px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-84 {\n padding-left: 2016px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-84 {\n padding-right: 2016px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-84 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-84 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-85 {\n padding-left: 2052px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-85 {\n padding-right: 2052px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-85 {\n padding-left: 2040px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-85 {\n padding-right: 2040px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-85 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-85 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-86 {\n padding-left: 2076px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-86 {\n padding-right: 2076px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-86 {\n padding-left: 2064px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-86 {\n padding-right: 2064px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-86 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-86 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-87 {\n padding-left: 2100px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-87 {\n padding-right: 2100px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-87 {\n padding-left: 2088px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-87 {\n padding-right: 2088px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-87 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-87 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-88 {\n padding-left: 2124px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-88 {\n padding-right: 2124px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-88 {\n padding-left: 2112px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-88 {\n padding-right: 2112px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-88 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-88 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-89 {\n padding-left: 2148px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-89 {\n padding-right: 2148px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-89 {\n padding-left: 2136px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-89 {\n padding-right: 2136px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-89 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-89 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-90 {\n padding-left: 2172px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-90 {\n padding-right: 2172px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-90 {\n padding-left: 2160px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-90 {\n padding-right: 2160px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-90 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-90 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-91 {\n padding-left: 2196px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-91 {\n padding-right: 2196px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-91 {\n padding-left: 2184px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-91 {\n padding-right: 2184px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-91 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-91 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-92 {\n padding-left: 2220px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-92 {\n padding-right: 2220px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-92 {\n padding-left: 2208px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-92 {\n padding-right: 2208px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-92 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-92 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-93 {\n padding-left: 2244px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-93 {\n padding-right: 2244px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-93 {\n padding-left: 2232px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-93 {\n padding-right: 2232px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-93 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-93 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-94 {\n padding-left: 2268px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-94 {\n padding-right: 2268px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-94 {\n padding-left: 2256px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-94 {\n padding-right: 2256px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-94 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-94 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-95 {\n padding-left: 2292px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-95 {\n padding-right: 2292px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-95 {\n padding-left: 2280px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-95 {\n padding-right: 2280px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-95 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-95 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-96 {\n padding-left: 2316px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-96 {\n padding-right: 2316px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-96 {\n padding-left: 2304px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-96 {\n padding-right: 2304px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-96 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-96 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-97 {\n padding-left: 2340px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-97 {\n padding-right: 2340px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-97 {\n padding-left: 2328px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-97 {\n padding-right: 2328px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-97 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-97 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-98 {\n padding-left: 2364px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-98 {\n padding-right: 2364px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-98 {\n padding-left: 2352px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-98 {\n padding-right: 2352px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-98 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-98 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-99 {\n padding-left: 2388px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-99 {\n padding-right: 2388px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-indent-99 {\n padding-left: 2376px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-indent-99 {\n padding-right: 2376px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-level-99 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-level-99 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-row-group-leaf-indent {\n margin-left: 24px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-row-group-leaf-indent {\n margin-right: 24px;\n}\n\n.ag-theme-bootstrap .ag-value-change-delta {\n padding-right: 2px;\n}\n.ag-theme-bootstrap .ag-value-change-delta-up {\n color: darkgreen;\n color: var(--ag-value-change-delta-up-color, darkgreen);\n}\n.ag-theme-bootstrap .ag-value-change-delta-down {\n color: darkred;\n color: var(--ag-value-change-delta-down-color, darkred);\n}\n.ag-theme-bootstrap .ag-value-change-value {\n background-color: transparent;\n border-radius: 1px;\n padding-left: 1px;\n padding-right: 1px;\n -webkit-transition: background-color 1s;\n transition: background-color 1s;\n}\n.ag-theme-bootstrap .ag-value-change-value-highlight {\n background-color: #cec;\n background-color: var(--ag-value-change-value-highlight-background-color, #cec);\n -webkit-transition: background-color 0.1s;\n transition: background-color 0.1s;\n}\n.ag-theme-bootstrap .ag-cell-data-changed {\n background-color: #cec !important;\n background-color: var(--ag-value-change-value-highlight-background-color, #cec) !important;\n}\n.ag-theme-bootstrap .ag-cell-data-changed-animation {\n background-color: transparent;\n}\n.ag-theme-bootstrap .ag-cell-highlight {\n background-color: rgba(136, 255, 136, 0.4) !important;\n background-color: var(--ag-range-selection-highlight-color, rgba(136, 255, 136, 0.4)) !important;\n}\n.ag-theme-bootstrap .ag-row {\n height: 25px;\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n color: #000;\n color: var(--ag-data-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-bootstrap .ag-row-highlight-above::after, .ag-theme-bootstrap .ag-row-highlight-below::after {\n content: \"\";\n position: absolute;\n width: calc(100% - 1px);\n height: 1px;\n background-color: #000;\n background-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n left: 1px;\n}\n.ag-theme-bootstrap .ag-row-highlight-above::after {\n top: -1px;\n}\n.ag-theme-bootstrap .ag-row-highlight-above.ag-row-first::after {\n top: 0;\n}\n.ag-theme-bootstrap .ag-row-highlight-below::after {\n bottom: 0px;\n}\n.ag-theme-bootstrap .ag-row-odd {\n background-color: #f6f6f6;\n background-color: var(--ag-odd-row-background-color, #f6f6f6);\n}\n.ag-theme-bootstrap .ag-ltr .ag-right-aligned-cell {\n text-align: right;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-right-aligned-cell {\n text-align: left;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-right-aligned-cell .ag-cell-value, .ag-theme-bootstrap .ag-ltr .ag-right-aligned-cell .ag-group-value {\n margin-left: auto;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-right-aligned-cell .ag-cell-value, .ag-theme-bootstrap .ag-rtl .ag-right-aligned-cell .ag-group-value {\n margin-right: auto;\n}\n\n.ag-theme-bootstrap .ag-cell, .ag-theme-bootstrap .ag-full-width-row .ag-cell-wrapper.ag-row-group {\n border: 1px solid transparent;\n line-height: min(var(--ag-line-height, 23px), 23px);\n padding-left: 11px;\n padding-right: 11px;\n -webkit-font-smoothing: subpixel-antialiased;\n}\n.ag-theme-bootstrap .ag-row > .ag-cell-wrapper {\n padding-left: 11px;\n padding-right: 11px;\n}\n.ag-theme-bootstrap .ag-row-dragging {\n cursor: move;\n opacity: 0.5;\n}\n.ag-theme-bootstrap .ag-cell-inline-editing {\n background: #FFF;\n background: var(--ag-background-color, #FFF);\n border-radius: 0px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n padding: 0;\n height: 25px;\n background-color: #f6f6f6;\n background-color: var(--ag-control-panel-background-color, #f6f6f6);\n}\n.ag-theme-bootstrap .ag-popup-editor {\n background: #FFF;\n background: var(--ag-background-color, #FFF);\n border-radius: 0px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n background-color: #f6f6f6;\n background-color: var(--ag-control-panel-background-color, #f6f6f6);\n padding: 0;\n}\n.ag-theme-bootstrap .ag-large-text-input {\n height: auto;\n padding: 12px;\n}\n.ag-theme-bootstrap .ag-details-row {\n padding: 20px;\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n}\n.ag-theme-bootstrap .ag-layout-auto-height .ag-center-cols-clipper, .ag-theme-bootstrap .ag-layout-auto-height .ag-center-cols-container, .ag-theme-bootstrap .ag-layout-print .ag-center-cols-clipper, .ag-theme-bootstrap .ag-layout-print .ag-center-cols-container {\n min-height: 50px;\n}\n.ag-theme-bootstrap .ag-overlay-loading-wrapper {\n background-color: rgba(255, 255, 255, 0.66);\n background-color: var(--ag-modal-overlay-background-color, rgba(255, 255, 255, 0.66));\n}\n.ag-theme-bootstrap .ag-overlay-loading-center {\n background: #FFF;\n background: var(--ag-background-color, #FFF);\n border-radius: 0px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n}\n.ag-theme-bootstrap .ag-overlay-no-rows-wrapper.ag-layout-auto-height {\n padding-top: 30px;\n}\n.ag-theme-bootstrap .ag-loading {\n padding-left: 12px;\n display: -webkit-box;\n display: flex;\n height: 100%;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-bootstrap .ag-loading-icon {\n padding-right: 12px;\n}\n.ag-theme-bootstrap .ag-icon-loading {\n -webkit-animation-name: spin;\n animation-name: spin;\n -webkit-animation-duration: 1000ms;\n animation-duration: 1000ms;\n -webkit-animation-iteration-count: infinite;\n animation-iteration-count: infinite;\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n}\n@-webkit-keyframes spin {\n from {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@keyframes spin {\n from {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.ag-theme-bootstrap .ag-ltr .ag-cell {\n border-right: solid transparent;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-cell {\n border-left: solid transparent;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-cell {\n border-right-width: 1px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-cell {\n border-left-width: 1px;\n}\n\n.ag-theme-bootstrap .ag-row-selected {\n background-color: #bde2e5;\n background-color: var(--ag-selected-row-background-color, #bde2e5);\n}\n.ag-theme-bootstrap .ag-cell-range-selected:not(.ag-cell-focus),\n.ag-theme-bootstrap .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing) {\n background-color: rgba(0, 0, 0, 0.2);\n background-color: var(--ag-range-selection-background-color, rgba(0, 0, 0, 0.2));\n}\n.ag-theme-bootstrap .ag-cell-range-selected:not(.ag-cell-focus).ag-cell-range-chart,\n.ag-theme-bootstrap .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing).ag-cell-range-chart {\n background-color: rgba(0, 88, 255, 0.1) !important;\n background-color: var(--ag-range-selection-chart-background-color, rgba(0, 88, 255, 0.1)) !important;\n}\n.ag-theme-bootstrap .ag-cell-range-selected:not(.ag-cell-focus).ag-cell-range-chart.ag-cell-range-chart-category,\n.ag-theme-bootstrap .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing).ag-cell-range-chart.ag-cell-range-chart-category {\n background-color: rgba(0, 255, 132, 0.1) !important;\n background-color: var(--ag-range-selection-chart-category-background-color, rgba(0, 255, 132, 0.1)) !important;\n}\n.ag-theme-bootstrap .ag-cell-range-selected-1:not(.ag-cell-focus),\n.ag-theme-bootstrap .ag-root:not(.ag-context-menu-open) .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-1:not(.ag-cell-inline-editing) {\n background-color: rgba(0, 0, 0, 0.2);\n background-color: var(--ag-range-selection-background-color-1, var(--ag-range-selection-background-color, rgba(0, 0, 0, 0.2)));\n}\n.ag-theme-bootstrap .ag-cell-range-selected-2:not(.ag-cell-focus),\n.ag-theme-bootstrap .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-2 {\n background-color: rgba(0, 0, 0, 0.36);\n background-color: var(--ag-range-selection-background-color-2, rgba(0, 0, 0, 0.36));\n}\n.ag-theme-bootstrap .ag-cell-range-selected-3:not(.ag-cell-focus),\n.ag-theme-bootstrap .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-3 {\n background-color: rgba(0, 0, 0, 0.488);\n background-color: var(--ag-range-selection-background-color-3, rgba(0, 0, 0, 0.488));\n}\n.ag-theme-bootstrap .ag-cell-range-selected-4:not(.ag-cell-focus),\n.ag-theme-bootstrap .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-4 {\n background-color: rgba(0, 0, 0, 0.5904);\n background-color: var(--ag-range-selection-background-color-4, rgba(0, 0, 0, 0.5904));\n}\n.ag-theme-bootstrap .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-top {\n border-top-color: #000;\n border-top-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-bootstrap .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-right {\n border-right-color: #000;\n border-right-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-bootstrap .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-bottom {\n border-bottom-color: #000;\n border-bottom-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-bootstrap .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-left {\n border-left-color: #000;\n border-left-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-bootstrap .ag-ltr .ag-has-focus .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-bootstrap .ag-ltr .ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-bootstrap .ag-ltr .ag-has-focus .ag-full-width-row.ag-row-focus .ag-cell-wrapper.ag-row-group,\n.ag-theme-bootstrap .ag-ltr .ag-cell-range-single-cell,\n.ag-theme-bootstrap .ag-ltr .ag-cell-range-single-cell.ag-cell-range-handle, .ag-theme-bootstrap .ag-rtl .ag-has-focus .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-bootstrap .ag-rtl .ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-bootstrap .ag-rtl .ag-has-focus .ag-full-width-row.ag-row-focus .ag-cell-wrapper.ag-row-group,\n.ag-theme-bootstrap .ag-rtl .ag-cell-range-single-cell,\n.ag-theme-bootstrap .ag-rtl .ag-cell-range-single-cell.ag-cell-range-handle {\n border: 1px solid;\n border-color: #000;\n border-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n outline: initial;\n}\n.ag-theme-bootstrap .ag-cell.ag-selection-fill-top,\n.ag-theme-bootstrap .ag-cell.ag-selection-fill-top.ag-cell-range-selected {\n border-top: 1px dashed;\n border-top-color: #000;\n border-top-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-bootstrap .ag-ltr .ag-cell.ag-selection-fill-right, .ag-theme-bootstrap .ag-ltr .ag-cell.ag-selection-fill-right.ag-cell-range-selected {\n border-right: 1px dashed;\n border-right-color: #000;\n border-right-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-cell.ag-selection-fill-right, .ag-theme-bootstrap .ag-rtl .ag-cell.ag-selection-fill-right.ag-cell-range-selected {\n border-left: 1px dashed;\n border-left-color: #000;\n border-left-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n}\n\n.ag-theme-bootstrap .ag-cell.ag-selection-fill-bottom,\n.ag-theme-bootstrap .ag-cell.ag-selection-fill-bottom.ag-cell-range-selected {\n border-bottom: 1px dashed;\n border-bottom-color: #000;\n border-bottom-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-bootstrap .ag-ltr .ag-cell.ag-selection-fill-left, .ag-theme-bootstrap .ag-ltr .ag-cell.ag-selection-fill-left.ag-cell-range-selected {\n border-left: 1px dashed;\n border-left-color: #000;\n border-left-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-cell.ag-selection-fill-left, .ag-theme-bootstrap .ag-rtl .ag-cell.ag-selection-fill-left.ag-cell-range-selected {\n border-right: 1px dashed;\n border-right-color: #000;\n border-right-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n}\n\n.ag-theme-bootstrap .ag-range-handle, .ag-theme-bootstrap .ag-fill-handle {\n position: absolute;\n width: 6px;\n height: 6px;\n bottom: -1px;\n background-color: #000;\n background-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-bootstrap .ag-ltr .ag-range-handle, .ag-theme-bootstrap .ag-ltr .ag-fill-handle {\n right: -1px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-range-handle, .ag-theme-bootstrap .ag-rtl .ag-fill-handle {\n left: -1px;\n}\n\n.ag-theme-bootstrap .ag-fill-handle {\n cursor: cell;\n}\n.ag-theme-bootstrap .ag-range-handle {\n cursor: nwse-resize;\n}\n.ag-theme-bootstrap .ag-cell-inline-editing {\n border-color: var(--ag-input-focus-border-color) !important;\n}\n.ag-theme-bootstrap .ag-menu {\n background: #FFF;\n background: var(--ag-background-color, #FFF);\n border-radius: 0px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n padding: 0;\n}\n.ag-theme-bootstrap .ag-menu-list {\n cursor: default;\n padding: 4px 0;\n}\n.ag-theme-bootstrap .ag-menu-separator {\n height: 9px;\n}\n.ag-theme-bootstrap .ag-menu-separator-part::after {\n content: \"\";\n display: block;\n}\n.ag-theme-bootstrap .ag-menu-option-active, .ag-theme-bootstrap .ag-compact-menu-option-active {\n background-color: var(--ag-row-hover-color);\n}\n.ag-theme-bootstrap .ag-menu-option-part, .ag-theme-bootstrap .ag-compact-menu-option-part {\n line-height: 12px;\n padding: 6px 0;\n}\n.ag-theme-bootstrap .ag-menu-option-disabled, .ag-theme-bootstrap .ag-compact-menu-option-disabled {\n opacity: 0.5;\n}\n.ag-theme-bootstrap .ag-menu-option-icon, .ag-theme-bootstrap .ag-compact-menu-option-icon {\n width: 12px;\n}\n.ag-theme-bootstrap .ag-ltr .ag-menu-option-icon, .ag-theme-bootstrap .ag-ltr .ag-compact-menu-option-icon {\n padding-left: 8px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-menu-option-icon, .ag-theme-bootstrap .ag-rtl .ag-compact-menu-option-icon {\n padding-right: 8px;\n}\n\n.ag-theme-bootstrap .ag-menu-option-text, .ag-theme-bootstrap .ag-compact-menu-option-text {\n padding-left: 8px;\n padding-right: 8px;\n}\n.ag-theme-bootstrap .ag-ltr .ag-menu-option-shortcut, .ag-theme-bootstrap .ag-ltr .ag-compact-menu-option-shortcut {\n padding-right: 4px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-menu-option-shortcut, .ag-theme-bootstrap .ag-rtl .ag-compact-menu-option-shortcut {\n padding-left: 4px;\n}\n\n.ag-theme-bootstrap .ag-menu-option-popup-pointer, .ag-theme-bootstrap .ag-compact-menu-option-popup-pointer {\n padding-right: 4px;\n}\n.ag-theme-bootstrap .ag-tabs {\n min-width: 220px;\n}\n.ag-theme-bootstrap .ag-tabs-header {\n width: 100%;\n display: -webkit-box;\n display: flex;\n}\n.ag-theme-bootstrap .ag-tab {\n border-bottom: 0 solid transparent;\n display: -webkit-box;\n display: flex;\n -webkit-box-flex: 0;\n flex: none;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n cursor: pointer;\n}\n.ag-theme-bootstrap .ag-keyboard-focus .ag-tab:focus {\n outline: none;\n}\n.ag-theme-bootstrap .ag-keyboard-focus .ag-tab:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-bootstrap .ag-tab-selected {\n border-bottom-color: #000;\n border-bottom-color: var(--ag-selected-tab-underline-color, var(--ag-range-selection-border-color, var(--ag-foreground-color, #000)));\n}\n.ag-theme-bootstrap .ag-menu-header {\n color: #000;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-bootstrap .ag-menu:not(.ag-tabs) .ag-filter-select {\n min-width: 167px;\n}\n.ag-theme-bootstrap .ag-tabs .ag-filter-select {\n min-width: 206px;\n}\n.ag-theme-bootstrap .ag-filter-select .ag-picker-field-wrapper {\n width: 0;\n}\n.ag-theme-bootstrap .ag-filter-condition-operator {\n height: 17px;\n}\n.ag-theme-bootstrap .ag-ltr .ag-filter-condition-operator-or {\n margin-left: 8px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-filter-condition-operator-or {\n margin-right: 8px;\n}\n\n.ag-theme-bootstrap .ag-set-filter-select-all {\n padding-top: 6px;\n}\n.ag-theme-bootstrap .ag-set-filter-list, .ag-theme-bootstrap .ag-filter-no-matches {\n height: 120px;\n}\n.ag-theme-bootstrap .ag-set-filter-filter {\n margin-top: 6px;\n margin-left: 6px;\n margin-right: 6px;\n}\n.ag-theme-bootstrap .ag-filter-to {\n margin-top: 4px;\n}\n.ag-theme-bootstrap .ag-mini-filter {\n margin: 6px 6px;\n}\n.ag-theme-bootstrap .ag-set-filter-item {\n margin: 0px 6px;\n}\n.ag-theme-bootstrap .ag-ltr .ag-set-filter-item-value {\n margin-left: 6px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-set-filter-item-value {\n margin-right: 6px;\n}\n\n.ag-theme-bootstrap .ag-filter-apply-panel {\n padding: 6px 6px;\n}\n.ag-theme-bootstrap .ag-filter-apply-panel-button {\n line-height: 1.5;\n}\n.ag-theme-bootstrap .ag-ltr .ag-filter-apply-panel-button {\n margin-left: 8px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-filter-apply-panel-button {\n margin-right: 8px;\n}\n\n.ag-theme-bootstrap .ag-simple-filter-body-wrapper {\n padding: 6px 6px;\n padding-bottom: 2px;\n}\n.ag-theme-bootstrap .ag-simple-filter-body-wrapper > * {\n margin-bottom: 4px;\n}\n.ag-theme-bootstrap .ag-filter-no-matches {\n padding: 6px 6px;\n}\n.ag-theme-bootstrap .ag-multi-filter-menu-item {\n margin: 4px 0;\n}\n.ag-theme-bootstrap .ag-multi-filter-group-title-bar {\n padding: 8px 4px;\n background-color: transparent;\n}\n.ag-theme-bootstrap .ag-keyboard-focus .ag-multi-filter-group-title-bar:focus {\n outline: none;\n}\n.ag-theme-bootstrap .ag-keyboard-focus .ag-multi-filter-group-title-bar:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-bootstrap .ag-side-bar {\n position: relative;\n}\n.ag-theme-bootstrap .ag-tool-panel-wrapper {\n width: 200px;\n background-color: #f6f6f6;\n background-color: var(--ag-control-panel-background-color, #f6f6f6);\n}\n.ag-theme-bootstrap .ag-side-buttons {\n padding-top: 16px;\n width: 16px;\n position: relative;\n color: #000;\n color: var(--ag-foreground-color, #000);\n overflow: hidden;\n}\n.ag-theme-bootstrap button.ag-side-button-button {\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n background: transparent;\n padding: 8px 0 8px 0;\n width: 100%;\n margin: 0;\n min-height: 72px;\n background-position-y: center;\n background-position-x: center;\n background-repeat: no-repeat;\n border: none;\n}\n.ag-theme-bootstrap button.ag-side-button-button:focus {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.ag-theme-bootstrap .ag-keyboard-focus .ag-side-button-button:focus {\n outline: none;\n}\n.ag-theme-bootstrap .ag-keyboard-focus .ag-side-button-button:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-bootstrap .ag-side-button-icon-wrapper {\n margin-bottom: 3px;\n}\n.ag-theme-bootstrap .ag-ltr .ag-side-bar-left .ag-side-button-button,\n.ag-theme-bootstrap .ag-rtl .ag-side-bar-right .ag-side-button-button {\n border-right: 0 solid transparent;\n}\n.ag-theme-bootstrap .ag-ltr .ag-side-bar-left .ag-selected .ag-side-button-button,\n.ag-theme-bootstrap .ag-rtl .ag-side-bar-right .ag-selected .ag-side-button-button {\n border-right-color: #000;\n border-right-color: var(--ag-selected-tab-underline-color, var(--ag-range-selection-border-color, var(--ag-foreground-color, #000)));\n}\n.ag-theme-bootstrap .ag-rtl .ag-side-bar-left .ag-side-button-button,\n.ag-theme-bootstrap .ag-ltr .ag-side-bar-right .ag-side-button-button {\n border-left: 0 solid transparent;\n}\n.ag-theme-bootstrap .ag-rtl .ag-side-bar-left .ag-selected .ag-side-button-button,\n.ag-theme-bootstrap .ag-ltr .ag-side-bar-right .ag-selected .ag-side-button-button {\n border-left-color: #000;\n border-left-color: var(--ag-selected-tab-underline-color, var(--ag-range-selection-border-color, var(--ag-foreground-color, #000)));\n}\n.ag-theme-bootstrap .ag-filter-toolpanel-header {\n height: 24px;\n}\n.ag-theme-bootstrap .ag-ltr .ag-filter-toolpanel-header, .ag-theme-bootstrap .ag-ltr .ag-filter-toolpanel-search {\n padding-left: 4px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-filter-toolpanel-header, .ag-theme-bootstrap .ag-rtl .ag-filter-toolpanel-search {\n padding-right: 4px;\n}\n\n.ag-theme-bootstrap .ag-keyboard-focus .ag-filter-toolpanel-header:focus {\n outline: none;\n}\n.ag-theme-bootstrap .ag-keyboard-focus .ag-filter-toolpanel-header:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-bootstrap .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n font-family: \"agGridClassic\";\n font-size: 12px;\n line-height: 12px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n content: \"\\f114\";\n position: absolute;\n}\n.ag-theme-bootstrap .ag-ltr .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n padding-left: 4px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n padding-right: 4px;\n}\n\n.ag-theme-bootstrap .ag-filter-toolpanel-group-level-0-header {\n height: 32px;\n}\n.ag-theme-bootstrap .ag-filter-toolpanel-group-item {\n margin-top: 2px;\n margin-bottom: 2px;\n}\n.ag-theme-bootstrap .ag-filter-toolpanel-search {\n height: 25px;\n}\n.ag-theme-bootstrap .ag-filter-toolpanel-search-input {\n -webkit-box-flex: 1;\n flex-grow: 1;\n height: 16px;\n}\n.ag-theme-bootstrap .ag-ltr .ag-filter-toolpanel-search-input {\n margin-right: 4px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-filter-toolpanel-search-input {\n margin-left: 4px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-filter-toolpanel-expand, .ag-theme-bootstrap .ag-ltr .ag-filter-toolpanel-group-title-bar-icon {\n margin-right: 4px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-filter-toolpanel-expand, .ag-theme-bootstrap .ag-rtl .ag-filter-toolpanel-group-title-bar-icon {\n margin-left: 4px;\n}\n\n.ag-theme-bootstrap .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-1-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-bootstrap .ag-ltr .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-2-header {\n padding-left: 20px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-2-header {\n padding-right: 20px;\n}\n\n.ag-theme-bootstrap .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-2-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-bootstrap .ag-ltr .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-3-header {\n padding-left: 36px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-3-header {\n padding-right: 36px;\n}\n\n.ag-theme-bootstrap .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-3-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-bootstrap .ag-ltr .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-4-header {\n padding-left: 52px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-4-header {\n padding-right: 52px;\n}\n\n.ag-theme-bootstrap .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-4-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-bootstrap .ag-ltr .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-5-header {\n padding-left: 68px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-5-header {\n padding-right: 68px;\n}\n\n.ag-theme-bootstrap .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-5-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-bootstrap .ag-ltr .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-6-header {\n padding-left: 84px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-6-header {\n padding-right: 84px;\n}\n\n.ag-theme-bootstrap .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-6-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-bootstrap .ag-ltr .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-7-header {\n padding-left: 100px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-7-header {\n padding-right: 100px;\n}\n\n.ag-theme-bootstrap .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-7-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-bootstrap .ag-ltr .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-8-header {\n padding-left: 116px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-8-header {\n padding-right: 116px;\n}\n\n.ag-theme-bootstrap .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-8-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-bootstrap .ag-ltr .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-9-header {\n padding-left: 132px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-9-header {\n padding-right: 132px;\n}\n\n.ag-theme-bootstrap .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-9-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-bootstrap .ag-ltr .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-10-header {\n padding-left: 148px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-10-header {\n padding-right: 148px;\n}\n\n.ag-theme-bootstrap .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-10-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-bootstrap .ag-ltr .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-11-header {\n padding-left: 164px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-11-header {\n padding-right: 164px;\n}\n\n.ag-theme-bootstrap .ag-filter-toolpanel-instance-header.ag-filter-toolpanel-group-level-1-header {\n padding-left: 4px;\n}\n.ag-theme-bootstrap .ag-filter-toolpanel-instance-filter {\n margin-top: 4px;\n}\n.ag-theme-bootstrap .ag-ltr .ag-filter-toolpanel-instance-header-icon {\n margin-left: 4px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-filter-toolpanel-instance-header-icon {\n margin-right: 4px;\n}\n\n.ag-theme-bootstrap .ag-pivot-mode-panel {\n min-height: 25px;\n height: 25px;\n display: -webkit-box;\n display: flex;\n}\n.ag-theme-bootstrap .ag-pivot-mode-select {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-bootstrap .ag-ltr .ag-pivot-mode-select {\n margin-left: 6px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-pivot-mode-select {\n margin-right: 6px;\n}\n\n.ag-theme-bootstrap .ag-keyboard-focus .ag-column-select-header:focus {\n outline: none;\n}\n.ag-theme-bootstrap .ag-keyboard-focus .ag-column-select-header:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-bootstrap .ag-column-select-header {\n height: 25px;\n -webkit-box-align: center;\n align-items: center;\n padding: 0 6px;\n}\n.ag-theme-bootstrap .ag-column-group-icons,\n.ag-theme-bootstrap .ag-column-select-header-icon {\n color: #000;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-bootstrap .ag-column-select-list .ag-list-item-hovered::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n height: 1px;\n background-color: #000;\n background-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-bootstrap .ag-column-select-list .ag-item-highlight-top::after {\n top: 0;\n}\n.ag-theme-bootstrap .ag-column-select-list .ag-item-highlight-bottom::after {\n bottom: 0;\n}\n.ag-theme-bootstrap .ag-header {\n background-color: var(--ag-header-background-color);\n}\n.ag-theme-bootstrap .ag-header-row {\n color: #000;\n color: var(--ag-header-foreground-color, var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000)));\n height: 25px;\n}\n.ag-theme-bootstrap .ag-ltr .ag-header-cell:not(.ag-right-aligned-header) .ag-header-label-icon {\n margin-left: 4px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-header-cell:not(.ag-right-aligned-header) .ag-header-label-icon {\n margin-right: 4px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-header-cell.ag-right-aligned-header .ag-header-label-icon {\n margin-right: 4px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-header-cell.ag-right-aligned-header .ag-header-label-icon {\n margin-left: 4px;\n}\n\n.ag-theme-bootstrap .ag-header-cell,\n.ag-theme-bootstrap .ag-header-group-cell {\n padding-left: 12px;\n padding-right: 12px;\n}\n.ag-theme-bootstrap .ag-header-cell.ag-header-cell-moving,\n.ag-theme-bootstrap .ag-header-group-cell.ag-header-cell-moving {\n background-color: #bebebe;\n background-color: var(--ag-header-cell-moving-background-color, #bebebe);\n}\n.ag-theme-bootstrap .ag-keyboard-focus .ag-header-cell:focus {\n outline: none;\n}\n.ag-theme-bootstrap .ag-keyboard-focus .ag-header-cell:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-bootstrap .ag-keyboard-focus .ag-header-group-cell:focus {\n outline: none;\n}\n.ag-theme-bootstrap .ag-keyboard-focus .ag-header-group-cell:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-bootstrap .ag-header-icon {\n color: #000;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-bootstrap .ag-header-expand-icon {\n cursor: pointer;\n}\n.ag-theme-bootstrap .ag-ltr .ag-header-expand-icon {\n padding-left: 4px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-header-expand-icon {\n padding-right: 4px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-header-select-all {\n margin-right: 12px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-header-select-all {\n margin-left: 12px;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-floating-filter-button {\n margin-left: 12px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-floating-filter-button {\n margin-right: 12px;\n}\n\n.ag-theme-bootstrap .ag-floating-filter-button-button {\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background: transparent;\n border: none;\n height: 12px;\n padding: 0;\n width: 12px;\n}\n.ag-theme-bootstrap .ag-filter-loading {\n background-color: #f6f6f6;\n background-color: var(--ag-control-panel-background-color, #f6f6f6);\n height: 100%;\n padding: 6px 6px;\n position: absolute;\n width: 100%;\n z-index: 1;\n}\n.ag-theme-bootstrap .ag-paging-panel {\n border-top: 1px solid;\n border-top-color: darkgrey;\n border-top-color: var(--ag-border-color, darkgrey);\n color: #000;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n height: 25px;\n}\n.ag-theme-bootstrap .ag-paging-panel > * {\n margin: 0 12px;\n}\n.ag-theme-bootstrap .ag-paging-button {\n cursor: pointer;\n}\n.ag-theme-bootstrap .ag-paging-button.ag-disabled {\n cursor: default;\n color: rgba(0, 0, 0, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.5));\n}\n.ag-theme-bootstrap .ag-keyboard-focus .ag-paging-button:focus {\n outline: none;\n}\n.ag-theme-bootstrap .ag-keyboard-focus .ag-paging-button:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 0px;\n left: 0px;\n display: block;\n width: calc(100% - 0px);\n height: calc(100% - 0px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-bootstrap .ag-paging-button, .ag-theme-bootstrap .ag-paging-description {\n margin: 0 4px;\n}\n.ag-theme-bootstrap .ag-status-bar {\n color: rgba(0, 0, 0, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.5));\n padding-right: 16px;\n padding-left: 16px;\n line-height: 1.5;\n}\n.ag-theme-bootstrap .ag-status-name-value-value {\n color: #000;\n color: var(--ag-foreground-color, #000);\n}\n.ag-theme-bootstrap .ag-status-bar-center {\n text-align: center;\n}\n.ag-theme-bootstrap .ag-status-name-value {\n margin-left: 4px;\n margin-right: 4px;\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.ag-theme-bootstrap .ag-column-drop-cell {\n background: #ecf0f1;\n background: var(--ag-chip-background-color, #ecf0f1);\n border-radius: 16px;\n height: 16px;\n padding: 0 2px;\n border: 1px solid transparent;\n}\n.ag-theme-bootstrap .ag-keyboard-focus .ag-column-drop-cell:focus {\n outline: none;\n}\n.ag-theme-bootstrap .ag-keyboard-focus .ag-column-drop-cell:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 2px;\n left: 2px;\n display: block;\n width: calc(100% - 4px);\n height: calc(100% - 4px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-bootstrap .ag-column-drop-cell-text {\n margin: 0 4px;\n}\n.ag-theme-bootstrap .ag-column-drop-cell-button {\n min-width: 16px;\n margin: 0 2px;\n color: #000;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-bootstrap .ag-column-drop-cell-drag-handle {\n margin-left: 8px;\n}\n.ag-theme-bootstrap .ag-column-drop-cell-ghost {\n opacity: 0.5;\n}\n.ag-theme-bootstrap .ag-column-drop-horizontal {\n background-color: #f6f6f6;\n background-color: var(--ag-control-panel-background-color, #f6f6f6);\n color: #000;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n height: 25px;\n}\n.ag-theme-bootstrap .ag-ltr .ag-column-drop-horizontal {\n padding-left: 12px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-column-drop-horizontal {\n padding-right: 12px;\n}\n\n.ag-theme-bootstrap .ag-column-drop-horizontal-cell-separator {\n margin: 0 4px;\n color: #000;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-bootstrap .ag-column-drop-horizontal-empty-message {\n color: rgba(0, 0, 0, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.5));\n}\n.ag-theme-bootstrap .ag-ltr .ag-column-drop-horizontal-icon {\n margin-right: 12px;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-column-drop-horizontal-icon {\n margin-left: 12px;\n}\n\n.ag-theme-bootstrap .ag-column-drop-vertical-list {\n padding-bottom: 4px;\n padding-right: 4px;\n padding-left: 4px;\n}\n.ag-theme-bootstrap .ag-column-drop-vertical-cell {\n margin-top: 4px;\n}\n.ag-theme-bootstrap .ag-column-drop-vertical {\n min-height: 50px;\n}\n.ag-theme-bootstrap .ag-column-drop-vertical-icon {\n margin-left: 4px;\n margin-right: 4px;\n}\n.ag-theme-bootstrap .ag-column-drop-vertical-empty-message {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n overflow: hidden;\n color: rgba(0, 0, 0, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.5));\n margin-top: 4px;\n}\n.ag-theme-bootstrap .ag-select-agg-func-popup {\n background: #FFF;\n background: var(--ag-background-color, #FFF);\n border-radius: 0px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n background: #FFF;\n background: var(--ag-background-color, #FFF);\n height: 70px;\n padding: 0;\n}\n.ag-theme-bootstrap .ag-select-agg-func-virtual-list-item {\n cursor: default;\n padding-left: 8px;\n}\n.ag-theme-bootstrap .ag-select-agg-func-virtual-list-item:hover {\n background-color: #bde2e5;\n background-color: var(--ag-selected-row-background-color, #bde2e5);\n}\n.ag-theme-bootstrap .ag-keyboard-focus .ag-select-agg-func-virtual-list-item:focus {\n outline: none;\n}\n.ag-theme-bootstrap .ag-keyboard-focus .ag-select-agg-func-virtual-list-item:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 1px;\n left: 1px;\n display: block;\n width: calc(100% - 2px);\n height: calc(100% - 2px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-bootstrap .ag-chart-menu {\n border-radius: 0px;\n background: #FFF;\n background: var(--ag-background-color, #FFF);\n}\n.ag-theme-bootstrap .ag-chart-menu-icon {\n opacity: 0.5;\n line-height: 24px;\n font-size: 24px;\n width: 24px;\n height: 24px;\n margin: 2px 0;\n cursor: pointer;\n border-radius: 0px;\n color: #000;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-bootstrap .ag-chart-menu-icon:hover {\n opacity: 1;\n}\n.ag-theme-bootstrap .ag-chart-mini-thumbnail {\n border: 1px solid;\n border-color: darkgrey;\n border-color: var(--ag-secondary-border-color, var(--ag-border-color, darkgrey));\n border-radius: 5px;\n margin: 5px;\n}\n.ag-theme-bootstrap .ag-chart-mini-thumbnail:nth-last-child(3), .ag-theme-bootstrap .ag-chart-mini-thumbnail:nth-last-child(3) ~ .ag-chart-mini-thumbnail {\n margin-left: auto;\n margin-right: auto;\n}\n.ag-theme-bootstrap .ag-ltr .ag-chart-mini-thumbnail:first-child {\n margin-left: 0;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-chart-mini-thumbnail:first-child {\n margin-right: 0;\n}\n\n.ag-theme-bootstrap .ag-ltr .ag-chart-mini-thumbnail:last-child {\n margin-right: 0;\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-chart-mini-thumbnail:last-child {\n margin-left: 0;\n}\n\n.ag-theme-bootstrap .ag-chart-mini-thumbnail.ag-selected {\n border-color: #000;\n border-color: var(--ag-minichart-selected-chart-color, var(--ag-checkbox-checked-color, var(--ag-foreground-color, #000)));\n}\n.ag-theme-bootstrap .ag-chart-settings-card-item {\n background: #000;\n background: var(--ag-foreground-color, #000);\n width: 8px;\n height: 8px;\n border-radius: 4px;\n}\n.ag-theme-bootstrap .ag-chart-settings-card-item.ag-selected {\n background-color: #000;\n background-color: var(--ag-minichart-selected-page-color, var(--ag-checkbox-checked-color, var(--ag-foreground-color, #000)));\n}\n.ag-theme-bootstrap .ag-chart-data-column-drag-handle {\n margin-left: 4px;\n}\n.ag-theme-bootstrap .ag-charts-settings-group-container {\n padding: 4px;\n}\n.ag-theme-bootstrap .ag-charts-data-group-container {\n padding: 3px 6px;\n}\n.ag-theme-bootstrap .ag-charts-data-group-container .ag-charts-data-group-item:not(.ag-charts-format-sub-level-group) {\n height: 20px;\n}\n.ag-theme-bootstrap .ag-charts-data-group-container .ag-list-item-hovered::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n height: 1px;\n background-color: #000;\n background-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-bootstrap .ag-charts-data-group-container .ag-item-highlight-top::after {\n top: 0;\n}\n.ag-theme-bootstrap .ag-charts-data-group-container .ag-item-highlight-bottom::after {\n bottom: 0;\n}\n.ag-theme-bootstrap .ag-charts-format-top-level-group-container {\n margin-left: 8px;\n padding: 4px;\n}\n.ag-theme-bootstrap .ag-charts-format-top-level-group-item {\n margin: 4px 0;\n}\n.ag-theme-bootstrap .ag-charts-format-sub-level-group-container {\n padding: 6px 6px;\n padding-bottom: 2px;\n}\n.ag-theme-bootstrap .ag-charts-format-sub-level-group-container > * {\n margin-bottom: 4px;\n}\n.ag-theme-bootstrap .ag-charts-group-container.ag-group-container-horizontal {\n padding: 4px;\n}\n.ag-theme-bootstrap .ag-chart-data-section,\n.ag-theme-bootstrap .ag-chart-format-section {\n display: -webkit-box;\n display: flex;\n margin: 0;\n}\n.ag-theme-bootstrap .ag-chart-menu-panel {\n background-color: #f6f6f6;\n background-color: var(--ag-control-panel-background-color, #f6f6f6);\n}\n.ag-theme-bootstrap .ag-ltr .ag-chart-menu-panel {\n border-left: solid 1px;\n border-left-color: darkgrey;\n border-left-color: var(--ag-border-color, darkgrey);\n}\n\n.ag-theme-bootstrap .ag-rtl .ag-chart-menu-panel {\n border-right: solid 1px;\n border-right-color: darkgrey;\n border-right-color: var(--ag-border-color, darkgrey);\n}\n\n.ag-theme-bootstrap .ag-date-time-list-page-title {\n -webkit-box-flex: 1;\n flex-grow: 1;\n text-align: center;\n}\n.ag-theme-bootstrap .ag-date-time-list-page-column-label {\n text-align: center;\n}\n.ag-theme-bootstrap .ag-date-time-list-page-entry {\n text-align: center;\n}\n.ag-theme-bootstrap .ag-checkbox-input-wrapper {\n font-family: \"agGridClassic\";\n font-size: 12px;\n line-height: 12px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 12px;\n height: 12px;\n background-color: var(--ag-checkbox-background-color);\n border-radius: 0px;\n display: inline-block;\n vertical-align: middle;\n -webkit-box-flex: 0;\n flex: none;\n}\n.ag-theme-bootstrap .ag-checkbox-input-wrapper input, .ag-theme-bootstrap .ag-checkbox-input-wrapper input {\n -webkit-appearance: none;\n opacity: 0;\n width: 100%;\n height: 100%;\n}\n.ag-theme-bootstrap .ag-checkbox-input-wrapper:focus-within, .ag-theme-bootstrap .ag-checkbox-input-wrapper:active {\n outline: none;\n}\n.ag-theme-bootstrap .ag-checkbox-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-bootstrap .ag-checkbox-input-wrapper::after {\n content: \"\\f108\";\n color: #000;\n color: var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #000));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-bootstrap .ag-checkbox-input-wrapper.ag-checked::after {\n content: \"\\f106\";\n color: #000;\n color: var(--ag-checkbox-checked-color, var(--ag-foreground-color, #000));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-bootstrap .ag-checkbox-input-wrapper.ag-indeterminate::after {\n content: \"\\f107\";\n color: #000;\n color: var(--ag-checkbox-indeterminate-color, var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #000)));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-bootstrap .ag-toggle-button-input-wrapper {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n width: 24px;\n height: 12px;\n background-color: #000;\n background-color: var(--ag-toggle-button-off-background-color, var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #000)));\n border-radius: 6px;\n position: relative;\n -webkit-box-flex: 0;\n flex: none;\n border: 1px solid;\n border-color: #000;\n border-color: var(--ag-toggle-button-off-border-color, var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #000)));\n}\n.ag-theme-bootstrap .ag-toggle-button-input-wrapper input {\n opacity: 0;\n height: 100%;\n width: 100%;\n}\n.ag-theme-bootstrap .ag-toggle-button-input-wrapper:focus-within {\n outline: none;\n}\n.ag-theme-bootstrap .ag-toggle-button-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-bootstrap .ag-toggle-button-input-wrapper.ag-checked {\n background-color: #000;\n background-color: var(--ag-toggle-button-on-background-color, var(--ag-checkbox-checked-color, var(--ag-foreground-color, #000)));\n border-color: #000;\n border-color: var(--ag-toggle-button-on-border-color, var(--ag-checkbox-checked-color, var(--ag-foreground-color, #000)));\n}\n.ag-theme-bootstrap .ag-toggle-button-input-wrapper::before {\n content: \" \";\n position: absolute;\n top: -1px;\n left: -1px;\n display: block;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n height: 12px;\n width: 12px;\n background-color: #FFF;\n background-color: var(--ag-toggle-button-switch-background-color, var(--ag-background-color, #FFF));\n border-radius: 6px;\n -webkit-transition: left 100ms;\n transition: left 100ms;\n border: 1px solid;\n border-color: #000;\n border-color: var(--ag-toggle-button-switch-border-color, var(--ag-toggle-button-off-border-color, var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #000))));\n}\n.ag-theme-bootstrap .ag-toggle-button-input-wrapper.ag-checked::before {\n left: calc(100% - 12px );\n border-color: #000;\n border-color: var(--ag-toggle-button-on-border-color, var(--ag-checkbox-checked-color, var(--ag-foreground-color, #000)));\n}\n.ag-theme-bootstrap .ag-radio-button-input-wrapper {\n font-family: \"agGridClassic\";\n font-size: 12px;\n line-height: 12px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 12px;\n height: 12px;\n background-color: var(--ag-checkbox-background-color);\n border-radius: 0px;\n display: inline-block;\n vertical-align: middle;\n -webkit-box-flex: 0;\n flex: none;\n border-radius: 12px;\n}\n.ag-theme-bootstrap .ag-radio-button-input-wrapper input, .ag-theme-bootstrap .ag-radio-button-input-wrapper input {\n -webkit-appearance: none;\n opacity: 0;\n width: 100%;\n height: 100%;\n}\n.ag-theme-bootstrap .ag-radio-button-input-wrapper:focus-within, .ag-theme-bootstrap .ag-radio-button-input-wrapper:active {\n outline: none;\n}\n.ag-theme-bootstrap .ag-radio-button-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-bootstrap .ag-radio-button-input-wrapper::after {\n content: \"\\f126\";\n color: #000;\n color: var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #000));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-bootstrap .ag-radio-button-input-wrapper.ag-checked::after {\n content: \"\\f127\";\n color: #000;\n color: var(--ag-checkbox-checked-color, var(--ag-foreground-color, #000));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-bootstrap input[class^=ag-][type=range] {\n -webkit-appearance: none;\n width: 100%;\n height: 100%;\n background: none;\n overflow: visible;\n}\n.ag-theme-bootstrap input[class^=ag-][type=range]::-webkit-slider-runnable-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: darkgrey;\n background-color: var(--ag-border-color, darkgrey);\n border-radius: 0px;\n border-radius: 0px;\n}\n.ag-theme-bootstrap input[class^=ag-][type=range]::-moz-range-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: darkgrey;\n background-color: var(--ag-border-color, darkgrey);\n border-radius: 0px;\n border-radius: 0px;\n}\n.ag-theme-bootstrap input[class^=ag-][type=range]::-ms-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: darkgrey;\n background-color: var(--ag-border-color, darkgrey);\n border-radius: 0px;\n border-radius: 0px;\n color: transparent;\n width: calc(100% - 2px);\n}\n.ag-theme-bootstrap input[class^=ag-][type=range]::-webkit-slider-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: 12px;\n height: 12px;\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n border: 1px solid;\n border-color: #000;\n border-color: var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #000));\n border-radius: 12px;\n -webkit-transform: translateY(-4.5px);\n transform: translateY(-4.5px);\n}\n.ag-theme-bootstrap input[class^=ag-][type=range]::-ms-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: 12px;\n height: 12px;\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n border: 1px solid;\n border-color: #000;\n border-color: var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #000));\n border-radius: 12px;\n}\n.ag-theme-bootstrap input[class^=ag-][type=range]::-moz-ag-range-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: 12px;\n height: 12px;\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n border: 1px solid;\n border-color: #000;\n border-color: var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #000));\n border-radius: 12px;\n}\n.ag-theme-bootstrap input[class^=ag-][type=range]:focus {\n outline: none;\n}\n.ag-theme-bootstrap input[class^=ag-][type=range]:focus::-webkit-slider-thumb {\n border-color: #000;\n border-color: var(--ag-checkbox-checked-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-bootstrap input[class^=ag-][type=range]:focus::-ms-thumb {\n border-color: #000;\n border-color: var(--ag-checkbox-checked-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-bootstrap input[class^=ag-][type=range]:focus::-moz-ag-range-thumb {\n border-color: #000;\n border-color: var(--ag-checkbox-checked-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-bootstrap input[class^=ag-][type=range]:active::-webkit-slider-runnable-track {\n background-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-bootstrap input[class^=ag-][type=range]:active::-moz-ag-range-track {\n background-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-bootstrap input[class^=ag-][type=range]:active::-ms-track {\n background-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-bootstrap input[class^=ag-][type=range]:disabled {\n opacity: 0.5;\n}\n.ag-theme-bootstrap .ag-icon {\n color: #333;\n margin: 1px 1px 2px 1px;\n}\n.ag-theme-bootstrap .ag-icon-tree-closed::before {\n content: \"\\f10b\";\n}\n.ag-theme-bootstrap .ag-icon-tree-open::before {\n content: \"\\f111\";\n}\n.ag-theme-bootstrap .ag-header, .ag-theme-bootstrap .ag-column-drop-cell {\n background-image: none;\n}\n.ag-theme-bootstrap .ag-tab {\n border: 1px solid transparent;\n padding: 4px 8px;\n margin: 4px;\n margin-bottom: -1px;\n}\n.ag-theme-bootstrap .ag-tabs-body {\n margin: 2px 0;\n}\n.ag-theme-bootstrap .ag-tab-selected {\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n border-bottom-color: transparent;\n}\n.ag-theme-bootstrap .ag-tabs-header {\n background-color: var(--ag-header-background-color);\n border-bottom: 1px solid;\n border-bottom-color: darkgrey;\n border-bottom-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-bootstrap .ag-filter .ag-filter-apply-panel {\n -webkit-box-pack: start;\n justify-content: flex-start;\n}\n.ag-theme-bootstrap .ag-menu-option-active {\n background-color: #bde2e5;\n background-color: var(--ag-selected-row-background-color, #bde2e5);\n}\n.ag-theme-bootstrap .ag-column-drop-cell {\n border: 1px solid;\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n border-radius: 0;\n}\n.ag-theme-bootstrap .ag-column-drop-cell-button .ag-icon {\n border: 1px solid transparent;\n}\n.ag-theme-bootstrap .ag-column-drop-cell-button:hover .ag-icon {\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-bootstrap .ag-panel-title-bar-button-icon {\n font-size: 20px;\n line-height: 20px;\n}\n.ag-theme-bootstrap .ag-menu-option-part {\n padding-top: 4px;\n padding-bottom: 4px;\n}\n.ag-theme-bootstrap .ag-column-drop-vertical-title-bar {\n margin-top: 4px;\n margin-left: 4px;\n}\n.ag-theme-bootstrap .ag-column-drop-vertical-title {\n margin-left: 4px;\n}\n.ag-theme-bootstrap .ag-column-drop-vertical-empty-message {\n margin-left: 24px;\n}\n", ""]);
58425// Exports
58426module.exports = exports;
58427
58428
58429/***/ }),
58430/* 291 */
58431/***/ (function(module, exports, __webpack_require__) {
58432
58433var api = __webpack_require__(276);
58434 var content = __webpack_require__(292);
58435
58436 content = content.__esModule ? content.default : content;
58437
58438 if (typeof content === 'string') {
58439 content = [[module.i, content, '']];
58440 }
58441
58442var options = {};
58443
58444options.insert = "head";
58445options.singleton = false;
58446
58447var update = api(content, options);
58448
58449
58450
58451module.exports = content.locals || {};
58452
58453/***/ }),
58454/* 292 */
58455/***/ (function(module, exports, __webpack_require__) {
58456
58457// Imports
58458var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58459exports = ___CSS_LOADER_API_IMPORT___(false);
58460// Module
58461exports.push([module.i, ".ag-theme-dark {\n -webkit-font-smoothing: antialiased;\n color: #ccc;\n color: var(--ag-foreground-color, #ccc);\n font-family: \"Helvetica Neue\", sans-serif;\n font-size: 14px;\n line-height: normal;\n}\n@font-face {\n font-family: \"agGridClassic\";\n src: url(\"data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABXwAAsAAAAAKrgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAAmMAAAR2Zoxou09TLzIAAANsAAAAQQAAAFZWVlMSY21hcAAAA7AAAAIbAAAFnIlT7KJnbHlmAAAFzAAADBkAABg4HeN0mGhlYWQAABHoAAAANAAAADZ2z8SBaGhlYQAAEhwAAAAeAAAAJAfTBCxobXR4AAASPAAAABgAAAE4yyH/7GxvY2EAABJUAAAAdgAAAJ5JCULobWF4cAAAEswAAAAfAAAAIAFkAKpuYW1lAAAS7AAAATMAAAJS8kTiWnBvc3QAABQgAAABzQAAArBhTs2TeJx9lMtOU1EUhv/DaREoAlG8pCIiGi+oiMrxXHpoy6WH1tbEgTEOnGBMjAlxxHP4AD4BQ5/AB3DgE/gADhw6Nn5r9WCFAey03Xtd/vXvf62NAklTWlNTYzvF4KVm9vcOPqquioZ/5v9/H+x/eL+niaMTvor/TiioTGtGy3qtA30LZoKD4HBsPqyHr8J34efwS/hLIVFLWiW6pqesWAnfkVJlaijXmMaxxew34BOymmq59RyMqu7pqqfL1IzJ6Tniip7xmQOncJyOtolKWYbZ4XvAuqfZUyJy3Qc/g80m1gqKLKJJrnlNgp4Q01Sb/Cb+89TcoXaEv8BXwK6KpcW+rQtwsoyKq9rVGz3Bbzc1lKzMSfnE2vVz5Kc1NDmKaoHToJZhr8LgyN6gakLGY9AzorZKRVd0k+wGOB3Q2p694dnLRCZwS3WDnd0zges08Zle6K1X3S1zOq7pUIFV2I/shePlenjM2gZrQOwjOIys1p8H1IrUx1+jV4X29UmH+qrv+qGf+q0/OqOL1En8Dtug75yqzQQKnozu4m39s9pdx5mBk1HHIya5ecPVifH1Sg2tWo2bmTop+whr6vFT8LT4Lmxy+lGhRuR1rdNV1ibnmOiz5XQ2WdOudI8pmPUJ7vss1HWHvi064nAOc7S+CqLthvyuuG5N8Ba8b6auvbA5P9lbsH7XmdVr/EbcMHOdnuO9jsWQRpYlz8phbxjr+HNYj6oZqwVYresuPpuxvr+OLpVucZ8hk4QIexl9n6/bMMjKlzpPD419u+zYJY+LPSvgP0FUvvDUtbOZLuBm8zH4C3G+c6UAeJxjYGSazTiBgZWBgamKaQ8DA0MPhGZ8wGDIyAQUZWBlZsAKAtJcUxgOMOh+NGJ+AeRGMX9i4ALSjCA5AOaCCwgAAAB4nLXUB1IbQRCF4V+BLMA22eQcBQaTcxAiHwJnCgcKZ87hs/kefQL8Rt0+AK7yVn3bO1Or3ZlavQaqgJzMSB6ytWR0RSar2UxlPkd9ZT7Pb40L1JLVdZErbrizhft7zRa55Jpby1RGf4+M7i7QwxjLGh2yxAE7lFnlXDN7rLPPLkdsssEJK2yzxjFnbFHilAv9Pq0irzVWU6P31mklDXpiI0084jEttNJGOx100kW33tRLH/0MMMgQw4wwyjgTTDLFtHZSZJY5njHPgs7PNVrUIqt52HH4wPvTsXSwU149X97TjnePNje02e2147Ot0unFPzzsPxyFdMr9itEZ6Yu6tNvLsCQvwoG8DDvyKpTldViVN+Fc3ob0b3gX9uQqrMt12Jf3YVc+hCP5GDblU9iQm3Ait2FFPodt+RLW5Gs4lm8h7f172JIfoSQ/w6ncBX1Ay7iUF8s6Us25lC/Lu5Qxq3Ipe1btSLXGkWqtI9U6R6r1LmXSGhypFlz6ktboSLXJkWqzU3awoBRhQXnCnjglC2txyhjW6pQ2rM0pd1i7UwKxDqcsYp1OqcS6nPKJPXVKKtbtlFmsxym9WK9TjrE+p0Rj/U7ZxgacUo4NOuUdG3JKPjbs1AOwEadugI069QVszKlDYONOvQKbcKkv2qRLebApp96BTTv1FGzGqa9gRac+g806dRxszlXuCepC2LyrPHPBsfgHpKymyQB4nO1Ye2wUxxnfmfXt3t57d+92zxycvXf4FkNico+99QMMGOOzcWzTnIMJaQ04GMWYRDEESJqktAElJErSShFVqUmAqj0XmlQFI+XRBxKpGleRGqePNKnyKn+0Sdq4pHXS6uRb+s3eww8ooPSfVu3Zu/P6Zuabb34z3+9bClHwo5P0IMVRFFJkVvEpIq3QSWN4717Un7v/9dfxAfzT8fERtBftBRFT/n36faoSChqr6jKr8oqZ6ApvJjKvmAmroHNdqbGxlnWIXgdpap2RW9cCaZdhkPpUF8J0JdcFVS1dlzblu1LFOdfTj1FWKLAqBw8fRt9+th/1ob7+Z47jXc9uRX3G01ufyX1YlMcTeIKym/KgC2gD+uCJljOjqTNnUqNnWkbRqmJutOUMZaGoiwas6wNKpMKUSi2hllKURQnVII1PNKK4EgsiH+91IVoJMZCRoCYJTREU58NVcV+YhpTenhOV+lCoXsEfwUupV3Iej9/vwRd4Wc59N51GHen0SHc3DtWF8Mfwgv+cG17012U+x/N+P4//wsvGqPF2JoOOGZth2bP0WgzrKSoSnlbOMkcnFsF6RZnebioRKik1MUOdAWPi74kT59fSHxSVKCp180xdXjRsP1t1EB1dRM3VRb02XWhFU66oyO+N06jzKloYzgzZ0lnzX9vsV5r5KpOS9cKi76G3AjqslJ+iAHgyh2i9AjEs/Pm8EsySUCMq/pOxqf42I4cax8Ze/oHdXu6WomuikrscnUPHG6DBeAktHxtrdDqDgUh5KBoNlVfND5LhGXOOQ/QhmI0FvLphbTJFVfnAbPDQc1J03DhNNxmnM7OS7Aj8UEcGfqiT5KmC7h8UbLX02qyFAMe+sBbW4lqcHgwRi4Hl8hYkljMtQyxnvDJi/vIWFAoWnChYUAQJHn8E23aGqDRCUUV9mugmc5U86BPnFS0MN4XCK7Sm8HEND2cMRwZNpo1R1DFijKbxsFnOQvk4VGap0l3wAP0AOdscgu1gOQQ3go4mkbDHmDBfxsQeJMALb59VRAIU8za/OEXfSf+Z8oB1FlCt1Jepp2DoCOykZYZF6LCGQEFGlhqQWOV14XCopkxLNOI4saWXCUXUGhSGDt4giiX1RhSTZGLgEFRriWQsSMcJPmqQWoOJuWNBXOiU71OBJDmI4WZK6tFGsj9enxu5MGzPUhq6S/Qd7La7LEanqusqTqp6y6jRhB7BiLZ4foeNTZwQ9Hpkr8dmcfoVUV4o2pzWMqvXLc93yJUSg60u2ykhJC3gnR7OZWWtbgcv2QWPN8ALFZLg5602J1tmcQcFxm4RBLtTsC1bshjT2Gq3WrCGWZvbweA4jWyCFf/RuudBC65Vp141lXlkfOpR+p7flHN87mu/dVQERasQqKzyhbSId74qcG6b0+dNxCqXSH6/ze1yl1dLbnuVYHfZy3mHLLh4K8OKSk2V6PT5fR6b3S2ITs7O0SxrYcUFT/zwR5ydsbFOm4X7Nee2ci7uF27O5hGo/+/df/XeFf34QdOP83FgC+TgfufYM/3G08bT/ehe7MpNQuEo2tIPomVz9rrtqvusQ2skkYzHpAq0ApNtk3xeN5Jhe1woFFmKWAKEiJa48vZcf0s7x1q8bl70LFtpczFOq1v0dXY7bJzgFco29JRxPNRcybBj9w66nHbJI/o3bnQLFovHwS+44163T3BxHLPvi4yV4d2mTf4X1vjZeAPxelfy3k8YjquxhtFMZtr3vEzrVDkVpZbB/LqcjEuyJLvAoQM7RMkVSAuHwKerYg1WGTaIZEmXGWJp+EuCgGl1FeSRkoisaHr4vqEN1Xc0aqsqXcYva9pVW+OS2uv3/SH5+WW25kT0sc7052Jf2LhlfWPd0tjG3eiNdS0uQQoq9obraNeiG4Sym9r3L7890hxfZEf7bBilLYwrYLzN1G7QYq3Nt0l++8r5Ni5R1Rhb+9CNxuForyjLFfPi3YHptcjgQxdRSVgLWYdJRwq6JiFP6iS9qDS5ldSqyHIUJnIyiOhoiqyga8/9D371fqLkLbu+cldzYmVv3+13bV6/1lTW0XL73oGUDa1Ftq5kKlm1KBlZRvvodPuDezq6HI61keWx9gPtN5+MtW7QaxlGj20VZamyvPbWRLK3nnbOX4ys9nntXiuLqTx3M3nODuBSEGmICuJVLeqLa2mTx2ToQWC9m0ay3d0FWTwF/J02oxI+zAOhVVkZrUhjz0sv1WazeMJwoEmj+dw5KBBxR4FfnJ3FowJUxTSb14HdFB90lbwCHGgkk8ma/8BC/lUOHctkxjMm8Tp2aQIqWQrrPgtnW6GqqGrqesJ9TDIHXKtA60oPH9YUFPZBLJF/quBBx4HVgY2A4ZGUsCMz3dyNOgvTmerQg2kwXyadhSSbxqlsTkij493AndLp/xg95uxtVZiPIxKdsXgqnc5dMDc3O2Nn8z7jGL3e9BkykD0SoqJtJ/Je4iSuR8dO5OPAk4Ro4oufXvyU/hv9VypBDeZPB+MmdB08txrR4aCDc5bztS4UxFDRiIhb16IRkoUmcv+yZjORk+MS6aQm1CgRM+WDuNgM5AEa9aQawV+q83oX1R6o62y/sWOnF351rbZyAWEelzHlAa+gtbUF9s8XxADnx+XVVskmCUis67ixvbPuQO0iEBd8yCZZF/ux084FRDGwP9DWpgneQDlTBoMgodzWWkfGhZk62w/DTKSw0xyglfO4tJhVYOYFWtuSXjFwINDaGuB4T8hfbcWMh8xkqnSg9jCIC24WW6v9IQ/H2ojggYDoTba1BuYxgjWmuTxcq7mKmef2EJymCvPmZOF4wKUJcQLcnHBMYPMgWojrmhpmfTh1eM/hN96AV6aU+cajfX2P9uEfz6okmdzzfaTJ9IEzY9zoNUberBnUIx3ucFm/cuz90bup6HDtEfR26r3oU7VPXSUAzzWm3rnhCIg/8F4qCmnJh0zHaWaEhgoPfWjqJ3RT/snmIzEShxX9+2dZm25+toAlkovvymu7753UDUf0YZRIvUuUvtrasoW1PQkmOaIfKX0veRzOpIXsMDmN6FbzJKJY8YLNn8MA/SvKOf0NxuRvMhoe6EcqUvsHBvqNN403+wfwqe1QA7ntxkPboQ7athd4wEWwxYeUl1pIxQkPICfMQ5xXJXFVHvBMSQs5s/EYyZLYeik5jqZvBt5NTufkwbuHmtasaRq62/h491BTc3PT0G40nnsuuaopNbRlk14ny4vbtFWrodBbW+eXF9MfgvBu48LunUR4527kgW5rPsk9t1iW6/TevqFU08pkW76wZai1aVWyhPsmehB2252PViFEjcvkpoSoldxq27KZkbRxOo0maX+uHw+nR8j992/2RaU4GUoozMthVg3r5DrGE72nsul09lQvmgT3NzaQzQ6g2nTex5QwpgArqKVWXB5lhOSYMGsAn6pZIPIm7DL/Dc881OR0i8QBkC8nczCXu3Mfwdy+EXpl7kUc5OV/OBuGhhocZx1msmM8dx63yJegD1/I5OGHU3DBv+Dn0TLHjH5OnMp8iZfnYND09vjxORjEM/BTDVImKDwEQpUELR4CIdaElJe0hEyiTFrQ5MMlpLiL6DlogqVO37TlPAAFfr1bLo+Umwkuzvf1EuHePhDW62ZjudrkYZfDsmyqSGArmYAm34oiIuHpNShhho2XhfPDQ0WNzhd1fGT1roO7Vpuva9bS2Nxc6LJ613T8dbTgS1Wdg0fR8P7v9aMtxtH+E7mf49TJfCh2YqSE40HAsZOSCA8DWlC6oyyFT71xAPDz6WgIt4aixuiO+vHx+h3d4MDfQguNt8iXLrRw/o6G8fGGHejJaXzjYTI6sMAR/E1jFA8bp0v30DBgH5NvOzzhF2gSdeS2zW3DeepBrwLSODpnTA4RgtKRlyi0ZegUwRUHATuiM7nXjFf2nEUv4NdyryFtN+Sm9WolO0uOACiW2wbgJNUlThGmUlQP3P2Sdy6nqECkrsAokjGZlmIlpsB4obXAE0gP1qyTEcEDioTyBSmGb2LZnhn0oYcV2U6G2QBcgDjnHtbLhuDpIS4e6MEGhukEiZ4ZNKCHZbH/Opdr6luuiAtSutcVefVSmY7Zo6Dvz56k41I1pj65DkaE4WBU1QnD/xPnjHQ0AAAAeJxjYGRgYADiY81JvPH8Nl8ZuJlfAAWiOB/va4DR/7/9/8b8mfkTUCUHAxOQZAAAhKEPOXicY2BkYGB+wcAAIv9/+/+V+TMDIwMq8AMAnl4HBgAAeJxjYGBgYH5Bb/z/Gy3NZqADAAB/FDOneJxjYAACCYYghiyGFoYLjGKMYYx9jAcY3zCZMEUwVTFHsJix+LEcYDViLWK9wWbC5sWWwraB7Qu7BXsAewaHAIcTxxSODZxMnCKcZpw9nKs4T3A+4nLhCuOaw/WNm4/bgtuNO4Q7ibuAu4V7Eo8M6RAAslkbZAAAeJxjYGRgYPBjmMfAwwACTEDMBYQMDP/BfAYAIQYCDwB4nH2QvU7DMBSFT/qHaAWqBGJgMgsLUvqz0bVSs3foniZ2miqNg+NW6s5z8AQ8R5+Dp2DmxHgpErUl57vfPfcOATDECQGaE+DGvc1p4YrVL7dJ95475CfPXQwQeu7Rv3ru4wULzwPc4Y0bgs41zSPePbdwiw/PbfpPzx3yyXMXD/jy3KP/9tzHKhh6HuA5UHEWmTydF3Fd58lSZvsiNmfurFhJU+e6FJNwfOYjWUoTW5mK9VHUh2xqrRLK6J1Y6NLKotCiMnorExturK1mo5HyPkz0DjEyRDDIkWKOgnXNmyPBEpK9vXPmQu7/zoobjGONEgIT/vfxhXzEfOlmYlh+U86sceRb48CpKa2FYq2Y0diRFm53ky54NU3leluahD7Exk1VmGHEq/7kQ6a46QfFq20TAHicbZIHb9swEIX9xZKt2GmTpm269x5q6+6990h/A0PRMhGZFEjKdvLry9pBgQA9gIf3Dod37w5sLbUW0Wv9PzZZok1CSocuGcv06LPCAQ6yyhqHWOcwRzjKBsc4zglOcorTnOEs5zjPBS5yictc4SrXuM4NbnKL2+Tc4S73GHCfBzzkEY95wlOe8ZwXvOQVr3nDW97xng985BOf+cJXvvGdH/zkF5v8bvVFWTpViqCt6Qjn7NS3hZcdKYxUVSpHwoU1OVJye8vO8jlQxca/gjaFCsqNtRFBrf8rN2avc0Xayrq81pG4biTN2PietCY4IYMqEmnrnVQ6631b+kkaXz5ICuVlqmbRQHee80GmZrWIs4pltaNyXwk/akfUGeoqjk+H2vmQlE7XaelsU3fnOSrFxpBUahg6lTbRT7eyotCmzMZipsd6VyVjZZos+l8wo2YhMdaovrEhF1Vlp6pI66iiuvOcD9q1NmmtJzZktVMTbRu/5qKozbeaEKzJ7XC4ur9gUqfLUUi8mKieH0fZvLBTswf/2usv4LwtW+CmTkI823pwSu2/c9aYxTYIShyKgMZimOKRVIzYZotZ/CMFYxpqdpgwZLfV+gPpZLiDAAAA\") format(\"woff\");\n font-weight: normal;\n font-style: normal;\n}\n.ag-theme-dark .ag-icon {\n font-family: \"agGridClassic\";\n font-size: 12px;\n line-height: 12px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.ag-theme-dark .ag-icon-aggregation::before {\n content: \"\\f101\";\n}\n.ag-theme-dark .ag-icon-arrows::before {\n content: \"\\f102\";\n}\n.ag-theme-dark .ag-icon-asc::before {\n content: \"\\f103\";\n}\n.ag-theme-dark .ag-icon-cancel::before {\n content: \"\\f104\";\n}\n.ag-theme-dark .ag-icon-chart::before {\n content: \"\\f105\";\n}\n.ag-theme-dark .ag-icon-color-picker::before {\n content: \"\\f109\";\n}\n.ag-theme-dark .ag-icon-columns::before {\n content: \"\\f10a\";\n}\n.ag-theme-dark .ag-icon-contracted::before {\n content: \"\\f10b\";\n}\n.ag-theme-dark .ag-icon-copy::before {\n content: \"\\f10c\";\n}\n.ag-theme-dark .ag-icon-cross::before {\n content: \"\\f10d\";\n}\n.ag-theme-dark .ag-icon-csv::before {\n content: \"\\f10e\";\n}\n.ag-theme-dark .ag-icon-desc::before {\n content: \"\\f10f\";\n}\n.ag-theme-dark .ag-icon-excel::before {\n content: \"\\f110\";\n}\n.ag-theme-dark .ag-icon-expanded::before {\n content: \"\\f111\";\n}\n.ag-theme-dark .ag-icon-eye-slash::before {\n content: \"\\f112\";\n}\n.ag-theme-dark .ag-icon-eye::before {\n content: \"\\f113\";\n}\n.ag-theme-dark .ag-icon-filter::before {\n content: \"\\f114\";\n}\n.ag-theme-dark .ag-icon-first::before {\n content: \"\\f115\";\n}\n.ag-theme-dark .ag-icon-grip::before {\n content: \"\\f116\";\n}\n.ag-theme-dark .ag-icon-group::before {\n content: \"\\f117\";\n}\n.ag-theme-dark .ag-icon-last::before {\n content: \"\\f118\";\n}\n.ag-theme-dark .ag-icon-left::before {\n content: \"\\f119\";\n}\n.ag-theme-dark .ag-icon-linked::before {\n content: \"\\f11a\";\n}\n.ag-theme-dark .ag-icon-loading::before {\n content: \"\\f11b\";\n}\n.ag-theme-dark .ag-icon-maximize::before {\n content: \"\\f11c\";\n}\n.ag-theme-dark .ag-icon-menu::before {\n content: \"\\f11d\";\n}\n.ag-theme-dark .ag-icon-minimize::before {\n content: \"\\f11e\";\n}\n.ag-theme-dark .ag-icon-next::before {\n content: \"\\f11f\";\n}\n.ag-theme-dark .ag-icon-none::before {\n content: \"\\f120\";\n}\n.ag-theme-dark .ag-icon-not-allowed::before {\n content: \"\\f121\";\n}\n.ag-theme-dark .ag-icon-paste::before {\n content: \"\\f122\";\n}\n.ag-theme-dark .ag-icon-pin::before {\n content: \"\\f123\";\n}\n.ag-theme-dark .ag-icon-pivot::before {\n content: \"\\f124\";\n}\n.ag-theme-dark .ag-icon-previous::before {\n content: \"\\f125\";\n}\n.ag-theme-dark .ag-icon-right::before {\n content: \"\\f128\";\n}\n.ag-theme-dark .ag-icon-save::before {\n content: \"\\f129\";\n}\n.ag-theme-dark .ag-icon-small-down::before {\n content: \"\\f12a\";\n}\n.ag-theme-dark .ag-icon-small-left::before {\n content: \"\\f12b\";\n}\n.ag-theme-dark .ag-icon-small-right::before {\n content: \"\\f12c\";\n}\n.ag-theme-dark .ag-icon-small-up::before {\n content: \"\\f12d\";\n}\n.ag-theme-dark .ag-icon-tick::before {\n content: \"\\f12e\";\n}\n.ag-theme-dark .ag-icon-tree-closed::before {\n content: \"\\f12f\";\n}\n.ag-theme-dark .ag-icon-tree-indeterminate::before {\n content: \"\\f130\";\n}\n.ag-theme-dark .ag-icon-tree-open::before {\n content: \"\\f131\";\n}\n.ag-theme-dark .ag-icon-unlinked::before {\n content: \"\\f132\";\n}\n.ag-theme-dark .ag-icon-row-drag::before {\n content: \"\\f116\";\n}\n.ag-theme-dark .ag-left-arrow::before {\n content: \"\\f119\";\n}\n.ag-theme-dark .ag-right-arrow::before {\n content: \"\\f128\";\n}\n.ag-theme-dark .ag-root-wrapper {\n background-color: #302e2e;\n background-color: var(--ag-background-color, #302e2e);\n}\n.ag-theme-dark [class^=ag-], .ag-theme-dark [class^=ag-]:focus, .ag-theme-dark [class^=ag-]:after, .ag-theme-dark [class^=ag-]:before {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n outline: none;\n}\n.ag-theme-dark [class^=ag-]::-ms-clear {\n display: none;\n}\n.ag-theme-dark .ag-checkbox .ag-input-wrapper,\n.ag-theme-dark .ag-radio-button .ag-input-wrapper {\n overflow: visible;\n}\n.ag-theme-dark .ag-range-field .ag-input-wrapper {\n height: 100%;\n}\n.ag-theme-dark .ag-toggle-button {\n -webkit-box-flex: 0;\n flex: none;\n width: unset;\n min-width: unset;\n}\n.ag-theme-dark .ag-ltr .ag-label-align-right .ag-label {\n margin-left: 4px;\n}\n\n.ag-theme-dark .ag-rtl .ag-label-align-right .ag-label {\n margin-right: 4px;\n}\n\n.ag-theme-dark input[class^=ag-] {\n margin: 0;\n background-color: #302e2e;\n background-color: var(--ag-background-color, #302e2e);\n}\n.ag-theme-dark textarea[class^=ag-],\n.ag-theme-dark select[class^=ag-] {\n background-color: #302e2e;\n background-color: var(--ag-background-color, #302e2e);\n}\n.ag-theme-dark input[class^=ag-]:not([type]),\n.ag-theme-dark input[class^=ag-][type=text],\n.ag-theme-dark input[class^=ag-][type=number],\n.ag-theme-dark input[class^=ag-][type=tel],\n.ag-theme-dark input[class^=ag-][type=date],\n.ag-theme-dark input[class^=ag-][type=datetime-local],\n.ag-theme-dark textarea[class^=ag-] {\n font-size: inherit;\n line-height: inherit;\n color: inherit;\n border-width: 1px;\n border-style: solid;\n border-color: #000;\n border-color: var(--ag-input-border-color, #000);\n}\n.ag-theme-dark input[class^=ag-]:not([type]):disabled,\n.ag-theme-dark input[class^=ag-][type=text]:disabled,\n.ag-theme-dark input[class^=ag-][type=number]:disabled,\n.ag-theme-dark input[class^=ag-][type=tel]:disabled,\n.ag-theme-dark input[class^=ag-][type=date]:disabled,\n.ag-theme-dark input[class^=ag-][type=datetime-local]:disabled,\n.ag-theme-dark textarea[class^=ag-]:disabled {\n color: rgba(204, 204, 204, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(204, 204, 204, 0.5));\n background-color: rgba(48, 46, 46, 0.3);\n background-color: var(--ag-input-disabled-background-color, rgba(48, 46, 46, 0.3));\n border-color: rgba(0, 0, 0, 0.3);\n border-color: var(--ag-input-disabled-border-color, rgba(0, 0, 0, 0.3));\n}\n.ag-theme-dark input[class^=ag-]:not([type]):focus,\n.ag-theme-dark input[class^=ag-][type=text]:focus,\n.ag-theme-dark input[class^=ag-][type=number]:focus,\n.ag-theme-dark input[class^=ag-][type=tel]:focus,\n.ag-theme-dark input[class^=ag-][type=date]:focus,\n.ag-theme-dark input[class^=ag-][type=datetime-local]:focus,\n.ag-theme-dark textarea[class^=ag-]:focus {\n outline: none;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-dark input[class^=ag-]:not([type]):invalid,\n.ag-theme-dark input[class^=ag-][type=text]:invalid,\n.ag-theme-dark input[class^=ag-][type=number]:invalid,\n.ag-theme-dark input[class^=ag-][type=tel]:invalid,\n.ag-theme-dark input[class^=ag-][type=date]:invalid,\n.ag-theme-dark input[class^=ag-][type=datetime-local]:invalid,\n.ag-theme-dark textarea[class^=ag-]:invalid {\n border-width: 2px;\n border-style: solid;\n border-color: var(--ag-input-border-color-invalid);\n}\n.ag-theme-dark input[class^=ag-][type=number] {\n -moz-appearance: textfield;\n}\n.ag-theme-dark input[class^=ag-][type=number]::-webkit-outer-spin-button, .ag-theme-dark input[class^=ag-][type=number]::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n.ag-theme-dark input[class^=ag-][type=range] {\n padding: 0;\n}\n.ag-theme-dark .ag-drag-handle {\n color: #ccc;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #ccc));\n}\n.ag-theme-dark .ag-list-item, .ag-theme-dark .ag-virtual-list-item {\n height: 20px;\n}\n.ag-theme-dark .ag-keyboard-focus .ag-virtual-list-item:focus {\n outline: none;\n}\n.ag-theme-dark .ag-keyboard-focus .ag-virtual-list-item:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-dark .ag-select-list {\n background-color: #302e2e;\n background-color: var(--ag-background-color, #302e2e);\n overflow-y: auto;\n overflow-x: hidden;\n}\n.ag-theme-dark .ag-list-item {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ag-theme-dark .ag-list-item.ag-active-item {\n background-color: var(--ag-row-hover-color);\n}\n.ag-theme-dark .ag-select-list-item {\n padding-left: 4px;\n padding-right: 4px;\n cursor: default;\n -moz-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n}\n.ag-theme-dark .ag-select-list-item span {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n.ag-theme-dark .ag-select .ag-picker-field-wrapper {\n background-color: #302e2e;\n background-color: var(--ag-background-color, #302e2e);\n min-height: 20px;\n cursor: default;\n}\n.ag-theme-dark .ag-select.ag-disabled .ag-picker-field-wrapper:focus {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.ag-theme-dark .ag-select:not(.ag-cell-editor) {\n height: 20px;\n}\n.ag-theme-dark .ag-select .ag-picker-field-display {\n margin: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ag-theme-dark .ag-select .ag-picker-field-icon {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-dark .ag-select.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-dark .ag-rich-select {\n background-color: #302e2e;\n background-color: var(--ag-control-panel-background-color, #302e2e);\n}\n.ag-theme-dark .ag-rich-select-list {\n width: 100%;\n min-width: 200px;\n height: 162.5px;\n}\n.ag-theme-dark .ag-rich-select-value {\n padding: 0 4px 0 12px;\n height: 25px;\n border-bottom: solid 1px;\n border-bottom-color: darkgrey;\n border-bottom-color: var(--ag-secondary-border-color, var(--ag-border-color, darkgrey));\n}\n.ag-theme-dark .ag-rich-select-virtual-list-item {\n cursor: default;\n height: 20px;\n}\n.ag-theme-dark .ag-rich-select-virtual-list-item:hover {\n background-color: var(--ag-row-hover-color);\n}\n.ag-theme-dark .ag-rich-select-row {\n padding-left: 12px;\n}\n.ag-theme-dark .ag-rich-select-row-selected {\n background-color: #4a708b;\n background-color: var(--ag-selected-row-background-color, #4a708b);\n}\n.ag-theme-dark .ag-row-drag,\n.ag-theme-dark .ag-selection-checkbox,\n.ag-theme-dark .ag-group-expanded,\n.ag-theme-dark .ag-group-contracted {\n color: #ccc;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #ccc));\n}\n.ag-theme-dark .ag-ltr .ag-row-drag, .ag-theme-dark .ag-ltr .ag-selection-checkbox, .ag-theme-dark .ag-ltr .ag-group-expanded, .ag-theme-dark .ag-ltr .ag-group-contracted {\n margin-right: 12px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-drag, .ag-theme-dark .ag-rtl .ag-selection-checkbox, .ag-theme-dark .ag-rtl .ag-group-expanded, .ag-theme-dark .ag-rtl .ag-group-contracted {\n margin-left: 12px;\n}\n\n.ag-theme-dark .ag-cell-wrapper > *:not(.ag-cell-value):not(.ag-group-value) {\n height: min(var(--ag-line-height, 23px), 23px);\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-flex: 0;\n flex: none;\n}\n.ag-theme-dark .ag-group-expanded,\n.ag-theme-dark .ag-group-contracted {\n cursor: pointer;\n}\n.ag-theme-dark .ag-group-title-bar-icon {\n cursor: pointer;\n -webkit-box-flex: 0;\n flex: none;\n color: #ccc;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #ccc));\n}\n.ag-theme-dark .ag-ltr .ag-group-child-count {\n margin-left: 2px;\n}\n\n.ag-theme-dark .ag-rtl .ag-group-child-count {\n margin-right: 2px;\n}\n\n.ag-theme-dark .ag-group-title-bar {\n background-color: #201f1f;\n background-color: var(--ag-subheader-background-color, #201f1f);\n padding: 4px;\n}\n.ag-theme-dark .ag-group-toolbar {\n padding: 4px;\n}\n.ag-theme-dark .ag-disabled-group-title-bar, .ag-theme-dark .ag-disabled-group-container {\n opacity: 0.5;\n}\n.ag-theme-dark .group-item {\n margin: 2px 0;\n}\n.ag-theme-dark .ag-label {\n white-space: nowrap;\n}\n.ag-theme-dark .ag-ltr .ag-label {\n margin-right: 4px;\n}\n\n.ag-theme-dark .ag-rtl .ag-label {\n margin-left: 4px;\n}\n\n.ag-theme-dark .ag-label-align-top .ag-label {\n margin-bottom: 2px;\n}\n.ag-theme-dark .ag-ltr .ag-slider-field, .ag-theme-dark .ag-ltr .ag-angle-select-field {\n margin-right: 8px;\n}\n\n.ag-theme-dark .ag-rtl .ag-slider-field, .ag-theme-dark .ag-rtl .ag-angle-select-field {\n margin-left: 8px;\n}\n\n.ag-theme-dark .ag-angle-select-parent-circle {\n width: 24px;\n height: 24px;\n border-radius: 12px;\n border: solid 1px;\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n background-color: #302e2e;\n background-color: var(--ag-background-color, #302e2e);\n}\n.ag-theme-dark .ag-angle-select-child-circle {\n top: 4px;\n left: 12px;\n width: 6px;\n height: 6px;\n margin-left: -3px;\n margin-top: -4px;\n border-radius: 3px;\n background-color: #ccc;\n background-color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #ccc));\n}\n.ag-theme-dark .ag-picker-field-wrapper {\n border: 1px solid;\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n border-radius: 5px;\n}\n.ag-theme-dark .ag-picker-field-button {\n background-color: #302e2e;\n background-color: var(--ag-background-color, #302e2e);\n color: #ccc;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #ccc));\n}\n.ag-theme-dark .ag-dialog.ag-color-dialog {\n border-radius: 5px;\n}\n.ag-theme-dark .ag-color-picker .ag-picker-field-display {\n height: 12px;\n}\n.ag-theme-dark .ag-color-panel {\n padding: 4px;\n}\n.ag-theme-dark .ag-spectrum-color {\n background-color: rgb(255, 0, 0);\n border-radius: 2px;\n}\n.ag-theme-dark .ag-spectrum-tools {\n padding: 10px;\n}\n.ag-theme-dark .ag-spectrum-sat {\n background-image: -webkit-gradient(linear, left top, right top, from(white), to(rgba(204, 154, 129, 0)));\n background-image: linear-gradient(to right, white, rgba(204, 154, 129, 0));\n}\n.ag-theme-dark .ag-spectrum-val {\n background-image: -webkit-gradient(linear, left bottom, left top, from(black), to(rgba(204, 154, 129, 0)));\n background-image: linear-gradient(to top, black, rgba(204, 154, 129, 0));\n}\n.ag-theme-dark .ag-spectrum-dragger {\n border-radius: 12px;\n height: 12px;\n width: 12px;\n border: 1px solid white;\n background: black;\n -webkit-box-shadow: 0 0 2px 0px rgba(0, 0, 0, 0.24);\n box-shadow: 0 0 2px 0px rgba(0, 0, 0, 0.24);\n}\n.ag-theme-dark .ag-spectrum-hue-background {\n border-radius: 2px;\n}\n.ag-theme-dark .ag-spectrum-alpha-background {\n border-radius: 2px;\n}\n.ag-theme-dark .ag-spectrum-tool {\n margin-bottom: 10px;\n height: 11px;\n border-radius: 2px;\n}\n.ag-theme-dark .ag-spectrum-slider {\n margin-top: -12px;\n width: 13px;\n height: 13px;\n border-radius: 13px;\n background-color: rgb(248, 248, 248);\n -webkit-box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\n box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\n}\n.ag-theme-dark .ag-recent-color {\n margin: 0 3px;\n}\n.ag-theme-dark .ag-recent-color:first-child {\n margin-left: 0;\n}\n.ag-theme-dark .ag-recent-color:last-child {\n margin-right: 0;\n}\n.ag-theme-dark.ag-dnd-ghost {\n border: solid 1px;\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n background: #302e2e;\n background: var(--ag-background-color, #302e2e);\n border-radius: 0px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n overflow: hidden;\n text-overflow: ellipsis;\n border: solid 1px;\n border-color: darkgrey;\n border-color: var(--ag-secondary-border-color, var(--ag-border-color, darkgrey));\n color: #ccc;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #ccc));\n height: 25px !important;\n line-height: 25px;\n margin: 0;\n padding: 0 8px;\n -webkit-transform: translateY(8px);\n transform: translateY(8px);\n}\n.ag-theme-dark .ag-dnd-ghost-icon {\n margin-right: 4px;\n color: #ccc;\n color: var(--ag-foreground-color, #ccc);\n}\n.ag-theme-dark .ag-popup-child:not(.ag-tooltip-custom) {\n -webkit-box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.3);\n box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.3);\n}\n.ag-dragging-range-handle .ag-theme-dark .ag-dialog, .ag-dragging-fill-handle .ag-theme-dark .ag-dialog {\n opacity: 0.7;\n pointer-events: none;\n}\n.ag-theme-dark .ag-dialog {\n border-radius: 0px;\n border: solid 1px;\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-dark .ag-panel {\n background-color: #302e2e;\n background-color: var(--ag-background-color, #302e2e);\n}\n.ag-theme-dark .ag-panel-title-bar {\n background-color: #626262;\n background-color: var(--ag-header-background-color, #626262);\n color: #ccc;\n color: var(--ag-header-foreground-color, var(--ag-secondary-foreground-color, var(--ag-foreground-color, #ccc)));\n height: 25px;\n padding: 4px 12px;\n border-bottom: solid 1px;\n border-bottom-color: darkgrey;\n border-bottom-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-dark .ag-ltr .ag-panel-title-bar-button {\n margin-left: 4px;\n}\n\n.ag-theme-dark .ag-rtl .ag-panel-title-bar-button {\n margin-right: 4px;\n}\n\n.ag-theme-dark .ag-tooltip {\n background-color: #626262;\n background-color: var(--ag-header-background-color, #626262);\n color: #ccc;\n color: var(--ag-foreground-color, #ccc);\n padding: 4px;\n border: solid 1px;\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n border-radius: 0px;\n -webkit-transition: opacity 1s;\n transition: opacity 1s;\n white-space: normal;\n}\n.ag-theme-dark .ag-tooltip.ag-tooltip-hiding {\n opacity: 0;\n}\n.ag-theme-dark .ag-tooltip-custom {\n -webkit-transition: opacity 1s;\n transition: opacity 1s;\n}\n.ag-theme-dark .ag-tooltip-custom.ag-tooltip-hiding {\n opacity: 0;\n}\n.ag-theme-dark .ag-ltr .ag-column-select-indent-1 {\n padding-left: 16px;\n}\n\n.ag-theme-dark .ag-rtl .ag-column-select-indent-1 {\n padding-right: 16px;\n}\n\n.ag-theme-dark .ag-ltr .ag-column-select-indent-2 {\n padding-left: 32px;\n}\n\n.ag-theme-dark .ag-rtl .ag-column-select-indent-2 {\n padding-right: 32px;\n}\n\n.ag-theme-dark .ag-ltr .ag-column-select-indent-3 {\n padding-left: 48px;\n}\n\n.ag-theme-dark .ag-rtl .ag-column-select-indent-3 {\n padding-right: 48px;\n}\n\n.ag-theme-dark .ag-ltr .ag-column-select-indent-4 {\n padding-left: 64px;\n}\n\n.ag-theme-dark .ag-rtl .ag-column-select-indent-4 {\n padding-right: 64px;\n}\n\n.ag-theme-dark .ag-ltr .ag-column-select-indent-5 {\n padding-left: 80px;\n}\n\n.ag-theme-dark .ag-rtl .ag-column-select-indent-5 {\n padding-right: 80px;\n}\n\n.ag-theme-dark .ag-ltr .ag-column-select-indent-6 {\n padding-left: 96px;\n}\n\n.ag-theme-dark .ag-rtl .ag-column-select-indent-6 {\n padding-right: 96px;\n}\n\n.ag-theme-dark .ag-ltr .ag-column-select-indent-7 {\n padding-left: 112px;\n}\n\n.ag-theme-dark .ag-rtl .ag-column-select-indent-7 {\n padding-right: 112px;\n}\n\n.ag-theme-dark .ag-ltr .ag-column-select-indent-8 {\n padding-left: 128px;\n}\n\n.ag-theme-dark .ag-rtl .ag-column-select-indent-8 {\n padding-right: 128px;\n}\n\n.ag-theme-dark .ag-ltr .ag-column-select-indent-9 {\n padding-left: 144px;\n}\n\n.ag-theme-dark .ag-rtl .ag-column-select-indent-9 {\n padding-right: 144px;\n}\n\n.ag-theme-dark .ag-column-select-header-icon {\n cursor: pointer;\n}\n.ag-theme-dark .ag-keyboard-focus .ag-column-select-header-icon:focus {\n outline: none;\n}\n.ag-theme-dark .ag-keyboard-focus .ag-column-select-header-icon:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 0px;\n left: 0px;\n display: block;\n width: calc(100% - 0px);\n height: calc(100% - 0px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-dark .ag-ltr .ag-column-group-icons:not(:last-child), .ag-theme-dark .ag-ltr .ag-column-select-header-icon:not(:last-child), .ag-theme-dark .ag-ltr .ag-column-select-header-checkbox:not(:last-child), .ag-theme-dark .ag-ltr .ag-column-select-header-filter-wrapper:not(:last-child), .ag-theme-dark .ag-ltr .ag-column-select-checkbox:not(:last-child), .ag-theme-dark .ag-ltr .ag-column-select-column-drag-handle:not(:last-child), .ag-theme-dark .ag-ltr .ag-column-select-column-group-drag-handle:not(:last-child), .ag-theme-dark .ag-ltr .ag-column-select-column-label:not(:last-child) {\n margin-right: 8px;\n}\n\n.ag-theme-dark .ag-rtl .ag-column-group-icons:not(:last-child), .ag-theme-dark .ag-rtl .ag-column-select-header-icon:not(:last-child), .ag-theme-dark .ag-rtl .ag-column-select-header-checkbox:not(:last-child), .ag-theme-dark .ag-rtl .ag-column-select-header-filter-wrapper:not(:last-child), .ag-theme-dark .ag-rtl .ag-column-select-checkbox:not(:last-child), .ag-theme-dark .ag-rtl .ag-column-select-column-drag-handle:not(:last-child), .ag-theme-dark .ag-rtl .ag-column-select-column-group-drag-handle:not(:last-child), .ag-theme-dark .ag-rtl .ag-column-select-column-label:not(:last-child) {\n margin-left: 8px;\n}\n\n.ag-theme-dark .ag-keyboard-focus .ag-column-select-virtual-list-item:focus {\n outline: none;\n}\n.ag-theme-dark .ag-keyboard-focus .ag-column-select-virtual-list-item:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 1px;\n left: 1px;\n display: block;\n width: calc(100% - 2px);\n height: calc(100% - 2px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-dark .ag-column-select-column-group:not(:last-child),\n.ag-theme-dark .ag-column-select-column:not(:last-child) {\n margin-bottom: 4px;\n}\n.ag-theme-dark .ag-column-select-column-readonly,\n.ag-theme-dark .ag-column-select-column-group-readonly {\n color: rgba(204, 204, 204, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(204, 204, 204, 0.5));\n pointer-events: none;\n}\n.ag-theme-dark .ag-ltr .ag-column-select-add-group-indent {\n margin-left: 20px;\n}\n\n.ag-theme-dark .ag-rtl .ag-column-select-add-group-indent {\n margin-right: 20px;\n}\n\n.ag-theme-dark .ag-column-select-virtual-list-viewport {\n padding: 3px 0px;\n}\n.ag-theme-dark .ag-column-select-virtual-list-item {\n padding: 0 6px;\n}\n.ag-theme-dark .ag-rtl {\n text-align: right;\n}\n.ag-theme-dark .ag-root-wrapper {\n border: solid 1px;\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-1 {\n padding-left: 36px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-1 {\n padding-right: 36px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-1 {\n padding-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-1 {\n padding-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-1 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-1 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-2 {\n padding-left: 60px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-2 {\n padding-right: 60px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-2 {\n padding-left: 48px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-2 {\n padding-right: 48px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-2 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-2 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-3 {\n padding-left: 84px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-3 {\n padding-right: 84px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-3 {\n padding-left: 72px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-3 {\n padding-right: 72px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-3 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-3 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-4 {\n padding-left: 108px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-4 {\n padding-right: 108px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-4 {\n padding-left: 96px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-4 {\n padding-right: 96px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-4 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-4 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-5 {\n padding-left: 132px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-5 {\n padding-right: 132px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-5 {\n padding-left: 120px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-5 {\n padding-right: 120px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-5 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-5 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-6 {\n padding-left: 156px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-6 {\n padding-right: 156px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-6 {\n padding-left: 144px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-6 {\n padding-right: 144px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-6 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-6 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-7 {\n padding-left: 180px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-7 {\n padding-right: 180px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-7 {\n padding-left: 168px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-7 {\n padding-right: 168px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-7 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-7 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-8 {\n padding-left: 204px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-8 {\n padding-right: 204px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-8 {\n padding-left: 192px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-8 {\n padding-right: 192px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-8 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-8 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-9 {\n padding-left: 228px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-9 {\n padding-right: 228px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-9 {\n padding-left: 216px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-9 {\n padding-right: 216px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-9 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-9 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-10 {\n padding-left: 252px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-10 {\n padding-right: 252px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-10 {\n padding-left: 240px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-10 {\n padding-right: 240px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-10 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-10 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-11 {\n padding-left: 276px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-11 {\n padding-right: 276px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-11 {\n padding-left: 264px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-11 {\n padding-right: 264px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-11 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-11 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-12 {\n padding-left: 300px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-12 {\n padding-right: 300px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-12 {\n padding-left: 288px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-12 {\n padding-right: 288px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-12 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-12 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-13 {\n padding-left: 324px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-13 {\n padding-right: 324px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-13 {\n padding-left: 312px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-13 {\n padding-right: 312px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-13 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-13 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-14 {\n padding-left: 348px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-14 {\n padding-right: 348px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-14 {\n padding-left: 336px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-14 {\n padding-right: 336px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-14 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-14 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-15 {\n padding-left: 372px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-15 {\n padding-right: 372px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-15 {\n padding-left: 360px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-15 {\n padding-right: 360px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-15 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-15 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-16 {\n padding-left: 396px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-16 {\n padding-right: 396px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-16 {\n padding-left: 384px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-16 {\n padding-right: 384px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-16 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-16 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-17 {\n padding-left: 420px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-17 {\n padding-right: 420px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-17 {\n padding-left: 408px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-17 {\n padding-right: 408px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-17 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-17 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-18 {\n padding-left: 444px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-18 {\n padding-right: 444px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-18 {\n padding-left: 432px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-18 {\n padding-right: 432px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-18 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-18 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-19 {\n padding-left: 468px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-19 {\n padding-right: 468px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-19 {\n padding-left: 456px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-19 {\n padding-right: 456px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-19 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-19 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-20 {\n padding-left: 492px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-20 {\n padding-right: 492px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-20 {\n padding-left: 480px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-20 {\n padding-right: 480px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-20 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-20 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-21 {\n padding-left: 516px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-21 {\n padding-right: 516px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-21 {\n padding-left: 504px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-21 {\n padding-right: 504px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-21 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-21 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-22 {\n padding-left: 540px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-22 {\n padding-right: 540px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-22 {\n padding-left: 528px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-22 {\n padding-right: 528px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-22 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-22 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-23 {\n padding-left: 564px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-23 {\n padding-right: 564px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-23 {\n padding-left: 552px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-23 {\n padding-right: 552px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-23 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-23 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-24 {\n padding-left: 588px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-24 {\n padding-right: 588px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-24 {\n padding-left: 576px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-24 {\n padding-right: 576px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-24 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-24 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-25 {\n padding-left: 612px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-25 {\n padding-right: 612px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-25 {\n padding-left: 600px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-25 {\n padding-right: 600px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-25 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-25 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-26 {\n padding-left: 636px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-26 {\n padding-right: 636px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-26 {\n padding-left: 624px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-26 {\n padding-right: 624px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-26 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-26 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-27 {\n padding-left: 660px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-27 {\n padding-right: 660px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-27 {\n padding-left: 648px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-27 {\n padding-right: 648px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-27 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-27 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-28 {\n padding-left: 684px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-28 {\n padding-right: 684px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-28 {\n padding-left: 672px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-28 {\n padding-right: 672px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-28 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-28 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-29 {\n padding-left: 708px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-29 {\n padding-right: 708px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-29 {\n padding-left: 696px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-29 {\n padding-right: 696px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-29 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-29 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-30 {\n padding-left: 732px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-30 {\n padding-right: 732px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-30 {\n padding-left: 720px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-30 {\n padding-right: 720px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-30 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-30 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-31 {\n padding-left: 756px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-31 {\n padding-right: 756px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-31 {\n padding-left: 744px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-31 {\n padding-right: 744px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-31 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-31 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-32 {\n padding-left: 780px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-32 {\n padding-right: 780px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-32 {\n padding-left: 768px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-32 {\n padding-right: 768px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-32 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-32 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-33 {\n padding-left: 804px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-33 {\n padding-right: 804px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-33 {\n padding-left: 792px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-33 {\n padding-right: 792px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-33 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-33 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-34 {\n padding-left: 828px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-34 {\n padding-right: 828px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-34 {\n padding-left: 816px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-34 {\n padding-right: 816px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-34 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-34 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-35 {\n padding-left: 852px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-35 {\n padding-right: 852px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-35 {\n padding-left: 840px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-35 {\n padding-right: 840px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-35 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-35 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-36 {\n padding-left: 876px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-36 {\n padding-right: 876px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-36 {\n padding-left: 864px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-36 {\n padding-right: 864px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-36 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-36 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-37 {\n padding-left: 900px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-37 {\n padding-right: 900px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-37 {\n padding-left: 888px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-37 {\n padding-right: 888px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-37 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-37 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-38 {\n padding-left: 924px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-38 {\n padding-right: 924px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-38 {\n padding-left: 912px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-38 {\n padding-right: 912px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-38 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-38 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-39 {\n padding-left: 948px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-39 {\n padding-right: 948px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-39 {\n padding-left: 936px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-39 {\n padding-right: 936px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-39 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-39 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-40 {\n padding-left: 972px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-40 {\n padding-right: 972px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-40 {\n padding-left: 960px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-40 {\n padding-right: 960px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-40 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-40 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-41 {\n padding-left: 996px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-41 {\n padding-right: 996px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-41 {\n padding-left: 984px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-41 {\n padding-right: 984px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-41 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-41 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-42 {\n padding-left: 1020px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-42 {\n padding-right: 1020px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-42 {\n padding-left: 1008px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-42 {\n padding-right: 1008px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-42 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-42 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-43 {\n padding-left: 1044px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-43 {\n padding-right: 1044px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-43 {\n padding-left: 1032px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-43 {\n padding-right: 1032px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-43 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-43 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-44 {\n padding-left: 1068px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-44 {\n padding-right: 1068px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-44 {\n padding-left: 1056px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-44 {\n padding-right: 1056px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-44 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-44 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-45 {\n padding-left: 1092px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-45 {\n padding-right: 1092px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-45 {\n padding-left: 1080px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-45 {\n padding-right: 1080px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-45 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-45 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-46 {\n padding-left: 1116px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-46 {\n padding-right: 1116px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-46 {\n padding-left: 1104px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-46 {\n padding-right: 1104px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-46 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-46 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-47 {\n padding-left: 1140px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-47 {\n padding-right: 1140px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-47 {\n padding-left: 1128px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-47 {\n padding-right: 1128px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-47 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-47 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-48 {\n padding-left: 1164px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-48 {\n padding-right: 1164px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-48 {\n padding-left: 1152px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-48 {\n padding-right: 1152px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-48 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-48 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-49 {\n padding-left: 1188px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-49 {\n padding-right: 1188px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-49 {\n padding-left: 1176px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-49 {\n padding-right: 1176px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-49 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-49 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-50 {\n padding-left: 1212px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-50 {\n padding-right: 1212px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-50 {\n padding-left: 1200px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-50 {\n padding-right: 1200px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-50 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-50 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-51 {\n padding-left: 1236px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-51 {\n padding-right: 1236px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-51 {\n padding-left: 1224px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-51 {\n padding-right: 1224px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-51 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-51 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-52 {\n padding-left: 1260px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-52 {\n padding-right: 1260px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-52 {\n padding-left: 1248px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-52 {\n padding-right: 1248px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-52 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-52 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-53 {\n padding-left: 1284px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-53 {\n padding-right: 1284px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-53 {\n padding-left: 1272px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-53 {\n padding-right: 1272px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-53 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-53 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-54 {\n padding-left: 1308px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-54 {\n padding-right: 1308px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-54 {\n padding-left: 1296px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-54 {\n padding-right: 1296px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-54 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-54 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-55 {\n padding-left: 1332px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-55 {\n padding-right: 1332px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-55 {\n padding-left: 1320px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-55 {\n padding-right: 1320px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-55 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-55 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-56 {\n padding-left: 1356px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-56 {\n padding-right: 1356px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-56 {\n padding-left: 1344px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-56 {\n padding-right: 1344px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-56 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-56 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-57 {\n padding-left: 1380px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-57 {\n padding-right: 1380px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-57 {\n padding-left: 1368px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-57 {\n padding-right: 1368px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-57 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-57 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-58 {\n padding-left: 1404px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-58 {\n padding-right: 1404px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-58 {\n padding-left: 1392px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-58 {\n padding-right: 1392px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-58 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-58 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-59 {\n padding-left: 1428px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-59 {\n padding-right: 1428px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-59 {\n padding-left: 1416px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-59 {\n padding-right: 1416px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-59 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-59 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-60 {\n padding-left: 1452px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-60 {\n padding-right: 1452px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-60 {\n padding-left: 1440px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-60 {\n padding-right: 1440px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-60 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-60 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-61 {\n padding-left: 1476px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-61 {\n padding-right: 1476px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-61 {\n padding-left: 1464px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-61 {\n padding-right: 1464px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-61 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-61 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-62 {\n padding-left: 1500px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-62 {\n padding-right: 1500px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-62 {\n padding-left: 1488px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-62 {\n padding-right: 1488px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-62 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-62 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-63 {\n padding-left: 1524px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-63 {\n padding-right: 1524px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-63 {\n padding-left: 1512px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-63 {\n padding-right: 1512px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-63 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-63 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-64 {\n padding-left: 1548px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-64 {\n padding-right: 1548px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-64 {\n padding-left: 1536px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-64 {\n padding-right: 1536px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-64 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-64 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-65 {\n padding-left: 1572px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-65 {\n padding-right: 1572px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-65 {\n padding-left: 1560px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-65 {\n padding-right: 1560px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-65 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-65 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-66 {\n padding-left: 1596px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-66 {\n padding-right: 1596px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-66 {\n padding-left: 1584px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-66 {\n padding-right: 1584px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-66 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-66 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-67 {\n padding-left: 1620px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-67 {\n padding-right: 1620px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-67 {\n padding-left: 1608px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-67 {\n padding-right: 1608px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-67 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-67 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-68 {\n padding-left: 1644px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-68 {\n padding-right: 1644px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-68 {\n padding-left: 1632px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-68 {\n padding-right: 1632px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-68 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-68 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-69 {\n padding-left: 1668px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-69 {\n padding-right: 1668px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-69 {\n padding-left: 1656px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-69 {\n padding-right: 1656px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-69 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-69 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-70 {\n padding-left: 1692px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-70 {\n padding-right: 1692px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-70 {\n padding-left: 1680px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-70 {\n padding-right: 1680px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-70 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-70 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-71 {\n padding-left: 1716px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-71 {\n padding-right: 1716px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-71 {\n padding-left: 1704px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-71 {\n padding-right: 1704px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-71 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-71 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-72 {\n padding-left: 1740px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-72 {\n padding-right: 1740px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-72 {\n padding-left: 1728px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-72 {\n padding-right: 1728px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-72 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-72 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-73 {\n padding-left: 1764px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-73 {\n padding-right: 1764px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-73 {\n padding-left: 1752px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-73 {\n padding-right: 1752px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-73 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-73 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-74 {\n padding-left: 1788px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-74 {\n padding-right: 1788px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-74 {\n padding-left: 1776px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-74 {\n padding-right: 1776px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-74 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-74 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-75 {\n padding-left: 1812px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-75 {\n padding-right: 1812px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-75 {\n padding-left: 1800px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-75 {\n padding-right: 1800px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-75 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-75 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-76 {\n padding-left: 1836px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-76 {\n padding-right: 1836px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-76 {\n padding-left: 1824px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-76 {\n padding-right: 1824px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-76 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-76 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-77 {\n padding-left: 1860px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-77 {\n padding-right: 1860px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-77 {\n padding-left: 1848px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-77 {\n padding-right: 1848px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-77 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-77 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-78 {\n padding-left: 1884px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-78 {\n padding-right: 1884px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-78 {\n padding-left: 1872px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-78 {\n padding-right: 1872px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-78 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-78 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-79 {\n padding-left: 1908px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-79 {\n padding-right: 1908px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-79 {\n padding-left: 1896px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-79 {\n padding-right: 1896px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-79 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-79 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-80 {\n padding-left: 1932px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-80 {\n padding-right: 1932px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-80 {\n padding-left: 1920px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-80 {\n padding-right: 1920px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-80 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-80 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-81 {\n padding-left: 1956px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-81 {\n padding-right: 1956px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-81 {\n padding-left: 1944px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-81 {\n padding-right: 1944px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-81 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-81 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-82 {\n padding-left: 1980px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-82 {\n padding-right: 1980px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-82 {\n padding-left: 1968px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-82 {\n padding-right: 1968px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-82 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-82 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-83 {\n padding-left: 2004px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-83 {\n padding-right: 2004px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-83 {\n padding-left: 1992px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-83 {\n padding-right: 1992px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-83 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-83 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-84 {\n padding-left: 2028px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-84 {\n padding-right: 2028px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-84 {\n padding-left: 2016px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-84 {\n padding-right: 2016px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-84 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-84 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-85 {\n padding-left: 2052px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-85 {\n padding-right: 2052px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-85 {\n padding-left: 2040px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-85 {\n padding-right: 2040px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-85 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-85 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-86 {\n padding-left: 2076px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-86 {\n padding-right: 2076px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-86 {\n padding-left: 2064px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-86 {\n padding-right: 2064px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-86 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-86 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-87 {\n padding-left: 2100px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-87 {\n padding-right: 2100px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-87 {\n padding-left: 2088px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-87 {\n padding-right: 2088px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-87 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-87 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-88 {\n padding-left: 2124px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-88 {\n padding-right: 2124px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-88 {\n padding-left: 2112px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-88 {\n padding-right: 2112px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-88 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-88 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-89 {\n padding-left: 2148px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-89 {\n padding-right: 2148px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-89 {\n padding-left: 2136px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-89 {\n padding-right: 2136px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-89 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-89 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-90 {\n padding-left: 2172px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-90 {\n padding-right: 2172px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-90 {\n padding-left: 2160px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-90 {\n padding-right: 2160px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-90 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-90 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-91 {\n padding-left: 2196px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-91 {\n padding-right: 2196px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-91 {\n padding-left: 2184px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-91 {\n padding-right: 2184px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-91 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-91 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-92 {\n padding-left: 2220px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-92 {\n padding-right: 2220px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-92 {\n padding-left: 2208px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-92 {\n padding-right: 2208px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-92 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-92 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-93 {\n padding-left: 2244px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-93 {\n padding-right: 2244px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-93 {\n padding-left: 2232px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-93 {\n padding-right: 2232px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-93 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-93 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-94 {\n padding-left: 2268px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-94 {\n padding-right: 2268px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-94 {\n padding-left: 2256px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-94 {\n padding-right: 2256px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-94 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-94 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-95 {\n padding-left: 2292px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-95 {\n padding-right: 2292px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-95 {\n padding-left: 2280px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-95 {\n padding-right: 2280px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-95 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-95 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-96 {\n padding-left: 2316px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-96 {\n padding-right: 2316px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-96 {\n padding-left: 2304px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-96 {\n padding-right: 2304px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-96 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-96 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-97 {\n padding-left: 2340px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-97 {\n padding-right: 2340px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-97 {\n padding-left: 2328px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-97 {\n padding-right: 2328px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-97 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-97 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-98 {\n padding-left: 2364px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-98 {\n padding-right: 2364px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-98 {\n padding-left: 2352px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-98 {\n padding-right: 2352px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-98 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-98 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-99 {\n padding-left: 2388px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-99 {\n padding-right: 2388px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-indent-99 {\n padding-left: 2376px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-indent-99 {\n padding-right: 2376px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-level-99 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-level-99 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-ltr .ag-row-group-leaf-indent {\n margin-left: 24px;\n}\n\n.ag-theme-dark .ag-rtl .ag-row-group-leaf-indent {\n margin-right: 24px;\n}\n\n.ag-theme-dark .ag-value-change-delta {\n padding-right: 2px;\n}\n.ag-theme-dark .ag-value-change-delta-up {\n color: greenyellow;\n color: var(--ag-value-change-delta-up-color, greenyellow);\n}\n.ag-theme-dark .ag-value-change-delta-down {\n color: red;\n color: var(--ag-value-change-delta-down-color, red);\n}\n.ag-theme-dark .ag-value-change-value {\n background-color: transparent;\n border-radius: 1px;\n padding-left: 1px;\n padding-right: 1px;\n -webkit-transition: background-color 1s;\n transition: background-color 1s;\n}\n.ag-theme-dark .ag-value-change-value-highlight {\n background-color: chocolate;\n background-color: var(--ag-value-change-value-highlight-background-color, chocolate);\n -webkit-transition: background-color 0.1s;\n transition: background-color 0.1s;\n}\n.ag-theme-dark .ag-cell-data-changed {\n background-color: chocolate !important;\n background-color: var(--ag-value-change-value-highlight-background-color, chocolate) !important;\n}\n.ag-theme-dark .ag-cell-data-changed-animation {\n background-color: transparent;\n}\n.ag-theme-dark .ag-cell-highlight {\n background-color: rgba(255, 255, 255, 0.4) !important;\n background-color: var(--ag-range-selection-highlight-color, rgba(255, 255, 255, 0.4)) !important;\n}\n.ag-theme-dark .ag-row {\n height: 25px;\n background-color: #302e2e;\n background-color: var(--ag-background-color, #302e2e);\n color: #ccc;\n color: var(--ag-data-color, var(--ag-foreground-color, #ccc));\n}\n.ag-theme-dark .ag-row-highlight-above::after, .ag-theme-dark .ag-row-highlight-below::after {\n content: \"\";\n position: absolute;\n width: calc(100% - 1px);\n height: 1px;\n background-color: #ccc;\n background-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #ccc));\n left: 1px;\n}\n.ag-theme-dark .ag-row-highlight-above::after {\n top: -1px;\n}\n.ag-theme-dark .ag-row-highlight-above.ag-row-first::after {\n top: 0;\n}\n.ag-theme-dark .ag-row-highlight-below::after {\n bottom: 0px;\n}\n.ag-theme-dark .ag-row-odd {\n background-color: #403e3e;\n background-color: var(--ag-odd-row-background-color, #403e3e);\n}\n.ag-theme-dark .ag-body-horizontal-scroll:not(.ag-scrollbar-invisible) .ag-horizontal-left-spacer:not(.ag-scroller-corner) {\n border-right: solid 1px;\n border-right-color: darkgrey;\n border-right-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-dark .ag-body-horizontal-scroll:not(.ag-scrollbar-invisible) .ag-horizontal-right-spacer:not(.ag-scroller-corner) {\n border-left: solid 1px;\n border-left-color: darkgrey;\n border-left-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-dark .ag-ltr .ag-right-aligned-cell {\n text-align: right;\n}\n\n.ag-theme-dark .ag-rtl .ag-right-aligned-cell {\n text-align: left;\n}\n\n.ag-theme-dark .ag-ltr .ag-right-aligned-cell .ag-cell-value, .ag-theme-dark .ag-ltr .ag-right-aligned-cell .ag-group-value {\n margin-left: auto;\n}\n\n.ag-theme-dark .ag-rtl .ag-right-aligned-cell .ag-cell-value, .ag-theme-dark .ag-rtl .ag-right-aligned-cell .ag-group-value {\n margin-right: auto;\n}\n\n.ag-theme-dark .ag-cell, .ag-theme-dark .ag-full-width-row .ag-cell-wrapper.ag-row-group {\n border: 1px solid transparent;\n line-height: min(var(--ag-line-height, 23px), 23px);\n padding-left: 11px;\n padding-right: 11px;\n -webkit-font-smoothing: subpixel-antialiased;\n}\n.ag-theme-dark .ag-row > .ag-cell-wrapper {\n padding-left: 11px;\n padding-right: 11px;\n}\n.ag-theme-dark .ag-row-dragging {\n cursor: move;\n opacity: 0.5;\n}\n.ag-theme-dark .ag-cell-inline-editing {\n border: solid 1px;\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n background: #302e2e;\n background: var(--ag-background-color, #302e2e);\n border-radius: 0px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n padding: 0;\n height: 25px;\n background-color: #302e2e;\n background-color: var(--ag-control-panel-background-color, #302e2e);\n}\n.ag-theme-dark .ag-popup-editor {\n border: solid 1px;\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n background: #302e2e;\n background: var(--ag-background-color, #302e2e);\n border-radius: 0px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n background-color: #302e2e;\n background-color: var(--ag-control-panel-background-color, #302e2e);\n padding: 0;\n}\n.ag-theme-dark .ag-large-text-input {\n height: auto;\n padding: 12px;\n}\n.ag-theme-dark .ag-details-row {\n padding: 20px;\n background-color: #302e2e;\n background-color: var(--ag-background-color, #302e2e);\n}\n.ag-theme-dark .ag-layout-auto-height .ag-center-cols-clipper, .ag-theme-dark .ag-layout-auto-height .ag-center-cols-container, .ag-theme-dark .ag-layout-print .ag-center-cols-clipper, .ag-theme-dark .ag-layout-print .ag-center-cols-container {\n min-height: 50px;\n}\n.ag-theme-dark .ag-overlay-loading-wrapper {\n background-color: rgba(48, 46, 46, 0.66);\n background-color: var(--ag-modal-overlay-background-color, rgba(48, 46, 46, 0.66));\n}\n.ag-theme-dark .ag-overlay-loading-center {\n border: solid 1px;\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n background: #302e2e;\n background: var(--ag-background-color, #302e2e);\n border-radius: 0px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n}\n.ag-theme-dark .ag-overlay-no-rows-wrapper.ag-layout-auto-height {\n padding-top: 30px;\n}\n.ag-theme-dark .ag-loading {\n padding-left: 12px;\n display: -webkit-box;\n display: flex;\n height: 100%;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-dark .ag-loading-icon {\n padding-right: 12px;\n}\n.ag-theme-dark .ag-icon-loading {\n -webkit-animation-name: spin;\n animation-name: spin;\n -webkit-animation-duration: 1000ms;\n animation-duration: 1000ms;\n -webkit-animation-iteration-count: infinite;\n animation-iteration-count: infinite;\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n}\n@-webkit-keyframes spin {\n from {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@keyframes spin {\n from {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.ag-theme-dark .ag-floating-top {\n border-bottom: solid 1px;\n border-bottom-color: darkgrey;\n border-bottom-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-dark .ag-floating-bottom {\n border-top: solid 1px;\n border-top-color: darkgrey;\n border-top-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-dark .ag-ltr .ag-cell {\n border-right: dotted grey;\n}\n\n.ag-theme-dark .ag-rtl .ag-cell {\n border-left: dotted grey;\n}\n\n.ag-theme-dark .ag-ltr .ag-cell {\n border-right-width: 1px;\n}\n\n.ag-theme-dark .ag-rtl .ag-cell {\n border-left-width: 1px;\n}\n\n.ag-theme-dark .ag-cell.ag-cell-first-right-pinned:not(.ag-cell-range-left):not(.ag-cell-range-single-cell) {\n border-left: solid 1px;\n border-left-color: darkgrey;\n border-left-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-dark .ag-cell.ag-cell-last-left-pinned:not(.ag-cell-range-right):not(.ag-cell-range-single-cell) {\n border-right: solid 1px;\n border-right-color: darkgrey;\n border-right-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-dark .ag-row-selected {\n background-color: #4a708b;\n background-color: var(--ag-selected-row-background-color, #4a708b);\n}\n.ag-theme-dark .ag-cell-range-selected:not(.ag-cell-focus),\n.ag-theme-dark .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing) {\n background-color: rgba(100, 160, 160, 0.4);\n background-color: var(--ag-range-selection-background-color, rgba(100, 160, 160, 0.4));\n}\n.ag-theme-dark .ag-cell-range-selected:not(.ag-cell-focus).ag-cell-range-chart,\n.ag-theme-dark .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing).ag-cell-range-chart {\n background-color: rgba(0, 88, 255, 0.1) !important;\n background-color: var(--ag-range-selection-chart-background-color, rgba(0, 88, 255, 0.1)) !important;\n}\n.ag-theme-dark .ag-cell-range-selected:not(.ag-cell-focus).ag-cell-range-chart.ag-cell-range-chart-category,\n.ag-theme-dark .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing).ag-cell-range-chart.ag-cell-range-chart-category {\n background-color: rgba(0, 255, 132, 0.1) !important;\n background-color: var(--ag-range-selection-chart-category-background-color, rgba(0, 255, 132, 0.1)) !important;\n}\n.ag-theme-dark .ag-cell-range-selected-1:not(.ag-cell-focus),\n.ag-theme-dark .ag-root:not(.ag-context-menu-open) .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-1:not(.ag-cell-inline-editing) {\n background-color: rgba(100, 160, 160, 0.4);\n background-color: var(--ag-range-selection-background-color-1, var(--ag-range-selection-background-color, rgba(100, 160, 160, 0.4)));\n}\n.ag-theme-dark .ag-cell-range-selected-2:not(.ag-cell-focus),\n.ag-theme-dark .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-2 {\n background-color: rgba(100, 160, 160, 0.64);\n background-color: var(--ag-range-selection-background-color-2, rgba(100, 160, 160, 0.64));\n}\n.ag-theme-dark .ag-cell-range-selected-3:not(.ag-cell-focus),\n.ag-theme-dark .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-3 {\n background-color: rgba(100, 160, 160, 0.784);\n background-color: var(--ag-range-selection-background-color-3, rgba(100, 160, 160, 0.784));\n}\n.ag-theme-dark .ag-cell-range-selected-4:not(.ag-cell-focus),\n.ag-theme-dark .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-4 {\n background-color: rgba(100, 160, 160, 0.8704);\n background-color: var(--ag-range-selection-background-color-4, rgba(100, 160, 160, 0.8704));\n}\n.ag-theme-dark .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-top {\n border-top-color: #ccc;\n border-top-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #ccc));\n}\n.ag-theme-dark .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-right {\n border-right-color: #ccc;\n border-right-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #ccc));\n}\n.ag-theme-dark .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-bottom {\n border-bottom-color: #ccc;\n border-bottom-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #ccc));\n}\n.ag-theme-dark .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-left {\n border-left-color: #ccc;\n border-left-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #ccc));\n}\n.ag-theme-dark .ag-ltr .ag-has-focus .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-dark .ag-ltr .ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-dark .ag-ltr .ag-has-focus .ag-full-width-row.ag-row-focus .ag-cell-wrapper.ag-row-group,\n.ag-theme-dark .ag-ltr .ag-cell-range-single-cell,\n.ag-theme-dark .ag-ltr .ag-cell-range-single-cell.ag-cell-range-handle, .ag-theme-dark .ag-rtl .ag-has-focus .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-dark .ag-rtl .ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-dark .ag-rtl .ag-has-focus .ag-full-width-row.ag-row-focus .ag-cell-wrapper.ag-row-group,\n.ag-theme-dark .ag-rtl .ag-cell-range-single-cell,\n.ag-theme-dark .ag-rtl .ag-cell-range-single-cell.ag-cell-range-handle {\n border: 1px solid;\n border-color: #ccc;\n border-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #ccc));\n outline: initial;\n}\n.ag-theme-dark .ag-cell.ag-selection-fill-top,\n.ag-theme-dark .ag-cell.ag-selection-fill-top.ag-cell-range-selected {\n border-top: 1px dashed;\n border-top-color: #ccc;\n border-top-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #ccc));\n}\n.ag-theme-dark .ag-ltr .ag-cell.ag-selection-fill-right, .ag-theme-dark .ag-ltr .ag-cell.ag-selection-fill-right.ag-cell-range-selected {\n border-right: 1px dashed;\n border-right-color: #ccc;\n border-right-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #ccc));\n}\n\n.ag-theme-dark .ag-rtl .ag-cell.ag-selection-fill-right, .ag-theme-dark .ag-rtl .ag-cell.ag-selection-fill-right.ag-cell-range-selected {\n border-left: 1px dashed;\n border-left-color: #ccc;\n border-left-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #ccc));\n}\n\n.ag-theme-dark .ag-cell.ag-selection-fill-bottom,\n.ag-theme-dark .ag-cell.ag-selection-fill-bottom.ag-cell-range-selected {\n border-bottom: 1px dashed;\n border-bottom-color: #ccc;\n border-bottom-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #ccc));\n}\n.ag-theme-dark .ag-ltr .ag-cell.ag-selection-fill-left, .ag-theme-dark .ag-ltr .ag-cell.ag-selection-fill-left.ag-cell-range-selected {\n border-left: 1px dashed;\n border-left-color: #ccc;\n border-left-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #ccc));\n}\n\n.ag-theme-dark .ag-rtl .ag-cell.ag-selection-fill-left, .ag-theme-dark .ag-rtl .ag-cell.ag-selection-fill-left.ag-cell-range-selected {\n border-right: 1px dashed;\n border-right-color: #ccc;\n border-right-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #ccc));\n}\n\n.ag-theme-dark .ag-range-handle, .ag-theme-dark .ag-fill-handle {\n position: absolute;\n width: 6px;\n height: 6px;\n bottom: -1px;\n background-color: #ccc;\n background-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #ccc));\n}\n.ag-theme-dark .ag-ltr .ag-range-handle, .ag-theme-dark .ag-ltr .ag-fill-handle {\n right: -1px;\n}\n\n.ag-theme-dark .ag-rtl .ag-range-handle, .ag-theme-dark .ag-rtl .ag-fill-handle {\n left: -1px;\n}\n\n.ag-theme-dark .ag-fill-handle {\n cursor: cell;\n}\n.ag-theme-dark .ag-range-handle {\n cursor: nwse-resize;\n}\n.ag-theme-dark .ag-cell-inline-editing {\n border-color: var(--ag-input-focus-border-color) !important;\n}\n.ag-theme-dark .ag-menu {\n border: solid 1px;\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n background: #302e2e;\n background: var(--ag-background-color, #302e2e);\n border-radius: 0px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n padding: 0;\n}\n.ag-theme-dark .ag-menu-list {\n cursor: default;\n padding: 4px 0;\n}\n.ag-theme-dark .ag-menu-separator {\n height: 9px;\n}\n.ag-theme-dark .ag-menu-separator-part::after {\n content: \"\";\n display: block;\n border-top: solid 1px;\n border-top-color: darkgrey;\n border-top-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-dark .ag-menu-option-active, .ag-theme-dark .ag-compact-menu-option-active {\n background-color: var(--ag-row-hover-color);\n}\n.ag-theme-dark .ag-menu-option-part, .ag-theme-dark .ag-compact-menu-option-part {\n line-height: 12px;\n padding: 6px 0;\n}\n.ag-theme-dark .ag-menu-option-disabled, .ag-theme-dark .ag-compact-menu-option-disabled {\n opacity: 0.5;\n}\n.ag-theme-dark .ag-menu-option-icon, .ag-theme-dark .ag-compact-menu-option-icon {\n width: 12px;\n}\n.ag-theme-dark .ag-ltr .ag-menu-option-icon, .ag-theme-dark .ag-ltr .ag-compact-menu-option-icon {\n padding-left: 8px;\n}\n\n.ag-theme-dark .ag-rtl .ag-menu-option-icon, .ag-theme-dark .ag-rtl .ag-compact-menu-option-icon {\n padding-right: 8px;\n}\n\n.ag-theme-dark .ag-menu-option-text, .ag-theme-dark .ag-compact-menu-option-text {\n padding-left: 8px;\n padding-right: 8px;\n}\n.ag-theme-dark .ag-ltr .ag-menu-option-shortcut, .ag-theme-dark .ag-ltr .ag-compact-menu-option-shortcut {\n padding-right: 4px;\n}\n\n.ag-theme-dark .ag-rtl .ag-menu-option-shortcut, .ag-theme-dark .ag-rtl .ag-compact-menu-option-shortcut {\n padding-left: 4px;\n}\n\n.ag-theme-dark .ag-menu-option-popup-pointer, .ag-theme-dark .ag-compact-menu-option-popup-pointer {\n padding-right: 4px;\n}\n.ag-theme-dark .ag-tabs {\n min-width: 220px;\n}\n.ag-theme-dark .ag-tabs-header {\n width: 100%;\n display: -webkit-box;\n display: flex;\n}\n.ag-theme-dark .ag-tab {\n border-bottom: 0 solid transparent;\n display: -webkit-box;\n display: flex;\n -webkit-box-flex: 0;\n flex: none;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n cursor: pointer;\n}\n.ag-theme-dark .ag-keyboard-focus .ag-tab:focus {\n outline: none;\n}\n.ag-theme-dark .ag-keyboard-focus .ag-tab:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-dark .ag-tab-selected {\n border-bottom-color: #ccc;\n border-bottom-color: var(--ag-selected-tab-underline-color, var(--ag-range-selection-border-color, var(--ag-foreground-color, #ccc)));\n}\n.ag-theme-dark .ag-menu-header {\n color: #ccc;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #ccc));\n}\n.ag-theme-dark .ag-filter-separator {\n border-top: solid 1px;\n border-top-color: darkgrey;\n border-top-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-dark .ag-menu:not(.ag-tabs) .ag-filter-select {\n min-width: 167px;\n}\n.ag-theme-dark .ag-tabs .ag-filter-select {\n min-width: 206px;\n}\n.ag-theme-dark .ag-filter-select .ag-picker-field-wrapper {\n width: 0;\n}\n.ag-theme-dark .ag-filter-condition-operator {\n height: 17px;\n}\n.ag-theme-dark .ag-ltr .ag-filter-condition-operator-or {\n margin-left: 8px;\n}\n\n.ag-theme-dark .ag-rtl .ag-filter-condition-operator-or {\n margin-right: 8px;\n}\n\n.ag-theme-dark .ag-set-filter-select-all {\n padding-top: 6px;\n}\n.ag-theme-dark .ag-set-filter-list, .ag-theme-dark .ag-filter-no-matches {\n height: 120px;\n}\n.ag-theme-dark .ag-set-filter-filter {\n margin-top: 6px;\n margin-left: 6px;\n margin-right: 6px;\n}\n.ag-theme-dark .ag-filter-to {\n margin-top: 4px;\n}\n.ag-theme-dark .ag-mini-filter {\n margin: 6px 6px;\n}\n.ag-theme-dark .ag-set-filter-item {\n margin: 0px 6px;\n}\n.ag-theme-dark .ag-ltr .ag-set-filter-item-value {\n margin-left: 6px;\n}\n\n.ag-theme-dark .ag-rtl .ag-set-filter-item-value {\n margin-right: 6px;\n}\n\n.ag-theme-dark .ag-filter-apply-panel {\n padding: 6px 6px;\n border-top: solid 1px;\n border-top-color: darkgrey;\n border-top-color: var(--ag-secondary-border-color, var(--ag-border-color, darkgrey));\n}\n.ag-theme-dark .ag-filter-apply-panel-button {\n line-height: 1.5;\n}\n.ag-theme-dark .ag-ltr .ag-filter-apply-panel-button {\n margin-left: 8px;\n}\n\n.ag-theme-dark .ag-rtl .ag-filter-apply-panel-button {\n margin-right: 8px;\n}\n\n.ag-theme-dark .ag-simple-filter-body-wrapper {\n padding: 6px 6px;\n padding-bottom: 2px;\n}\n.ag-theme-dark .ag-simple-filter-body-wrapper > * {\n margin-bottom: 4px;\n}\n.ag-theme-dark .ag-filter-no-matches {\n padding: 6px 6px;\n}\n.ag-theme-dark .ag-multi-filter-menu-item {\n margin: 4px 0;\n}\n.ag-theme-dark .ag-multi-filter-group-title-bar {\n padding: 8px 4px;\n background-color: transparent;\n}\n.ag-theme-dark .ag-keyboard-focus .ag-multi-filter-group-title-bar:focus {\n outline: none;\n}\n.ag-theme-dark .ag-keyboard-focus .ag-multi-filter-group-title-bar:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-dark .ag-side-bar {\n position: relative;\n}\n.ag-theme-dark .ag-tool-panel-wrapper {\n width: 200px;\n background-color: #302e2e;\n background-color: var(--ag-control-panel-background-color, #302e2e);\n}\n.ag-theme-dark .ag-side-buttons {\n padding-top: 16px;\n width: 16px;\n position: relative;\n color: #ccc;\n color: var(--ag-foreground-color, #ccc);\n overflow: hidden;\n}\n.ag-theme-dark button.ag-side-button-button {\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n background: transparent;\n padding: 8px 0 8px 0;\n width: calc(100% + 1px);\n margin: 0;\n min-height: 72px;\n background-position-y: center;\n background-position-x: center;\n background-repeat: no-repeat;\n border: none;\n border-top: solid 1px;\n border-top-color: darkgrey;\n border-top-color: var(--ag-border-color, darkgrey);\n border-bottom: solid 1px;\n border-bottom-color: darkgrey;\n border-bottom-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-dark button.ag-side-button-button:focus {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.ag-theme-dark .ag-keyboard-focus .ag-side-button-button:focus {\n outline: none;\n}\n.ag-theme-dark .ag-keyboard-focus .ag-side-button-button:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-dark .ag-selected .ag-side-button-button {\n background-color: #302e2e;\n background-color: var(--ag-control-panel-background-color, #302e2e);\n border-top-color: darkgrey;\n border-top-color: var(--ag-border-color, darkgrey);\n border-bottom-color: darkgrey;\n border-bottom-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-dark .ag-side-button-icon-wrapper {\n margin-bottom: 3px;\n}\n.ag-theme-dark .ag-ltr .ag-side-bar-left,\n.ag-theme-dark .ag-rtl .ag-side-bar-right {\n border-right: solid 1px;\n border-right-color: darkgrey;\n border-right-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-dark .ag-ltr .ag-side-bar-left .ag-tool-panel-wrapper,\n.ag-theme-dark .ag-rtl .ag-side-bar-right .ag-tool-panel-wrapper {\n border-left: solid 1px;\n border-left-color: darkgrey;\n border-left-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-dark .ag-ltr .ag-side-bar-left .ag-side-button-button,\n.ag-theme-dark .ag-rtl .ag-side-bar-right .ag-side-button-button {\n border-right: 0 solid transparent;\n margin-right: -1px;\n padding-right: 1px;\n}\n.ag-theme-dark .ag-ltr .ag-side-bar-left .ag-selected .ag-side-button-button,\n.ag-theme-dark .ag-rtl .ag-side-bar-right .ag-selected .ag-side-button-button {\n border-right-color: #ccc;\n border-right-color: var(--ag-selected-tab-underline-color, var(--ag-range-selection-border-color, var(--ag-foreground-color, #ccc)));\n}\n.ag-theme-dark .ag-rtl .ag-side-bar-left,\n.ag-theme-dark .ag-ltr .ag-side-bar-right {\n border-left: solid 1px;\n border-left-color: darkgrey;\n border-left-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-dark .ag-rtl .ag-side-bar-left .ag-tool-panel-wrapper,\n.ag-theme-dark .ag-ltr .ag-side-bar-right .ag-tool-panel-wrapper {\n border-right: solid 1px;\n border-right-color: darkgrey;\n border-right-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-dark .ag-rtl .ag-side-bar-left .ag-side-button-button,\n.ag-theme-dark .ag-ltr .ag-side-bar-right .ag-side-button-button {\n border-left: 0 solid transparent;\n margin-left: -1px;\n padding-left: 1px;\n}\n.ag-theme-dark .ag-rtl .ag-side-bar-left .ag-selected .ag-side-button-button,\n.ag-theme-dark .ag-ltr .ag-side-bar-right .ag-selected .ag-side-button-button {\n border-left-color: #ccc;\n border-left-color: var(--ag-selected-tab-underline-color, var(--ag-range-selection-border-color, var(--ag-foreground-color, #ccc)));\n}\n.ag-theme-dark .ag-filter-toolpanel-header {\n height: 24px;\n}\n.ag-theme-dark .ag-ltr .ag-filter-toolpanel-header, .ag-theme-dark .ag-ltr .ag-filter-toolpanel-search {\n padding-left: 4px;\n}\n\n.ag-theme-dark .ag-rtl .ag-filter-toolpanel-header, .ag-theme-dark .ag-rtl .ag-filter-toolpanel-search {\n padding-right: 4px;\n}\n\n.ag-theme-dark .ag-keyboard-focus .ag-filter-toolpanel-header:focus {\n outline: none;\n}\n.ag-theme-dark .ag-keyboard-focus .ag-filter-toolpanel-header:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-dark .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n font-family: \"agGridClassic\";\n font-size: 12px;\n line-height: 12px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n content: \"\\f114\";\n position: absolute;\n}\n.ag-theme-dark .ag-ltr .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n padding-left: 4px;\n}\n\n.ag-theme-dark .ag-rtl .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n padding-right: 4px;\n}\n\n.ag-theme-dark .ag-filter-toolpanel-group-level-0-header {\n height: 32px;\n}\n.ag-theme-dark .ag-filter-toolpanel-group-item {\n margin-top: 2px;\n margin-bottom: 2px;\n}\n.ag-theme-dark .ag-filter-toolpanel-search {\n height: 25px;\n}\n.ag-theme-dark .ag-filter-toolpanel-search-input {\n -webkit-box-flex: 1;\n flex-grow: 1;\n height: 16px;\n}\n.ag-theme-dark .ag-ltr .ag-filter-toolpanel-search-input {\n margin-right: 4px;\n}\n\n.ag-theme-dark .ag-rtl .ag-filter-toolpanel-search-input {\n margin-left: 4px;\n}\n\n.ag-theme-dark .ag-filter-toolpanel-group-level-0 {\n border-top: solid 1px;\n border-top-color: darkgrey;\n border-top-color: var(--ag-secondary-border-color, var(--ag-border-color, darkgrey));\n}\n.ag-theme-dark .ag-ltr .ag-filter-toolpanel-expand, .ag-theme-dark .ag-ltr .ag-filter-toolpanel-group-title-bar-icon {\n margin-right: 4px;\n}\n\n.ag-theme-dark .ag-rtl .ag-filter-toolpanel-expand, .ag-theme-dark .ag-rtl .ag-filter-toolpanel-group-title-bar-icon {\n margin-left: 4px;\n}\n\n.ag-theme-dark .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-1-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-dark .ag-ltr .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-2-header {\n padding-left: 20px;\n}\n\n.ag-theme-dark .ag-rtl .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-2-header {\n padding-right: 20px;\n}\n\n.ag-theme-dark .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-2-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-dark .ag-ltr .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-3-header {\n padding-left: 36px;\n}\n\n.ag-theme-dark .ag-rtl .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-3-header {\n padding-right: 36px;\n}\n\n.ag-theme-dark .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-3-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-dark .ag-ltr .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-4-header {\n padding-left: 52px;\n}\n\n.ag-theme-dark .ag-rtl .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-4-header {\n padding-right: 52px;\n}\n\n.ag-theme-dark .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-4-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-dark .ag-ltr .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-5-header {\n padding-left: 68px;\n}\n\n.ag-theme-dark .ag-rtl .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-5-header {\n padding-right: 68px;\n}\n\n.ag-theme-dark .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-5-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-dark .ag-ltr .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-6-header {\n padding-left: 84px;\n}\n\n.ag-theme-dark .ag-rtl .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-6-header {\n padding-right: 84px;\n}\n\n.ag-theme-dark .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-6-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-dark .ag-ltr .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-7-header {\n padding-left: 100px;\n}\n\n.ag-theme-dark .ag-rtl .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-7-header {\n padding-right: 100px;\n}\n\n.ag-theme-dark .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-7-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-dark .ag-ltr .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-8-header {\n padding-left: 116px;\n}\n\n.ag-theme-dark .ag-rtl .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-8-header {\n padding-right: 116px;\n}\n\n.ag-theme-dark .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-8-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-dark .ag-ltr .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-9-header {\n padding-left: 132px;\n}\n\n.ag-theme-dark .ag-rtl .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-9-header {\n padding-right: 132px;\n}\n\n.ag-theme-dark .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-9-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-dark .ag-ltr .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-10-header {\n padding-left: 148px;\n}\n\n.ag-theme-dark .ag-rtl .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-10-header {\n padding-right: 148px;\n}\n\n.ag-theme-dark .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-10-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-dark .ag-ltr .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-11-header {\n padding-left: 164px;\n}\n\n.ag-theme-dark .ag-rtl .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-11-header {\n padding-right: 164px;\n}\n\n.ag-theme-dark .ag-filter-toolpanel-instance-header.ag-filter-toolpanel-group-level-1-header {\n padding-left: 4px;\n}\n.ag-theme-dark .ag-filter-toolpanel-instance-filter {\n border-top: solid 1px;\n border-top-color: darkgrey;\n border-top-color: var(--ag-border-color, darkgrey);\n border-bottom: solid 1px;\n border-bottom-color: darkgrey;\n border-bottom-color: var(--ag-border-color, darkgrey);\n margin-top: 4px;\n}\n.ag-theme-dark .ag-ltr .ag-filter-toolpanel-instance-header-icon {\n margin-left: 4px;\n}\n\n.ag-theme-dark .ag-rtl .ag-filter-toolpanel-instance-header-icon {\n margin-right: 4px;\n}\n\n.ag-theme-dark .ag-pivot-mode-panel {\n min-height: 25px;\n height: 25px;\n display: -webkit-box;\n display: flex;\n}\n.ag-theme-dark .ag-pivot-mode-select {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-dark .ag-ltr .ag-pivot-mode-select {\n margin-left: 6px;\n}\n\n.ag-theme-dark .ag-rtl .ag-pivot-mode-select {\n margin-right: 6px;\n}\n\n.ag-theme-dark .ag-keyboard-focus .ag-column-select-header:focus {\n outline: none;\n}\n.ag-theme-dark .ag-keyboard-focus .ag-column-select-header:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-dark .ag-column-select-header {\n height: 25px;\n -webkit-box-align: center;\n align-items: center;\n padding: 0 6px;\n border-bottom: solid 1px;\n border-bottom-color: darkgrey;\n border-bottom-color: var(--ag-secondary-border-color, var(--ag-border-color, darkgrey));\n}\n.ag-theme-dark .ag-column-panel-column-select {\n border-bottom: solid 1px;\n border-bottom-color: darkgrey;\n border-bottom-color: var(--ag-secondary-border-color, var(--ag-border-color, darkgrey));\n border-top: solid 1px;\n border-top-color: darkgrey;\n border-top-color: var(--ag-secondary-border-color, var(--ag-border-color, darkgrey));\n}\n.ag-theme-dark .ag-column-group-icons,\n.ag-theme-dark .ag-column-select-header-icon {\n color: #ccc;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #ccc));\n}\n.ag-theme-dark .ag-column-select-list .ag-list-item-hovered::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n height: 1px;\n background-color: #ccc;\n background-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #ccc));\n}\n.ag-theme-dark .ag-column-select-list .ag-item-highlight-top::after {\n top: 0;\n}\n.ag-theme-dark .ag-column-select-list .ag-item-highlight-bottom::after {\n bottom: 0;\n}\n.ag-theme-dark .ag-header {\n background-color: #626262;\n background-color: var(--ag-header-background-color, #626262);\n border-bottom: solid 1px;\n border-bottom-color: darkgrey;\n border-bottom-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-dark .ag-header-row {\n color: #ccc;\n color: var(--ag-header-foreground-color, var(--ag-secondary-foreground-color, var(--ag-foreground-color, #ccc)));\n height: 25px;\n}\n.ag-theme-dark .ag-pinned-right-header {\n border-left: solid 1px;\n border-left-color: darkgrey;\n border-left-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-dark .ag-pinned-left-header {\n border-right: solid 1px;\n border-right-color: darkgrey;\n border-right-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-dark .ag-ltr .ag-header-cell:not(.ag-right-aligned-header) .ag-header-label-icon {\n margin-left: 4px;\n}\n\n.ag-theme-dark .ag-rtl .ag-header-cell:not(.ag-right-aligned-header) .ag-header-label-icon {\n margin-right: 4px;\n}\n\n.ag-theme-dark .ag-ltr .ag-header-cell.ag-right-aligned-header .ag-header-label-icon {\n margin-right: 4px;\n}\n\n.ag-theme-dark .ag-rtl .ag-header-cell.ag-right-aligned-header .ag-header-label-icon {\n margin-left: 4px;\n}\n\n.ag-theme-dark .ag-header-cell,\n.ag-theme-dark .ag-header-group-cell {\n padding-left: 12px;\n padding-right: 12px;\n}\n.ag-theme-dark .ag-header-cell.ag-header-cell-moving,\n.ag-theme-dark .ag-header-group-cell.ag-header-cell-moving {\n background-color: #bebebe;\n background-color: var(--ag-header-cell-moving-background-color, #bebebe);\n}\n.ag-theme-dark .ag-keyboard-focus .ag-header-cell:focus {\n outline: none;\n}\n.ag-theme-dark .ag-keyboard-focus .ag-header-cell:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-dark .ag-keyboard-focus .ag-header-group-cell:focus {\n outline: none;\n}\n.ag-theme-dark .ag-keyboard-focus .ag-header-group-cell:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-dark .ag-header-icon {\n color: #ccc;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #ccc));\n}\n.ag-theme-dark .ag-header-expand-icon {\n cursor: pointer;\n}\n.ag-theme-dark .ag-ltr .ag-header-expand-icon {\n padding-left: 4px;\n}\n\n.ag-theme-dark .ag-rtl .ag-header-expand-icon {\n padding-right: 4px;\n}\n\n.ag-theme-dark .ag-header-row:not(:first-child) .ag-header-cell,\n.ag-theme-dark .ag-header-row:not(:first-child) .ag-header-group-cell.ag-header-group-cell-with-group {\n border-top: solid 1px;\n border-top-color: darkgrey;\n border-top-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-dark .ag-header-cell::after,\n.ag-theme-dark .ag-header-group-cell::after {\n content: \"\";\n position: absolute;\n z-index: 1;\n display: block;\n width: 1px;\n height: 100%;\n top: calc(50% - 50%);\n background-color: rgba(169, 169, 169, 0.5);\n background-color: var(--ag-header-column-separator-color, rgba(169, 169, 169, 0.5));\n}\n.ag-theme-dark .ag-ltr .ag-header-cell::after, .ag-theme-dark .ag-ltr .ag-header-group-cell::after {\n right: 0;\n}\n\n.ag-theme-dark .ag-rtl .ag-header-cell::after, .ag-theme-dark .ag-rtl .ag-header-group-cell::after {\n left: 0;\n}\n\n.ag-theme-dark .ag-ltr .ag-header-select-all {\n margin-right: 12px;\n}\n\n.ag-theme-dark .ag-rtl .ag-header-select-all {\n margin-left: 12px;\n}\n\n.ag-theme-dark .ag-ltr .ag-floating-filter-button {\n margin-left: 12px;\n}\n\n.ag-theme-dark .ag-rtl .ag-floating-filter-button {\n margin-right: 12px;\n}\n\n.ag-theme-dark .ag-floating-filter-button-button {\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background: transparent;\n border: none;\n height: 12px;\n padding: 0;\n width: 12px;\n}\n.ag-theme-dark .ag-filter-loading {\n background-color: #302e2e;\n background-color: var(--ag-control-panel-background-color, #302e2e);\n height: 100%;\n padding: 6px 6px;\n position: absolute;\n width: 100%;\n z-index: 1;\n}\n.ag-theme-dark .ag-paging-panel {\n border-top: 1px solid;\n border-top-color: darkgrey;\n border-top-color: var(--ag-border-color, darkgrey);\n color: #ccc;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #ccc));\n height: 25px;\n}\n.ag-theme-dark .ag-paging-panel > * {\n margin: 0 12px;\n}\n.ag-theme-dark .ag-paging-button {\n cursor: pointer;\n}\n.ag-theme-dark .ag-paging-button.ag-disabled {\n cursor: default;\n color: rgba(204, 204, 204, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(204, 204, 204, 0.5));\n}\n.ag-theme-dark .ag-keyboard-focus .ag-paging-button:focus {\n outline: none;\n}\n.ag-theme-dark .ag-keyboard-focus .ag-paging-button:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 0px;\n left: 0px;\n display: block;\n width: calc(100% - 0px);\n height: calc(100% - 0px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-dark .ag-paging-button, .ag-theme-dark .ag-paging-description {\n margin: 0 4px;\n}\n.ag-theme-dark .ag-status-bar {\n border-top: solid 1px;\n border-top-color: darkgrey;\n border-top-color: var(--ag-border-color, darkgrey);\n color: rgba(204, 204, 204, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(204, 204, 204, 0.5));\n padding-right: 16px;\n padding-left: 16px;\n line-height: 1.5;\n}\n.ag-theme-dark .ag-status-name-value-value {\n color: #ccc;\n color: var(--ag-foreground-color, #ccc);\n}\n.ag-theme-dark .ag-status-bar-center {\n text-align: center;\n}\n.ag-theme-dark .ag-status-name-value {\n margin-left: 4px;\n margin-right: 4px;\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.ag-theme-dark .ag-column-drop-cell {\n background: rgb(64, 62, 62);\n background: var(--ag-chip-background-color, rgb(64, 62, 62));\n border-radius: 16px;\n height: 16px;\n padding: 0 2px;\n border: 1px solid transparent;\n}\n.ag-theme-dark .ag-keyboard-focus .ag-column-drop-cell:focus {\n outline: none;\n}\n.ag-theme-dark .ag-keyboard-focus .ag-column-drop-cell:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 2px;\n left: 2px;\n display: block;\n width: calc(100% - 4px);\n height: calc(100% - 4px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-dark .ag-column-drop-cell-text {\n margin: 0 4px;\n}\n.ag-theme-dark .ag-column-drop-cell-button {\n min-width: 16px;\n margin: 0 2px;\n color: #ccc;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #ccc));\n}\n.ag-theme-dark .ag-column-drop-cell-drag-handle {\n margin-left: 8px;\n}\n.ag-theme-dark .ag-column-drop-cell-ghost {\n opacity: 0.5;\n}\n.ag-theme-dark .ag-column-drop-horizontal {\n background-color: #302e2e;\n background-color: var(--ag-control-panel-background-color, #302e2e);\n color: #ccc;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #ccc));\n height: 25px;\n border-bottom: solid 1px;\n border-bottom-color: darkgrey;\n border-bottom-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-dark .ag-ltr .ag-column-drop-horizontal {\n padding-left: 12px;\n}\n\n.ag-theme-dark .ag-rtl .ag-column-drop-horizontal {\n padding-right: 12px;\n}\n\n.ag-theme-dark .ag-ltr .ag-column-drop-horizontal-half-width:not(:last-child) {\n border-right: solid 1px;\n border-right-color: darkgrey;\n border-right-color: var(--ag-border-color, darkgrey);\n}\n\n.ag-theme-dark .ag-rtl .ag-column-drop-horizontal-half-width:not(:last-child) {\n border-left: solid 1px;\n border-left-color: darkgrey;\n border-left-color: var(--ag-border-color, darkgrey);\n}\n\n.ag-theme-dark .ag-column-drop-horizontal-cell-separator {\n margin: 0 4px;\n color: #ccc;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #ccc));\n}\n.ag-theme-dark .ag-column-drop-horizontal-empty-message {\n color: rgba(204, 204, 204, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(204, 204, 204, 0.5));\n}\n.ag-theme-dark .ag-ltr .ag-column-drop-horizontal-icon {\n margin-right: 12px;\n}\n\n.ag-theme-dark .ag-rtl .ag-column-drop-horizontal-icon {\n margin-left: 12px;\n}\n\n.ag-theme-dark .ag-column-drop-vertical-list {\n padding-bottom: 4px;\n padding-right: 4px;\n padding-left: 4px;\n}\n.ag-theme-dark .ag-column-drop-vertical-cell {\n margin-top: 4px;\n}\n.ag-theme-dark .ag-column-drop-vertical {\n min-height: 50px;\n border-bottom: solid 1px;\n border-bottom-color: darkgrey;\n border-bottom-color: var(--ag-secondary-border-color, var(--ag-border-color, darkgrey));\n}\n.ag-theme-dark .ag-column-drop-vertical.ag-last-column-drop {\n border-bottom: none;\n}\n.ag-theme-dark .ag-column-drop-vertical-icon {\n margin-left: 4px;\n margin-right: 4px;\n}\n.ag-theme-dark .ag-column-drop-vertical-empty-message {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n overflow: hidden;\n color: rgba(204, 204, 204, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(204, 204, 204, 0.5));\n margin-top: 4px;\n}\n.ag-theme-dark .ag-select-agg-func-popup {\n border: solid 1px;\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n background: #302e2e;\n background: var(--ag-background-color, #302e2e);\n border-radius: 0px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n background: #302e2e;\n background: var(--ag-background-color, #302e2e);\n height: 70px;\n padding: 0;\n}\n.ag-theme-dark .ag-select-agg-func-virtual-list-item {\n cursor: default;\n padding-left: 8px;\n}\n.ag-theme-dark .ag-select-agg-func-virtual-list-item:hover {\n background-color: #4a708b;\n background-color: var(--ag-selected-row-background-color, #4a708b);\n}\n.ag-theme-dark .ag-keyboard-focus .ag-select-agg-func-virtual-list-item:focus {\n outline: none;\n}\n.ag-theme-dark .ag-keyboard-focus .ag-select-agg-func-virtual-list-item:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 1px;\n left: 1px;\n display: block;\n width: calc(100% - 2px);\n height: calc(100% - 2px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-dark .ag-chart-menu {\n border-radius: 0px;\n background: #302e2e;\n background: var(--ag-background-color, #302e2e);\n}\n.ag-theme-dark .ag-chart-menu-icon {\n opacity: 0.5;\n line-height: 24px;\n font-size: 24px;\n width: 24px;\n height: 24px;\n margin: 2px 0;\n cursor: pointer;\n border-radius: 0px;\n color: #ccc;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #ccc));\n}\n.ag-theme-dark .ag-chart-menu-icon:hover {\n opacity: 1;\n}\n.ag-theme-dark .ag-chart-mini-thumbnail {\n border: 1px solid;\n border-color: darkgrey;\n border-color: var(--ag-secondary-border-color, var(--ag-border-color, darkgrey));\n border-radius: 5px;\n margin: 5px;\n}\n.ag-theme-dark .ag-chart-mini-thumbnail:nth-last-child(3), .ag-theme-dark .ag-chart-mini-thumbnail:nth-last-child(3) ~ .ag-chart-mini-thumbnail {\n margin-left: auto;\n margin-right: auto;\n}\n.ag-theme-dark .ag-ltr .ag-chart-mini-thumbnail:first-child {\n margin-left: 0;\n}\n\n.ag-theme-dark .ag-rtl .ag-chart-mini-thumbnail:first-child {\n margin-right: 0;\n}\n\n.ag-theme-dark .ag-ltr .ag-chart-mini-thumbnail:last-child {\n margin-right: 0;\n}\n\n.ag-theme-dark .ag-rtl .ag-chart-mini-thumbnail:last-child {\n margin-left: 0;\n}\n\n.ag-theme-dark .ag-chart-mini-thumbnail.ag-selected {\n border-color: #ccc;\n border-color: var(--ag-minichart-selected-chart-color, var(--ag-checkbox-checked-color, var(--ag-foreground-color, #ccc)));\n}\n.ag-theme-dark .ag-chart-settings-card-item {\n background: #ccc;\n background: var(--ag-foreground-color, #ccc);\n width: 8px;\n height: 8px;\n border-radius: 4px;\n}\n.ag-theme-dark .ag-chart-settings-card-item.ag-selected {\n background-color: #ccc;\n background-color: var(--ag-minichart-selected-page-color, var(--ag-checkbox-checked-color, var(--ag-foreground-color, #ccc)));\n}\n.ag-theme-dark .ag-chart-data-column-drag-handle {\n margin-left: 4px;\n}\n.ag-theme-dark .ag-charts-settings-group-title-bar,\n.ag-theme-dark .ag-charts-data-group-title-bar,\n.ag-theme-dark .ag-charts-format-top-level-group-title-bar {\n border-top: solid 1px;\n border-top-color: darkgrey;\n border-top-color: var(--ag-secondary-border-color, var(--ag-border-color, darkgrey));\n}\n.ag-theme-dark .ag-charts-settings-group-container {\n padding: 4px;\n}\n.ag-theme-dark .ag-charts-data-group-container {\n padding: 3px 6px;\n}\n.ag-theme-dark .ag-charts-data-group-container .ag-charts-data-group-item:not(.ag-charts-format-sub-level-group) {\n height: 20px;\n}\n.ag-theme-dark .ag-charts-data-group-container .ag-list-item-hovered::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n height: 1px;\n background-color: #ccc;\n background-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #ccc));\n}\n.ag-theme-dark .ag-charts-data-group-container .ag-item-highlight-top::after {\n top: 0;\n}\n.ag-theme-dark .ag-charts-data-group-container .ag-item-highlight-bottom::after {\n bottom: 0;\n}\n.ag-theme-dark .ag-charts-format-top-level-group-container {\n margin-left: 8px;\n padding: 4px;\n}\n.ag-theme-dark .ag-charts-format-top-level-group-item {\n margin: 4px 0;\n}\n.ag-theme-dark .ag-charts-format-sub-level-group-container {\n padding: 6px 6px;\n padding-bottom: 2px;\n}\n.ag-theme-dark .ag-charts-format-sub-level-group-container > * {\n margin-bottom: 4px;\n}\n.ag-theme-dark .ag-charts-group-container.ag-group-container-horizontal {\n padding: 4px;\n}\n.ag-theme-dark .ag-chart-data-section,\n.ag-theme-dark .ag-chart-format-section {\n display: -webkit-box;\n display: flex;\n margin: 0;\n}\n.ag-theme-dark .ag-chart-menu-panel {\n background-color: #302e2e;\n background-color: var(--ag-control-panel-background-color, #302e2e);\n}\n.ag-theme-dark .ag-ltr .ag-chart-menu-panel {\n border-left: solid 1px;\n border-left-color: darkgrey;\n border-left-color: var(--ag-border-color, darkgrey);\n}\n\n.ag-theme-dark .ag-rtl .ag-chart-menu-panel {\n border-right: solid 1px;\n border-right-color: darkgrey;\n border-right-color: var(--ag-border-color, darkgrey);\n}\n\n.ag-theme-dark .ag-date-time-list-page-title {\n -webkit-box-flex: 1;\n flex-grow: 1;\n text-align: center;\n}\n.ag-theme-dark .ag-date-time-list-page-column-label {\n text-align: center;\n}\n.ag-theme-dark .ag-date-time-list-page-entry {\n text-align: center;\n}\n.ag-theme-dark .ag-checkbox-input-wrapper {\n font-family: \"agGridClassic\";\n font-size: 12px;\n line-height: 12px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 12px;\n height: 12px;\n background-color: var(--ag-checkbox-background-color);\n border-radius: 0px;\n display: inline-block;\n vertical-align: middle;\n -webkit-box-flex: 0;\n flex: none;\n}\n.ag-theme-dark .ag-checkbox-input-wrapper input, .ag-theme-dark .ag-checkbox-input-wrapper input {\n -webkit-appearance: none;\n opacity: 0;\n width: 100%;\n height: 100%;\n}\n.ag-theme-dark .ag-checkbox-input-wrapper:focus-within, .ag-theme-dark .ag-checkbox-input-wrapper:active {\n outline: none;\n}\n.ag-theme-dark .ag-checkbox-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-dark .ag-checkbox-input-wrapper::after {\n content: \"\\f108\";\n color: #ccc;\n color: var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #ccc));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-dark .ag-checkbox-input-wrapper.ag-checked::after {\n content: \"\\f106\";\n color: #ccc;\n color: var(--ag-checkbox-checked-color, var(--ag-foreground-color, #ccc));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-dark .ag-checkbox-input-wrapper.ag-indeterminate::after {\n content: \"\\f107\";\n color: #ccc;\n color: var(--ag-checkbox-indeterminate-color, var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #ccc)));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-dark .ag-toggle-button-input-wrapper {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n width: 24px;\n height: 12px;\n background-color: #ccc;\n background-color: var(--ag-toggle-button-off-background-color, var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #ccc)));\n border-radius: 6px;\n position: relative;\n -webkit-box-flex: 0;\n flex: none;\n border: 1px solid;\n border-color: #ccc;\n border-color: var(--ag-toggle-button-off-border-color, var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #ccc)));\n}\n.ag-theme-dark .ag-toggle-button-input-wrapper input {\n opacity: 0;\n height: 100%;\n width: 100%;\n}\n.ag-theme-dark .ag-toggle-button-input-wrapper:focus-within {\n outline: none;\n}\n.ag-theme-dark .ag-toggle-button-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-dark .ag-toggle-button-input-wrapper.ag-checked {\n background-color: #ccc;\n background-color: var(--ag-toggle-button-on-background-color, var(--ag-checkbox-checked-color, var(--ag-foreground-color, #ccc)));\n border-color: #ccc;\n border-color: var(--ag-toggle-button-on-border-color, var(--ag-checkbox-checked-color, var(--ag-foreground-color, #ccc)));\n}\n.ag-theme-dark .ag-toggle-button-input-wrapper::before {\n content: \" \";\n position: absolute;\n top: -1px;\n left: -1px;\n display: block;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n height: 12px;\n width: 12px;\n background-color: #302e2e;\n background-color: var(--ag-toggle-button-switch-background-color, var(--ag-background-color, #302e2e));\n border-radius: 6px;\n -webkit-transition: left 100ms;\n transition: left 100ms;\n border: 1px solid;\n border-color: #ccc;\n border-color: var(--ag-toggle-button-switch-border-color, var(--ag-toggle-button-off-border-color, var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #ccc))));\n}\n.ag-theme-dark .ag-toggle-button-input-wrapper.ag-checked::before {\n left: calc(100% - 12px );\n border-color: #ccc;\n border-color: var(--ag-toggle-button-on-border-color, var(--ag-checkbox-checked-color, var(--ag-foreground-color, #ccc)));\n}\n.ag-theme-dark .ag-radio-button-input-wrapper {\n font-family: \"agGridClassic\";\n font-size: 12px;\n line-height: 12px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 12px;\n height: 12px;\n background-color: var(--ag-checkbox-background-color);\n border-radius: 0px;\n display: inline-block;\n vertical-align: middle;\n -webkit-box-flex: 0;\n flex: none;\n border-radius: 12px;\n}\n.ag-theme-dark .ag-radio-button-input-wrapper input, .ag-theme-dark .ag-radio-button-input-wrapper input {\n -webkit-appearance: none;\n opacity: 0;\n width: 100%;\n height: 100%;\n}\n.ag-theme-dark .ag-radio-button-input-wrapper:focus-within, .ag-theme-dark .ag-radio-button-input-wrapper:active {\n outline: none;\n}\n.ag-theme-dark .ag-radio-button-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-dark .ag-radio-button-input-wrapper::after {\n content: \"\\f126\";\n color: #ccc;\n color: var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #ccc));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-dark .ag-radio-button-input-wrapper.ag-checked::after {\n content: \"\\f127\";\n color: #ccc;\n color: var(--ag-checkbox-checked-color, var(--ag-foreground-color, #ccc));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-dark input[class^=ag-][type=range] {\n -webkit-appearance: none;\n width: 100%;\n height: 100%;\n background: none;\n overflow: visible;\n}\n.ag-theme-dark input[class^=ag-][type=range]::-webkit-slider-runnable-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: darkgrey;\n background-color: var(--ag-border-color, darkgrey);\n border-radius: 0px;\n border-radius: 0px;\n}\n.ag-theme-dark input[class^=ag-][type=range]::-moz-range-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: darkgrey;\n background-color: var(--ag-border-color, darkgrey);\n border-radius: 0px;\n border-radius: 0px;\n}\n.ag-theme-dark input[class^=ag-][type=range]::-ms-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: darkgrey;\n background-color: var(--ag-border-color, darkgrey);\n border-radius: 0px;\n border-radius: 0px;\n color: transparent;\n width: calc(100% - 2px);\n}\n.ag-theme-dark input[class^=ag-][type=range]::-webkit-slider-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: 12px;\n height: 12px;\n background-color: #302e2e;\n background-color: var(--ag-background-color, #302e2e);\n border: 1px solid;\n border-color: #ccc;\n border-color: var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #ccc));\n border-radius: 12px;\n -webkit-transform: translateY(-4.5px);\n transform: translateY(-4.5px);\n}\n.ag-theme-dark input[class^=ag-][type=range]::-ms-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: 12px;\n height: 12px;\n background-color: #302e2e;\n background-color: var(--ag-background-color, #302e2e);\n border: 1px solid;\n border-color: #ccc;\n border-color: var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #ccc));\n border-radius: 12px;\n}\n.ag-theme-dark input[class^=ag-][type=range]::-moz-ag-range-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: 12px;\n height: 12px;\n background-color: #302e2e;\n background-color: var(--ag-background-color, #302e2e);\n border: 1px solid;\n border-color: #ccc;\n border-color: var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #ccc));\n border-radius: 12px;\n}\n.ag-theme-dark input[class^=ag-][type=range]:focus {\n outline: none;\n}\n.ag-theme-dark input[class^=ag-][type=range]:focus::-webkit-slider-thumb {\n border-color: #ccc;\n border-color: var(--ag-checkbox-checked-color, var(--ag-foreground-color, #ccc));\n}\n.ag-theme-dark input[class^=ag-][type=range]:focus::-ms-thumb {\n border-color: #ccc;\n border-color: var(--ag-checkbox-checked-color, var(--ag-foreground-color, #ccc));\n}\n.ag-theme-dark input[class^=ag-][type=range]:focus::-moz-ag-range-thumb {\n border-color: #ccc;\n border-color: var(--ag-checkbox-checked-color, var(--ag-foreground-color, #ccc));\n}\n.ag-theme-dark input[class^=ag-][type=range]:active::-webkit-slider-runnable-track {\n background-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-dark input[class^=ag-][type=range]:active::-moz-ag-range-track {\n background-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-dark input[class^=ag-][type=range]:active::-ms-track {\n background-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-dark input[class^=ag-][type=range]:disabled {\n opacity: 0.5;\n}\n.ag-theme-dark .ag-icon {\n color: #d6d5d5;\n margin: 1px 1px 2px 1px;\n}\n.ag-theme-dark .ag-icon-tree-closed::before {\n content: \"\\f10b\";\n}\n.ag-theme-dark .ag-icon-tree-open::before {\n content: \"\\f111\";\n}\n.ag-theme-dark .ag-header, .ag-theme-dark .ag-column-drop-cell {\n background-image: none;\n}\n.ag-theme-dark .ag-tab {\n border: 1px solid transparent;\n padding: 4px 8px;\n margin: 4px;\n margin-bottom: -1px;\n}\n.ag-theme-dark .ag-tabs-body {\n margin: 2px 0;\n}\n.ag-theme-dark .ag-tab-selected {\n background-color: #302e2e;\n background-color: var(--ag-background-color, #302e2e);\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n border-bottom-color: transparent;\n}\n.ag-theme-dark .ag-tabs-header {\n background-color: #626262;\n background-color: var(--ag-header-background-color, #626262);\n border-bottom: 1px solid;\n border-bottom-color: darkgrey;\n border-bottom-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-dark .ag-filter .ag-filter-apply-panel {\n -webkit-box-pack: start;\n justify-content: flex-start;\n}\n.ag-theme-dark .ag-menu-option-active {\n background-color: #4a708b;\n background-color: var(--ag-selected-row-background-color, #4a708b);\n}\n.ag-theme-dark .ag-column-drop-cell {\n border: 1px solid;\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n border-radius: 0;\n}\n.ag-theme-dark .ag-column-drop-cell-button .ag-icon {\n border: 1px solid transparent;\n}\n.ag-theme-dark .ag-column-drop-cell-button:hover .ag-icon {\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-dark .ag-panel-title-bar-button-icon {\n font-size: 20px;\n line-height: 20px;\n}\n.ag-theme-dark .ag-menu-option-part {\n padding-top: 4px;\n padding-bottom: 4px;\n}\n.ag-theme-dark .ag-column-drop-vertical-title-bar {\n margin-top: 4px;\n margin-left: 4px;\n}\n.ag-theme-dark .ag-column-drop-vertical-title {\n margin-left: 4px;\n}\n.ag-theme-dark .ag-column-drop-vertical-empty-message {\n margin-left: 24px;\n}\n", ""]);
58462// Exports
58463module.exports = exports;
58464
58465
58466/***/ }),
58467/* 293 */
58468/***/ (function(module, exports, __webpack_require__) {
58469
58470var api = __webpack_require__(276);
58471 var content = __webpack_require__(294);
58472
58473 content = content.__esModule ? content.default : content;
58474
58475 if (typeof content === 'string') {
58476 content = [[module.i, content, '']];
58477 }
58478
58479var options = {};
58480
58481options.insert = "head";
58482options.singleton = false;
58483
58484var update = api(content, options);
58485
58486
58487
58488module.exports = content.locals || {};
58489
58490/***/ }),
58491/* 294 */
58492/***/ (function(module, exports, __webpack_require__) {
58493
58494// Imports
58495var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58496exports = ___CSS_LOADER_API_IMPORT___(false);
58497// Module
58498exports.push([module.i, ".ag-theme-fresh {\n -webkit-font-smoothing: antialiased;\n color: #000;\n color: var(--ag-foreground-color, #000);\n font-family: \"Helvetica Neue\", sans-serif;\n font-size: 14px;\n line-height: normal;\n}\n@font-face {\n font-family: \"agGridClassic\";\n src: url(\"data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABXwAAsAAAAAKrgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAAmMAAAR2Zoxou09TLzIAAANsAAAAQQAAAFZWVlMSY21hcAAAA7AAAAIbAAAFnIlT7KJnbHlmAAAFzAAADBkAABg4HeN0mGhlYWQAABHoAAAANAAAADZ2z8SBaGhlYQAAEhwAAAAeAAAAJAfTBCxobXR4AAASPAAAABgAAAE4yyH/7GxvY2EAABJUAAAAdgAAAJ5JCULobWF4cAAAEswAAAAfAAAAIAFkAKpuYW1lAAAS7AAAATMAAAJS8kTiWnBvc3QAABQgAAABzQAAArBhTs2TeJx9lMtOU1EUhv/DaREoAlG8pCIiGi+oiMrxXHpoy6WH1tbEgTEOnGBMjAlxxHP4AD4BQ5/AB3DgE/gADhw6Nn5r9WCFAey03Xtd/vXvf62NAklTWlNTYzvF4KVm9vcOPqquioZ/5v9/H+x/eL+niaMTvor/TiioTGtGy3qtA30LZoKD4HBsPqyHr8J34efwS/hLIVFLWiW6pqesWAnfkVJlaijXmMaxxew34BOymmq59RyMqu7pqqfL1IzJ6Tniip7xmQOncJyOtolKWYbZ4XvAuqfZUyJy3Qc/g80m1gqKLKJJrnlNgp4Q01Sb/Cb+89TcoXaEv8BXwK6KpcW+rQtwsoyKq9rVGz3Bbzc1lKzMSfnE2vVz5Kc1NDmKaoHToJZhr8LgyN6gakLGY9AzorZKRVd0k+wGOB3Q2p694dnLRCZwS3WDnd0zges08Zle6K1X3S1zOq7pUIFV2I/shePlenjM2gZrQOwjOIys1p8H1IrUx1+jV4X29UmH+qrv+qGf+q0/OqOL1En8Dtug75yqzQQKnozu4m39s9pdx5mBk1HHIya5ecPVifH1Sg2tWo2bmTop+whr6vFT8LT4Lmxy+lGhRuR1rdNV1ibnmOiz5XQ2WdOudI8pmPUJ7vss1HWHvi064nAOc7S+CqLthvyuuG5N8Ba8b6auvbA5P9lbsH7XmdVr/EbcMHOdnuO9jsWQRpYlz8phbxjr+HNYj6oZqwVYresuPpuxvr+OLpVucZ8hk4QIexl9n6/bMMjKlzpPD419u+zYJY+LPSvgP0FUvvDUtbOZLuBm8zH4C3G+c6UAeJxjYGSazTiBgZWBgamKaQ8DA0MPhGZ8wGDIyAQUZWBlZsAKAtJcUxgOMOh+NGJ+AeRGMX9i4ALSjCA5AOaCCwgAAAB4nLXUB1IbQRCF4V+BLMA22eQcBQaTcxAiHwJnCgcKZ87hs/kefQL8Rt0+AK7yVn3bO1Or3ZlavQaqgJzMSB6ytWR0RSar2UxlPkd9ZT7Pb40L1JLVdZErbrizhft7zRa55Jpby1RGf4+M7i7QwxjLGh2yxAE7lFnlXDN7rLPPLkdsssEJK2yzxjFnbFHilAv9Pq0irzVWU6P31mklDXpiI0084jEttNJGOx100kW33tRLH/0MMMgQw4wwyjgTTDLFtHZSZJY5njHPgs7PNVrUIqt52HH4wPvTsXSwU149X97TjnePNje02e2147Ot0unFPzzsPxyFdMr9itEZ6Yu6tNvLsCQvwoG8DDvyKpTldViVN+Fc3ob0b3gX9uQqrMt12Jf3YVc+hCP5GDblU9iQm3Ait2FFPodt+RLW5Gs4lm8h7f172JIfoSQ/w6ncBX1Ay7iUF8s6Us25lC/Lu5Qxq3Ipe1btSLXGkWqtI9U6R6r1LmXSGhypFlz6ktboSLXJkWqzU3awoBRhQXnCnjglC2txyhjW6pQ2rM0pd1i7UwKxDqcsYp1OqcS6nPKJPXVKKtbtlFmsxym9WK9TjrE+p0Rj/U7ZxgacUo4NOuUdG3JKPjbs1AOwEadugI069QVszKlDYONOvQKbcKkv2qRLebApp96BTTv1FGzGqa9gRac+g806dRxszlXuCepC2LyrPHPBsfgHpKymyQB4nO1Ye2wUxxnfmfXt3t57d+92zxycvXf4FkNico+99QMMGOOzcWzTnIMJaQ04GMWYRDEESJqktAElJErSShFVqUmAqj0XmlQFI+XRBxKpGleRGqePNKnyKn+0Sdq4pHXS6uRb+s3eww8ooPSfVu3Zu/P6Zuabb34z3+9bClHwo5P0IMVRFFJkVvEpIq3QSWN4717Un7v/9dfxAfzT8fERtBftBRFT/n36faoSChqr6jKr8oqZ6ApvJjKvmAmroHNdqbGxlnWIXgdpap2RW9cCaZdhkPpUF8J0JdcFVS1dlzblu1LFOdfTj1FWKLAqBw8fRt9+th/1ob7+Z47jXc9uRX3G01ufyX1YlMcTeIKym/KgC2gD+uCJljOjqTNnUqNnWkbRqmJutOUMZaGoiwas6wNKpMKUSi2hllKURQnVII1PNKK4EgsiH+91IVoJMZCRoCYJTREU58NVcV+YhpTenhOV+lCoXsEfwUupV3Iej9/vwRd4Wc59N51GHen0SHc3DtWF8Mfwgv+cG17012U+x/N+P4//wsvGqPF2JoOOGZth2bP0WgzrKSoSnlbOMkcnFsF6RZnebioRKik1MUOdAWPi74kT59fSHxSVKCp180xdXjRsP1t1EB1dRM3VRb02XWhFU66oyO+N06jzKloYzgzZ0lnzX9vsV5r5KpOS9cKi76G3AjqslJ+iAHgyh2i9AjEs/Pm8EsySUCMq/pOxqf42I4cax8Ze/oHdXu6WomuikrscnUPHG6DBeAktHxtrdDqDgUh5KBoNlVfND5LhGXOOQ/QhmI0FvLphbTJFVfnAbPDQc1J03DhNNxmnM7OS7Aj8UEcGfqiT5KmC7h8UbLX02qyFAMe+sBbW4lqcHgwRi4Hl8hYkljMtQyxnvDJi/vIWFAoWnChYUAQJHn8E23aGqDRCUUV9mugmc5U86BPnFS0MN4XCK7Sm8HEND2cMRwZNpo1R1DFijKbxsFnOQvk4VGap0l3wAP0AOdscgu1gOQQ3go4mkbDHmDBfxsQeJMALb59VRAIU8za/OEXfSf+Z8oB1FlCt1Jepp2DoCOykZYZF6LCGQEFGlhqQWOV14XCopkxLNOI4saWXCUXUGhSGDt4giiX1RhSTZGLgEFRriWQsSMcJPmqQWoOJuWNBXOiU71OBJDmI4WZK6tFGsj9enxu5MGzPUhq6S/Qd7La7LEanqusqTqp6y6jRhB7BiLZ4foeNTZwQ9Hpkr8dmcfoVUV4o2pzWMqvXLc93yJUSg60u2ykhJC3gnR7OZWWtbgcv2QWPN8ALFZLg5602J1tmcQcFxm4RBLtTsC1bshjT2Gq3WrCGWZvbweA4jWyCFf/RuudBC65Vp141lXlkfOpR+p7flHN87mu/dVQERasQqKzyhbSId74qcG6b0+dNxCqXSH6/ze1yl1dLbnuVYHfZy3mHLLh4K8OKSk2V6PT5fR6b3S2ITs7O0SxrYcUFT/zwR5ydsbFOm4X7Nee2ci7uF27O5hGo/+/df/XeFf34QdOP83FgC+TgfufYM/3G08bT/ehe7MpNQuEo2tIPomVz9rrtqvusQ2skkYzHpAq0ApNtk3xeN5Jhe1woFFmKWAKEiJa48vZcf0s7x1q8bl70LFtpczFOq1v0dXY7bJzgFco29JRxPNRcybBj9w66nHbJI/o3bnQLFovHwS+44163T3BxHLPvi4yV4d2mTf4X1vjZeAPxelfy3k8YjquxhtFMZtr3vEzrVDkVpZbB/LqcjEuyJLvAoQM7RMkVSAuHwKerYg1WGTaIZEmXGWJp+EuCgGl1FeSRkoisaHr4vqEN1Xc0aqsqXcYva9pVW+OS2uv3/SH5+WW25kT0sc7052Jf2LhlfWPd0tjG3eiNdS0uQQoq9obraNeiG4Sym9r3L7890hxfZEf7bBilLYwrYLzN1G7QYq3Nt0l++8r5Ni5R1Rhb+9CNxuForyjLFfPi3YHptcjgQxdRSVgLWYdJRwq6JiFP6iS9qDS5ldSqyHIUJnIyiOhoiqyga8/9D371fqLkLbu+cldzYmVv3+13bV6/1lTW0XL73oGUDa1Ftq5kKlm1KBlZRvvodPuDezq6HI61keWx9gPtN5+MtW7QaxlGj20VZamyvPbWRLK3nnbOX4ys9nntXiuLqTx3M3nODuBSEGmICuJVLeqLa2mTx2ToQWC9m0ay3d0FWTwF/J02oxI+zAOhVVkZrUhjz0sv1WazeMJwoEmj+dw5KBBxR4FfnJ3FowJUxTSb14HdFB90lbwCHGgkk8ma/8BC/lUOHctkxjMm8Tp2aQIqWQrrPgtnW6GqqGrqesJ9TDIHXKtA60oPH9YUFPZBLJF/quBBx4HVgY2A4ZGUsCMz3dyNOgvTmerQg2kwXyadhSSbxqlsTkij493AndLp/xg95uxtVZiPIxKdsXgqnc5dMDc3O2Nn8z7jGL3e9BkykD0SoqJtJ/Je4iSuR8dO5OPAk4Ro4oufXvyU/hv9VypBDeZPB+MmdB08txrR4aCDc5bztS4UxFDRiIhb16IRkoUmcv+yZjORk+MS6aQm1CgRM+WDuNgM5AEa9aQawV+q83oX1R6o62y/sWOnF351rbZyAWEelzHlAa+gtbUF9s8XxADnx+XVVskmCUis67ixvbPuQO0iEBd8yCZZF/ux084FRDGwP9DWpgneQDlTBoMgodzWWkfGhZk62w/DTKSw0xyglfO4tJhVYOYFWtuSXjFwINDaGuB4T8hfbcWMh8xkqnSg9jCIC24WW6v9IQ/H2ojggYDoTba1BuYxgjWmuTxcq7mKmef2EJymCvPmZOF4wKUJcQLcnHBMYPMgWojrmhpmfTh1eM/hN96AV6aU+cajfX2P9uEfz6okmdzzfaTJ9IEzY9zoNUberBnUIx3ucFm/cuz90bup6HDtEfR26r3oU7VPXSUAzzWm3rnhCIg/8F4qCmnJh0zHaWaEhgoPfWjqJ3RT/snmIzEShxX9+2dZm25+toAlkovvymu7753UDUf0YZRIvUuUvtrasoW1PQkmOaIfKX0veRzOpIXsMDmN6FbzJKJY8YLNn8MA/SvKOf0NxuRvMhoe6EcqUvsHBvqNN403+wfwqe1QA7ntxkPboQ7athd4wEWwxYeUl1pIxQkPICfMQ5xXJXFVHvBMSQs5s/EYyZLYeik5jqZvBt5NTufkwbuHmtasaRq62/h491BTc3PT0G40nnsuuaopNbRlk14ny4vbtFWrodBbW+eXF9MfgvBu48LunUR4527kgW5rPsk9t1iW6/TevqFU08pkW76wZai1aVWyhPsmehB2252PViFEjcvkpoSoldxq27KZkbRxOo0maX+uHw+nR8j992/2RaU4GUoozMthVg3r5DrGE72nsul09lQvmgT3NzaQzQ6g2nTex5QwpgArqKVWXB5lhOSYMGsAn6pZIPIm7DL/Dc881OR0i8QBkC8nczCXu3Mfwdy+EXpl7kUc5OV/OBuGhhocZx1msmM8dx63yJegD1/I5OGHU3DBv+Dn0TLHjH5OnMp8iZfnYND09vjxORjEM/BTDVImKDwEQpUELR4CIdaElJe0hEyiTFrQ5MMlpLiL6DlogqVO37TlPAAFfr1bLo+Umwkuzvf1EuHePhDW62ZjudrkYZfDsmyqSGArmYAm34oiIuHpNShhho2XhfPDQ0WNzhd1fGT1roO7Vpuva9bS2Nxc6LJ613T8dbTgS1Wdg0fR8P7v9aMtxtH+E7mf49TJfCh2YqSE40HAsZOSCA8DWlC6oyyFT71xAPDz6WgIt4aixuiO+vHx+h3d4MDfQguNt8iXLrRw/o6G8fGGHejJaXzjYTI6sMAR/E1jFA8bp0v30DBgH5NvOzzhF2gSdeS2zW3DeepBrwLSODpnTA4RgtKRlyi0ZegUwRUHATuiM7nXjFf2nEUv4NdyryFtN+Sm9WolO0uOACiW2wbgJNUlThGmUlQP3P2Sdy6nqECkrsAokjGZlmIlpsB4obXAE0gP1qyTEcEDioTyBSmGb2LZnhn0oYcV2U6G2QBcgDjnHtbLhuDpIS4e6MEGhukEiZ4ZNKCHZbH/Opdr6luuiAtSutcVefVSmY7Zo6Dvz56k41I1pj65DkaE4WBU1QnD/xPnjHQ0AAAAeJxjYGRgYADiY81JvPH8Nl8ZuJlfAAWiOB/va4DR/7/9/8b8mfkTUCUHAxOQZAAAhKEPOXicY2BkYGB+wcAAIv9/+/+V+TMDIwMq8AMAnl4HBgAAeJxjYGBgYH5Bb/z/Gy3NZqADAAB/FDOneJxjYAACCYYghiyGFoYLjGKMYYx9jAcY3zCZMEUwVTFHsJix+LEcYDViLWK9wWbC5sWWwraB7Qu7BXsAewaHAIcTxxSODZxMnCKcZpw9nKs4T3A+4nLhCuOaw/WNm4/bgtuNO4Q7ibuAu4V7Eo8M6RAAslkbZAAAeJxjYGRgYPBjmMfAwwACTEDMBYQMDP/BfAYAIQYCDwB4nH2QvU7DMBSFT/qHaAWqBGJgMgsLUvqz0bVSs3foniZ2miqNg+NW6s5z8AQ8R5+Dp2DmxHgpErUl57vfPfcOATDECQGaE+DGvc1p4YrVL7dJ95475CfPXQwQeu7Rv3ru4wULzwPc4Y0bgs41zSPePbdwiw/PbfpPzx3yyXMXD/jy3KP/9tzHKhh6HuA5UHEWmTydF3Fd58lSZvsiNmfurFhJU+e6FJNwfOYjWUoTW5mK9VHUh2xqrRLK6J1Y6NLKotCiMnorExturK1mo5HyPkz0DjEyRDDIkWKOgnXNmyPBEpK9vXPmQu7/zoobjGONEgIT/vfxhXzEfOlmYlh+U86sceRb48CpKa2FYq2Y0diRFm53ky54NU3leluahD7Exk1VmGHEq/7kQ6a46QfFq20TAHicbZIHb9swEIX9xZKt2GmTpm269x5q6+6990h/A0PRMhGZFEjKdvLry9pBgQA9gIf3Dod37w5sLbUW0Wv9PzZZok1CSocuGcv06LPCAQ6yyhqHWOcwRzjKBsc4zglOcorTnOEs5zjPBS5yictc4SrXuM4NbnKL2+Tc4S73GHCfBzzkEY95wlOe8ZwXvOQVr3nDW97xng985BOf+cJXvvGdH/zkF5v8bvVFWTpViqCt6Qjn7NS3hZcdKYxUVSpHwoU1OVJye8vO8jlQxca/gjaFCsqNtRFBrf8rN2avc0Xayrq81pG4biTN2PietCY4IYMqEmnrnVQ6631b+kkaXz5ICuVlqmbRQHee80GmZrWIs4pltaNyXwk/akfUGeoqjk+H2vmQlE7XaelsU3fnOSrFxpBUahg6lTbRT7eyotCmzMZipsd6VyVjZZos+l8wo2YhMdaovrEhF1Vlp6pI66iiuvOcD9q1NmmtJzZktVMTbRu/5qKozbeaEKzJ7XC4ur9gUqfLUUi8mKieH0fZvLBTswf/2usv4LwtW+CmTkI823pwSu2/c9aYxTYIShyKgMZimOKRVIzYZotZ/CMFYxpqdpgwZLfV+gPpZLiDAAAA\") format(\"woff\");\n font-weight: normal;\n font-style: normal;\n}\n.ag-theme-fresh .ag-icon {\n font-family: \"agGridClassic\";\n font-size: 12px;\n line-height: 12px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.ag-theme-fresh .ag-icon-aggregation::before {\n content: \"\\f101\";\n}\n.ag-theme-fresh .ag-icon-arrows::before {\n content: \"\\f102\";\n}\n.ag-theme-fresh .ag-icon-asc::before {\n content: \"\\f103\";\n}\n.ag-theme-fresh .ag-icon-cancel::before {\n content: \"\\f104\";\n}\n.ag-theme-fresh .ag-icon-chart::before {\n content: \"\\f105\";\n}\n.ag-theme-fresh .ag-icon-color-picker::before {\n content: \"\\f109\";\n}\n.ag-theme-fresh .ag-icon-columns::before {\n content: \"\\f10a\";\n}\n.ag-theme-fresh .ag-icon-contracted::before {\n content: \"\\f10b\";\n}\n.ag-theme-fresh .ag-icon-copy::before {\n content: \"\\f10c\";\n}\n.ag-theme-fresh .ag-icon-cross::before {\n content: \"\\f10d\";\n}\n.ag-theme-fresh .ag-icon-csv::before {\n content: \"\\f10e\";\n}\n.ag-theme-fresh .ag-icon-desc::before {\n content: \"\\f10f\";\n}\n.ag-theme-fresh .ag-icon-excel::before {\n content: \"\\f110\";\n}\n.ag-theme-fresh .ag-icon-expanded::before {\n content: \"\\f111\";\n}\n.ag-theme-fresh .ag-icon-eye-slash::before {\n content: \"\\f112\";\n}\n.ag-theme-fresh .ag-icon-eye::before {\n content: \"\\f113\";\n}\n.ag-theme-fresh .ag-icon-filter::before {\n content: \"\\f114\";\n}\n.ag-theme-fresh .ag-icon-first::before {\n content: \"\\f115\";\n}\n.ag-theme-fresh .ag-icon-grip::before {\n content: \"\\f116\";\n}\n.ag-theme-fresh .ag-icon-group::before {\n content: \"\\f117\";\n}\n.ag-theme-fresh .ag-icon-last::before {\n content: \"\\f118\";\n}\n.ag-theme-fresh .ag-icon-left::before {\n content: \"\\f119\";\n}\n.ag-theme-fresh .ag-icon-linked::before {\n content: \"\\f11a\";\n}\n.ag-theme-fresh .ag-icon-loading::before {\n content: \"\\f11b\";\n}\n.ag-theme-fresh .ag-icon-maximize::before {\n content: \"\\f11c\";\n}\n.ag-theme-fresh .ag-icon-menu::before {\n content: \"\\f11d\";\n}\n.ag-theme-fresh .ag-icon-minimize::before {\n content: \"\\f11e\";\n}\n.ag-theme-fresh .ag-icon-next::before {\n content: \"\\f11f\";\n}\n.ag-theme-fresh .ag-icon-none::before {\n content: \"\\f120\";\n}\n.ag-theme-fresh .ag-icon-not-allowed::before {\n content: \"\\f121\";\n}\n.ag-theme-fresh .ag-icon-paste::before {\n content: \"\\f122\";\n}\n.ag-theme-fresh .ag-icon-pin::before {\n content: \"\\f123\";\n}\n.ag-theme-fresh .ag-icon-pivot::before {\n content: \"\\f124\";\n}\n.ag-theme-fresh .ag-icon-previous::before {\n content: \"\\f125\";\n}\n.ag-theme-fresh .ag-icon-right::before {\n content: \"\\f128\";\n}\n.ag-theme-fresh .ag-icon-save::before {\n content: \"\\f129\";\n}\n.ag-theme-fresh .ag-icon-small-down::before {\n content: \"\\f12a\";\n}\n.ag-theme-fresh .ag-icon-small-left::before {\n content: \"\\f12b\";\n}\n.ag-theme-fresh .ag-icon-small-right::before {\n content: \"\\f12c\";\n}\n.ag-theme-fresh .ag-icon-small-up::before {\n content: \"\\f12d\";\n}\n.ag-theme-fresh .ag-icon-tick::before {\n content: \"\\f12e\";\n}\n.ag-theme-fresh .ag-icon-tree-closed::before {\n content: \"\\f12f\";\n}\n.ag-theme-fresh .ag-icon-tree-indeterminate::before {\n content: \"\\f130\";\n}\n.ag-theme-fresh .ag-icon-tree-open::before {\n content: \"\\f131\";\n}\n.ag-theme-fresh .ag-icon-unlinked::before {\n content: \"\\f132\";\n}\n.ag-theme-fresh .ag-icon-row-drag::before {\n content: \"\\f116\";\n}\n.ag-theme-fresh .ag-left-arrow::before {\n content: \"\\f119\";\n}\n.ag-theme-fresh .ag-right-arrow::before {\n content: \"\\f128\";\n}\n.ag-theme-fresh .ag-root-wrapper {\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n}\n.ag-theme-fresh [class^=ag-], .ag-theme-fresh [class^=ag-]:focus, .ag-theme-fresh [class^=ag-]:after, .ag-theme-fresh [class^=ag-]:before {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n outline: none;\n}\n.ag-theme-fresh [class^=ag-]::-ms-clear {\n display: none;\n}\n.ag-theme-fresh .ag-checkbox .ag-input-wrapper,\n.ag-theme-fresh .ag-radio-button .ag-input-wrapper {\n overflow: visible;\n}\n.ag-theme-fresh .ag-range-field .ag-input-wrapper {\n height: 100%;\n}\n.ag-theme-fresh .ag-toggle-button {\n -webkit-box-flex: 0;\n flex: none;\n width: unset;\n min-width: unset;\n}\n.ag-theme-fresh .ag-ltr .ag-label-align-right .ag-label {\n margin-left: 4px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-label-align-right .ag-label {\n margin-right: 4px;\n}\n\n.ag-theme-fresh input[class^=ag-] {\n margin: 0;\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n}\n.ag-theme-fresh textarea[class^=ag-],\n.ag-theme-fresh select[class^=ag-] {\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n}\n.ag-theme-fresh input[class^=ag-]:not([type]),\n.ag-theme-fresh input[class^=ag-][type=text],\n.ag-theme-fresh input[class^=ag-][type=number],\n.ag-theme-fresh input[class^=ag-][type=tel],\n.ag-theme-fresh input[class^=ag-][type=date],\n.ag-theme-fresh input[class^=ag-][type=datetime-local],\n.ag-theme-fresh textarea[class^=ag-] {\n font-size: inherit;\n line-height: inherit;\n color: inherit;\n border-width: 1px;\n border-style: solid;\n border-color: #000;\n border-color: var(--ag-input-border-color, #000);\n}\n.ag-theme-fresh input[class^=ag-]:not([type]):disabled,\n.ag-theme-fresh input[class^=ag-][type=text]:disabled,\n.ag-theme-fresh input[class^=ag-][type=number]:disabled,\n.ag-theme-fresh input[class^=ag-][type=tel]:disabled,\n.ag-theme-fresh input[class^=ag-][type=date]:disabled,\n.ag-theme-fresh input[class^=ag-][type=datetime-local]:disabled,\n.ag-theme-fresh textarea[class^=ag-]:disabled {\n color: rgba(0, 0, 0, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.5));\n background-color: #ebebeb;\n background-color: var(--ag-input-disabled-background-color, #ebebeb);\n border-color: rgba(0, 0, 0, 0.3);\n border-color: var(--ag-input-disabled-border-color, rgba(0, 0, 0, 0.3));\n}\n.ag-theme-fresh input[class^=ag-]:not([type]):focus,\n.ag-theme-fresh input[class^=ag-][type=text]:focus,\n.ag-theme-fresh input[class^=ag-][type=number]:focus,\n.ag-theme-fresh input[class^=ag-][type=tel]:focus,\n.ag-theme-fresh input[class^=ag-][type=date]:focus,\n.ag-theme-fresh input[class^=ag-][type=datetime-local]:focus,\n.ag-theme-fresh textarea[class^=ag-]:focus {\n outline: none;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-fresh input[class^=ag-]:not([type]):invalid,\n.ag-theme-fresh input[class^=ag-][type=text]:invalid,\n.ag-theme-fresh input[class^=ag-][type=number]:invalid,\n.ag-theme-fresh input[class^=ag-][type=tel]:invalid,\n.ag-theme-fresh input[class^=ag-][type=date]:invalid,\n.ag-theme-fresh input[class^=ag-][type=datetime-local]:invalid,\n.ag-theme-fresh textarea[class^=ag-]:invalid {\n border-width: 2px;\n border-style: solid;\n border-color: var(--ag-input-border-color-invalid);\n}\n.ag-theme-fresh input[class^=ag-][type=number] {\n -moz-appearance: textfield;\n}\n.ag-theme-fresh input[class^=ag-][type=number]::-webkit-outer-spin-button, .ag-theme-fresh input[class^=ag-][type=number]::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n.ag-theme-fresh input[class^=ag-][type=range] {\n padding: 0;\n}\n.ag-theme-fresh .ag-drag-handle {\n color: #000;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-fresh .ag-list-item, .ag-theme-fresh .ag-virtual-list-item {\n height: 20px;\n}\n.ag-theme-fresh .ag-keyboard-focus .ag-virtual-list-item:focus {\n outline: none;\n}\n.ag-theme-fresh .ag-keyboard-focus .ag-virtual-list-item:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-fresh .ag-select-list {\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n overflow-y: auto;\n overflow-x: hidden;\n}\n.ag-theme-fresh .ag-list-item {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ag-theme-fresh .ag-list-item.ag-active-item {\n background-color: var(--ag-row-hover-color);\n}\n.ag-theme-fresh .ag-select-list-item {\n padding-left: 4px;\n padding-right: 4px;\n cursor: default;\n -moz-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n}\n.ag-theme-fresh .ag-select-list-item span {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n.ag-theme-fresh .ag-select .ag-picker-field-wrapper {\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n min-height: 20px;\n cursor: default;\n}\n.ag-theme-fresh .ag-select.ag-disabled .ag-picker-field-wrapper:focus {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.ag-theme-fresh .ag-select:not(.ag-cell-editor) {\n height: 20px;\n}\n.ag-theme-fresh .ag-select .ag-picker-field-display {\n margin: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ag-theme-fresh .ag-select .ag-picker-field-icon {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-fresh .ag-select.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-fresh .ag-rich-select {\n background-color: #f6f6f6;\n background-color: var(--ag-control-panel-background-color, #f6f6f6);\n}\n.ag-theme-fresh .ag-rich-select-list {\n width: 100%;\n min-width: 200px;\n height: 162.5px;\n}\n.ag-theme-fresh .ag-rich-select-value {\n padding: 0 4px 0 12px;\n height: 25px;\n border-bottom: solid 1px;\n border-bottom-color: darkgrey;\n border-bottom-color: var(--ag-secondary-border-color, var(--ag-border-color, darkgrey));\n}\n.ag-theme-fresh .ag-rich-select-virtual-list-item {\n cursor: default;\n height: 20px;\n}\n.ag-theme-fresh .ag-rich-select-virtual-list-item:hover {\n background-color: var(--ag-row-hover-color);\n}\n.ag-theme-fresh .ag-rich-select-row {\n padding-left: 12px;\n}\n.ag-theme-fresh .ag-rich-select-row-selected {\n background-color: #bde2e5;\n background-color: var(--ag-selected-row-background-color, #bde2e5);\n}\n.ag-theme-fresh .ag-row-drag,\n.ag-theme-fresh .ag-selection-checkbox,\n.ag-theme-fresh .ag-group-expanded,\n.ag-theme-fresh .ag-group-contracted {\n color: #000;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-fresh .ag-ltr .ag-row-drag, .ag-theme-fresh .ag-ltr .ag-selection-checkbox, .ag-theme-fresh .ag-ltr .ag-group-expanded, .ag-theme-fresh .ag-ltr .ag-group-contracted {\n margin-right: 12px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-drag, .ag-theme-fresh .ag-rtl .ag-selection-checkbox, .ag-theme-fresh .ag-rtl .ag-group-expanded, .ag-theme-fresh .ag-rtl .ag-group-contracted {\n margin-left: 12px;\n}\n\n.ag-theme-fresh .ag-cell-wrapper > *:not(.ag-cell-value):not(.ag-group-value) {\n height: min(var(--ag-line-height, 23px), 23px);\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-flex: 0;\n flex: none;\n}\n.ag-theme-fresh .ag-group-expanded,\n.ag-theme-fresh .ag-group-contracted {\n cursor: pointer;\n}\n.ag-theme-fresh .ag-group-title-bar-icon {\n cursor: pointer;\n -webkit-box-flex: 0;\n flex: none;\n color: #000;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-fresh .ag-ltr .ag-group-child-count {\n margin-left: 2px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-group-child-count {\n margin-right: 2px;\n}\n\n.ag-theme-fresh .ag-group-title-bar {\n background-color: #ececec;\n background-color: var(--ag-subheader-background-color, #ececec);\n padding: 4px;\n}\n.ag-theme-fresh .ag-group-toolbar {\n padding: 4px;\n}\n.ag-theme-fresh .ag-disabled-group-title-bar, .ag-theme-fresh .ag-disabled-group-container {\n opacity: 0.5;\n}\n.ag-theme-fresh .group-item {\n margin: 2px 0;\n}\n.ag-theme-fresh .ag-label {\n white-space: nowrap;\n}\n.ag-theme-fresh .ag-ltr .ag-label {\n margin-right: 4px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-label {\n margin-left: 4px;\n}\n\n.ag-theme-fresh .ag-label-align-top .ag-label {\n margin-bottom: 2px;\n}\n.ag-theme-fresh .ag-ltr .ag-slider-field, .ag-theme-fresh .ag-ltr .ag-angle-select-field {\n margin-right: 8px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-slider-field, .ag-theme-fresh .ag-rtl .ag-angle-select-field {\n margin-left: 8px;\n}\n\n.ag-theme-fresh .ag-angle-select-parent-circle {\n width: 24px;\n height: 24px;\n border-radius: 12px;\n border: solid 1px;\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n}\n.ag-theme-fresh .ag-angle-select-child-circle {\n top: 4px;\n left: 12px;\n width: 6px;\n height: 6px;\n margin-left: -3px;\n margin-top: -4px;\n border-radius: 3px;\n background-color: #000;\n background-color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-fresh .ag-picker-field-wrapper {\n border: 1px solid;\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n border-radius: 5px;\n}\n.ag-theme-fresh .ag-picker-field-button {\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n color: #000;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-fresh .ag-dialog.ag-color-dialog {\n border-radius: 5px;\n}\n.ag-theme-fresh .ag-color-picker .ag-picker-field-display {\n height: 12px;\n}\n.ag-theme-fresh .ag-color-panel {\n padding: 4px;\n}\n.ag-theme-fresh .ag-spectrum-color {\n background-color: rgb(255, 0, 0);\n border-radius: 2px;\n}\n.ag-theme-fresh .ag-spectrum-tools {\n padding: 10px;\n}\n.ag-theme-fresh .ag-spectrum-sat {\n background-image: -webkit-gradient(linear, left top, right top, from(white), to(rgba(204, 154, 129, 0)));\n background-image: linear-gradient(to right, white, rgba(204, 154, 129, 0));\n}\n.ag-theme-fresh .ag-spectrum-val {\n background-image: -webkit-gradient(linear, left bottom, left top, from(black), to(rgba(204, 154, 129, 0)));\n background-image: linear-gradient(to top, black, rgba(204, 154, 129, 0));\n}\n.ag-theme-fresh .ag-spectrum-dragger {\n border-radius: 12px;\n height: 12px;\n width: 12px;\n border: 1px solid white;\n background: black;\n -webkit-box-shadow: 0 0 2px 0px rgba(0, 0, 0, 0.24);\n box-shadow: 0 0 2px 0px rgba(0, 0, 0, 0.24);\n}\n.ag-theme-fresh .ag-spectrum-hue-background {\n border-radius: 2px;\n}\n.ag-theme-fresh .ag-spectrum-alpha-background {\n border-radius: 2px;\n}\n.ag-theme-fresh .ag-spectrum-tool {\n margin-bottom: 10px;\n height: 11px;\n border-radius: 2px;\n}\n.ag-theme-fresh .ag-spectrum-slider {\n margin-top: -12px;\n width: 13px;\n height: 13px;\n border-radius: 13px;\n background-color: rgb(248, 248, 248);\n -webkit-box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\n box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\n}\n.ag-theme-fresh .ag-recent-color {\n margin: 0 3px;\n}\n.ag-theme-fresh .ag-recent-color:first-child {\n margin-left: 0;\n}\n.ag-theme-fresh .ag-recent-color:last-child {\n margin-right: 0;\n}\n.ag-theme-fresh.ag-dnd-ghost {\n border: solid 1px;\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n background: #FFF;\n background: var(--ag-background-color, #FFF);\n border-radius: 0px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n overflow: hidden;\n text-overflow: ellipsis;\n border: solid 1px;\n border-color: darkgrey;\n border-color: var(--ag-secondary-border-color, var(--ag-border-color, darkgrey));\n color: #000;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n height: 25px !important;\n line-height: 25px;\n margin: 0;\n padding: 0 8px;\n -webkit-transform: translateY(8px);\n transform: translateY(8px);\n}\n.ag-theme-fresh .ag-dnd-ghost-icon {\n margin-right: 4px;\n color: #000;\n color: var(--ag-foreground-color, #000);\n}\n.ag-theme-fresh .ag-popup-child:not(.ag-tooltip-custom) {\n -webkit-box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.3);\n box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.3);\n}\n.ag-dragging-range-handle .ag-theme-fresh .ag-dialog, .ag-dragging-fill-handle .ag-theme-fresh .ag-dialog {\n opacity: 0.7;\n pointer-events: none;\n}\n.ag-theme-fresh .ag-dialog {\n border-radius: 0px;\n border: solid 1px;\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-fresh .ag-panel {\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n}\n.ag-theme-fresh .ag-panel-title-bar {\n background-color: var(--ag-header-background-color);\n color: #000;\n color: var(--ag-header-foreground-color, var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000)));\n height: 25px;\n padding: 4px 12px;\n border-bottom: solid 1px;\n border-bottom-color: darkgrey;\n border-bottom-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-fresh .ag-ltr .ag-panel-title-bar-button {\n margin-left: 4px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-panel-title-bar-button {\n margin-right: 4px;\n}\n\n.ag-theme-fresh .ag-tooltip {\n background-color: var(--ag-header-background-color);\n color: #000;\n color: var(--ag-foreground-color, #000);\n padding: 4px;\n border: solid 1px;\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n border-radius: 0px;\n -webkit-transition: opacity 1s;\n transition: opacity 1s;\n white-space: normal;\n}\n.ag-theme-fresh .ag-tooltip.ag-tooltip-hiding {\n opacity: 0;\n}\n.ag-theme-fresh .ag-tooltip-custom {\n -webkit-transition: opacity 1s;\n transition: opacity 1s;\n}\n.ag-theme-fresh .ag-tooltip-custom.ag-tooltip-hiding {\n opacity: 0;\n}\n.ag-theme-fresh .ag-ltr .ag-column-select-indent-1 {\n padding-left: 16px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-column-select-indent-1 {\n padding-right: 16px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-column-select-indent-2 {\n padding-left: 32px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-column-select-indent-2 {\n padding-right: 32px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-column-select-indent-3 {\n padding-left: 48px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-column-select-indent-3 {\n padding-right: 48px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-column-select-indent-4 {\n padding-left: 64px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-column-select-indent-4 {\n padding-right: 64px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-column-select-indent-5 {\n padding-left: 80px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-column-select-indent-5 {\n padding-right: 80px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-column-select-indent-6 {\n padding-left: 96px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-column-select-indent-6 {\n padding-right: 96px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-column-select-indent-7 {\n padding-left: 112px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-column-select-indent-7 {\n padding-right: 112px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-column-select-indent-8 {\n padding-left: 128px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-column-select-indent-8 {\n padding-right: 128px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-column-select-indent-9 {\n padding-left: 144px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-column-select-indent-9 {\n padding-right: 144px;\n}\n\n.ag-theme-fresh .ag-column-select-header-icon {\n cursor: pointer;\n}\n.ag-theme-fresh .ag-keyboard-focus .ag-column-select-header-icon:focus {\n outline: none;\n}\n.ag-theme-fresh .ag-keyboard-focus .ag-column-select-header-icon:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 0px;\n left: 0px;\n display: block;\n width: calc(100% - 0px);\n height: calc(100% - 0px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-fresh .ag-ltr .ag-column-group-icons:not(:last-child), .ag-theme-fresh .ag-ltr .ag-column-select-header-icon:not(:last-child), .ag-theme-fresh .ag-ltr .ag-column-select-header-checkbox:not(:last-child), .ag-theme-fresh .ag-ltr .ag-column-select-header-filter-wrapper:not(:last-child), .ag-theme-fresh .ag-ltr .ag-column-select-checkbox:not(:last-child), .ag-theme-fresh .ag-ltr .ag-column-select-column-drag-handle:not(:last-child), .ag-theme-fresh .ag-ltr .ag-column-select-column-group-drag-handle:not(:last-child), .ag-theme-fresh .ag-ltr .ag-column-select-column-label:not(:last-child) {\n margin-right: 8px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-column-group-icons:not(:last-child), .ag-theme-fresh .ag-rtl .ag-column-select-header-icon:not(:last-child), .ag-theme-fresh .ag-rtl .ag-column-select-header-checkbox:not(:last-child), .ag-theme-fresh .ag-rtl .ag-column-select-header-filter-wrapper:not(:last-child), .ag-theme-fresh .ag-rtl .ag-column-select-checkbox:not(:last-child), .ag-theme-fresh .ag-rtl .ag-column-select-column-drag-handle:not(:last-child), .ag-theme-fresh .ag-rtl .ag-column-select-column-group-drag-handle:not(:last-child), .ag-theme-fresh .ag-rtl .ag-column-select-column-label:not(:last-child) {\n margin-left: 8px;\n}\n\n.ag-theme-fresh .ag-keyboard-focus .ag-column-select-virtual-list-item:focus {\n outline: none;\n}\n.ag-theme-fresh .ag-keyboard-focus .ag-column-select-virtual-list-item:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 1px;\n left: 1px;\n display: block;\n width: calc(100% - 2px);\n height: calc(100% - 2px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-fresh .ag-column-select-column-group:not(:last-child),\n.ag-theme-fresh .ag-column-select-column:not(:last-child) {\n margin-bottom: 4px;\n}\n.ag-theme-fresh .ag-column-select-column-readonly,\n.ag-theme-fresh .ag-column-select-column-group-readonly {\n color: rgba(0, 0, 0, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.5));\n pointer-events: none;\n}\n.ag-theme-fresh .ag-ltr .ag-column-select-add-group-indent {\n margin-left: 20px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-column-select-add-group-indent {\n margin-right: 20px;\n}\n\n.ag-theme-fresh .ag-column-select-virtual-list-viewport {\n padding: 3px 0px;\n}\n.ag-theme-fresh .ag-column-select-virtual-list-item {\n padding: 0 6px;\n}\n.ag-theme-fresh .ag-rtl {\n text-align: right;\n}\n.ag-theme-fresh .ag-root-wrapper {\n border: solid 1px;\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-1 {\n padding-left: 36px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-1 {\n padding-right: 36px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-1 {\n padding-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-1 {\n padding-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-1 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-1 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-2 {\n padding-left: 60px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-2 {\n padding-right: 60px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-2 {\n padding-left: 48px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-2 {\n padding-right: 48px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-2 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-2 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-3 {\n padding-left: 84px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-3 {\n padding-right: 84px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-3 {\n padding-left: 72px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-3 {\n padding-right: 72px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-3 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-3 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-4 {\n padding-left: 108px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-4 {\n padding-right: 108px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-4 {\n padding-left: 96px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-4 {\n padding-right: 96px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-4 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-4 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-5 {\n padding-left: 132px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-5 {\n padding-right: 132px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-5 {\n padding-left: 120px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-5 {\n padding-right: 120px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-5 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-5 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-6 {\n padding-left: 156px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-6 {\n padding-right: 156px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-6 {\n padding-left: 144px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-6 {\n padding-right: 144px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-6 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-6 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-7 {\n padding-left: 180px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-7 {\n padding-right: 180px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-7 {\n padding-left: 168px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-7 {\n padding-right: 168px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-7 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-7 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-8 {\n padding-left: 204px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-8 {\n padding-right: 204px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-8 {\n padding-left: 192px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-8 {\n padding-right: 192px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-8 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-8 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-9 {\n padding-left: 228px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-9 {\n padding-right: 228px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-9 {\n padding-left: 216px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-9 {\n padding-right: 216px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-9 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-9 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-10 {\n padding-left: 252px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-10 {\n padding-right: 252px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-10 {\n padding-left: 240px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-10 {\n padding-right: 240px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-10 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-10 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-11 {\n padding-left: 276px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-11 {\n padding-right: 276px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-11 {\n padding-left: 264px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-11 {\n padding-right: 264px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-11 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-11 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-12 {\n padding-left: 300px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-12 {\n padding-right: 300px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-12 {\n padding-left: 288px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-12 {\n padding-right: 288px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-12 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-12 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-13 {\n padding-left: 324px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-13 {\n padding-right: 324px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-13 {\n padding-left: 312px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-13 {\n padding-right: 312px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-13 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-13 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-14 {\n padding-left: 348px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-14 {\n padding-right: 348px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-14 {\n padding-left: 336px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-14 {\n padding-right: 336px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-14 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-14 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-15 {\n padding-left: 372px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-15 {\n padding-right: 372px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-15 {\n padding-left: 360px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-15 {\n padding-right: 360px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-15 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-15 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-16 {\n padding-left: 396px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-16 {\n padding-right: 396px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-16 {\n padding-left: 384px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-16 {\n padding-right: 384px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-16 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-16 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-17 {\n padding-left: 420px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-17 {\n padding-right: 420px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-17 {\n padding-left: 408px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-17 {\n padding-right: 408px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-17 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-17 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-18 {\n padding-left: 444px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-18 {\n padding-right: 444px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-18 {\n padding-left: 432px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-18 {\n padding-right: 432px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-18 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-18 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-19 {\n padding-left: 468px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-19 {\n padding-right: 468px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-19 {\n padding-left: 456px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-19 {\n padding-right: 456px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-19 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-19 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-20 {\n padding-left: 492px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-20 {\n padding-right: 492px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-20 {\n padding-left: 480px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-20 {\n padding-right: 480px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-20 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-20 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-21 {\n padding-left: 516px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-21 {\n padding-right: 516px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-21 {\n padding-left: 504px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-21 {\n padding-right: 504px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-21 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-21 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-22 {\n padding-left: 540px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-22 {\n padding-right: 540px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-22 {\n padding-left: 528px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-22 {\n padding-right: 528px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-22 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-22 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-23 {\n padding-left: 564px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-23 {\n padding-right: 564px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-23 {\n padding-left: 552px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-23 {\n padding-right: 552px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-23 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-23 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-24 {\n padding-left: 588px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-24 {\n padding-right: 588px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-24 {\n padding-left: 576px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-24 {\n padding-right: 576px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-24 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-24 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-25 {\n padding-left: 612px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-25 {\n padding-right: 612px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-25 {\n padding-left: 600px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-25 {\n padding-right: 600px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-25 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-25 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-26 {\n padding-left: 636px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-26 {\n padding-right: 636px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-26 {\n padding-left: 624px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-26 {\n padding-right: 624px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-26 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-26 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-27 {\n padding-left: 660px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-27 {\n padding-right: 660px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-27 {\n padding-left: 648px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-27 {\n padding-right: 648px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-27 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-27 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-28 {\n padding-left: 684px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-28 {\n padding-right: 684px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-28 {\n padding-left: 672px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-28 {\n padding-right: 672px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-28 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-28 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-29 {\n padding-left: 708px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-29 {\n padding-right: 708px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-29 {\n padding-left: 696px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-29 {\n padding-right: 696px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-29 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-29 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-30 {\n padding-left: 732px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-30 {\n padding-right: 732px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-30 {\n padding-left: 720px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-30 {\n padding-right: 720px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-30 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-30 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-31 {\n padding-left: 756px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-31 {\n padding-right: 756px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-31 {\n padding-left: 744px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-31 {\n padding-right: 744px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-31 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-31 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-32 {\n padding-left: 780px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-32 {\n padding-right: 780px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-32 {\n padding-left: 768px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-32 {\n padding-right: 768px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-32 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-32 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-33 {\n padding-left: 804px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-33 {\n padding-right: 804px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-33 {\n padding-left: 792px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-33 {\n padding-right: 792px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-33 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-33 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-34 {\n padding-left: 828px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-34 {\n padding-right: 828px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-34 {\n padding-left: 816px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-34 {\n padding-right: 816px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-34 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-34 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-35 {\n padding-left: 852px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-35 {\n padding-right: 852px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-35 {\n padding-left: 840px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-35 {\n padding-right: 840px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-35 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-35 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-36 {\n padding-left: 876px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-36 {\n padding-right: 876px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-36 {\n padding-left: 864px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-36 {\n padding-right: 864px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-36 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-36 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-37 {\n padding-left: 900px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-37 {\n padding-right: 900px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-37 {\n padding-left: 888px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-37 {\n padding-right: 888px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-37 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-37 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-38 {\n padding-left: 924px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-38 {\n padding-right: 924px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-38 {\n padding-left: 912px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-38 {\n padding-right: 912px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-38 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-38 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-39 {\n padding-left: 948px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-39 {\n padding-right: 948px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-39 {\n padding-left: 936px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-39 {\n padding-right: 936px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-39 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-39 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-40 {\n padding-left: 972px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-40 {\n padding-right: 972px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-40 {\n padding-left: 960px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-40 {\n padding-right: 960px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-40 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-40 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-41 {\n padding-left: 996px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-41 {\n padding-right: 996px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-41 {\n padding-left: 984px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-41 {\n padding-right: 984px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-41 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-41 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-42 {\n padding-left: 1020px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-42 {\n padding-right: 1020px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-42 {\n padding-left: 1008px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-42 {\n padding-right: 1008px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-42 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-42 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-43 {\n padding-left: 1044px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-43 {\n padding-right: 1044px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-43 {\n padding-left: 1032px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-43 {\n padding-right: 1032px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-43 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-43 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-44 {\n padding-left: 1068px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-44 {\n padding-right: 1068px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-44 {\n padding-left: 1056px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-44 {\n padding-right: 1056px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-44 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-44 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-45 {\n padding-left: 1092px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-45 {\n padding-right: 1092px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-45 {\n padding-left: 1080px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-45 {\n padding-right: 1080px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-45 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-45 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-46 {\n padding-left: 1116px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-46 {\n padding-right: 1116px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-46 {\n padding-left: 1104px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-46 {\n padding-right: 1104px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-46 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-46 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-47 {\n padding-left: 1140px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-47 {\n padding-right: 1140px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-47 {\n padding-left: 1128px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-47 {\n padding-right: 1128px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-47 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-47 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-48 {\n padding-left: 1164px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-48 {\n padding-right: 1164px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-48 {\n padding-left: 1152px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-48 {\n padding-right: 1152px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-48 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-48 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-49 {\n padding-left: 1188px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-49 {\n padding-right: 1188px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-49 {\n padding-left: 1176px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-49 {\n padding-right: 1176px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-49 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-49 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-50 {\n padding-left: 1212px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-50 {\n padding-right: 1212px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-50 {\n padding-left: 1200px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-50 {\n padding-right: 1200px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-50 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-50 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-51 {\n padding-left: 1236px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-51 {\n padding-right: 1236px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-51 {\n padding-left: 1224px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-51 {\n padding-right: 1224px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-51 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-51 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-52 {\n padding-left: 1260px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-52 {\n padding-right: 1260px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-52 {\n padding-left: 1248px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-52 {\n padding-right: 1248px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-52 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-52 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-53 {\n padding-left: 1284px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-53 {\n padding-right: 1284px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-53 {\n padding-left: 1272px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-53 {\n padding-right: 1272px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-53 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-53 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-54 {\n padding-left: 1308px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-54 {\n padding-right: 1308px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-54 {\n padding-left: 1296px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-54 {\n padding-right: 1296px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-54 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-54 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-55 {\n padding-left: 1332px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-55 {\n padding-right: 1332px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-55 {\n padding-left: 1320px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-55 {\n padding-right: 1320px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-55 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-55 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-56 {\n padding-left: 1356px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-56 {\n padding-right: 1356px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-56 {\n padding-left: 1344px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-56 {\n padding-right: 1344px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-56 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-56 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-57 {\n padding-left: 1380px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-57 {\n padding-right: 1380px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-57 {\n padding-left: 1368px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-57 {\n padding-right: 1368px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-57 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-57 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-58 {\n padding-left: 1404px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-58 {\n padding-right: 1404px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-58 {\n padding-left: 1392px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-58 {\n padding-right: 1392px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-58 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-58 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-59 {\n padding-left: 1428px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-59 {\n padding-right: 1428px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-59 {\n padding-left: 1416px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-59 {\n padding-right: 1416px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-59 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-59 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-60 {\n padding-left: 1452px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-60 {\n padding-right: 1452px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-60 {\n padding-left: 1440px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-60 {\n padding-right: 1440px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-60 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-60 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-61 {\n padding-left: 1476px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-61 {\n padding-right: 1476px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-61 {\n padding-left: 1464px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-61 {\n padding-right: 1464px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-61 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-61 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-62 {\n padding-left: 1500px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-62 {\n padding-right: 1500px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-62 {\n padding-left: 1488px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-62 {\n padding-right: 1488px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-62 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-62 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-63 {\n padding-left: 1524px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-63 {\n padding-right: 1524px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-63 {\n padding-left: 1512px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-63 {\n padding-right: 1512px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-63 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-63 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-64 {\n padding-left: 1548px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-64 {\n padding-right: 1548px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-64 {\n padding-left: 1536px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-64 {\n padding-right: 1536px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-64 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-64 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-65 {\n padding-left: 1572px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-65 {\n padding-right: 1572px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-65 {\n padding-left: 1560px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-65 {\n padding-right: 1560px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-65 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-65 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-66 {\n padding-left: 1596px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-66 {\n padding-right: 1596px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-66 {\n padding-left: 1584px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-66 {\n padding-right: 1584px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-66 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-66 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-67 {\n padding-left: 1620px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-67 {\n padding-right: 1620px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-67 {\n padding-left: 1608px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-67 {\n padding-right: 1608px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-67 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-67 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-68 {\n padding-left: 1644px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-68 {\n padding-right: 1644px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-68 {\n padding-left: 1632px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-68 {\n padding-right: 1632px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-68 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-68 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-69 {\n padding-left: 1668px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-69 {\n padding-right: 1668px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-69 {\n padding-left: 1656px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-69 {\n padding-right: 1656px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-69 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-69 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-70 {\n padding-left: 1692px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-70 {\n padding-right: 1692px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-70 {\n padding-left: 1680px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-70 {\n padding-right: 1680px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-70 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-70 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-71 {\n padding-left: 1716px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-71 {\n padding-right: 1716px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-71 {\n padding-left: 1704px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-71 {\n padding-right: 1704px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-71 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-71 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-72 {\n padding-left: 1740px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-72 {\n padding-right: 1740px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-72 {\n padding-left: 1728px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-72 {\n padding-right: 1728px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-72 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-72 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-73 {\n padding-left: 1764px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-73 {\n padding-right: 1764px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-73 {\n padding-left: 1752px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-73 {\n padding-right: 1752px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-73 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-73 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-74 {\n padding-left: 1788px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-74 {\n padding-right: 1788px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-74 {\n padding-left: 1776px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-74 {\n padding-right: 1776px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-74 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-74 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-75 {\n padding-left: 1812px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-75 {\n padding-right: 1812px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-75 {\n padding-left: 1800px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-75 {\n padding-right: 1800px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-75 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-75 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-76 {\n padding-left: 1836px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-76 {\n padding-right: 1836px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-76 {\n padding-left: 1824px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-76 {\n padding-right: 1824px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-76 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-76 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-77 {\n padding-left: 1860px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-77 {\n padding-right: 1860px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-77 {\n padding-left: 1848px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-77 {\n padding-right: 1848px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-77 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-77 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-78 {\n padding-left: 1884px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-78 {\n padding-right: 1884px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-78 {\n padding-left: 1872px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-78 {\n padding-right: 1872px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-78 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-78 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-79 {\n padding-left: 1908px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-79 {\n padding-right: 1908px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-79 {\n padding-left: 1896px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-79 {\n padding-right: 1896px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-79 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-79 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-80 {\n padding-left: 1932px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-80 {\n padding-right: 1932px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-80 {\n padding-left: 1920px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-80 {\n padding-right: 1920px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-80 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-80 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-81 {\n padding-left: 1956px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-81 {\n padding-right: 1956px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-81 {\n padding-left: 1944px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-81 {\n padding-right: 1944px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-81 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-81 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-82 {\n padding-left: 1980px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-82 {\n padding-right: 1980px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-82 {\n padding-left: 1968px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-82 {\n padding-right: 1968px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-82 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-82 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-83 {\n padding-left: 2004px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-83 {\n padding-right: 2004px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-83 {\n padding-left: 1992px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-83 {\n padding-right: 1992px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-83 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-83 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-84 {\n padding-left: 2028px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-84 {\n padding-right: 2028px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-84 {\n padding-left: 2016px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-84 {\n padding-right: 2016px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-84 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-84 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-85 {\n padding-left: 2052px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-85 {\n padding-right: 2052px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-85 {\n padding-left: 2040px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-85 {\n padding-right: 2040px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-85 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-85 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-86 {\n padding-left: 2076px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-86 {\n padding-right: 2076px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-86 {\n padding-left: 2064px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-86 {\n padding-right: 2064px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-86 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-86 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-87 {\n padding-left: 2100px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-87 {\n padding-right: 2100px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-87 {\n padding-left: 2088px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-87 {\n padding-right: 2088px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-87 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-87 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-88 {\n padding-left: 2124px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-88 {\n padding-right: 2124px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-88 {\n padding-left: 2112px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-88 {\n padding-right: 2112px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-88 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-88 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-89 {\n padding-left: 2148px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-89 {\n padding-right: 2148px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-89 {\n padding-left: 2136px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-89 {\n padding-right: 2136px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-89 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-89 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-90 {\n padding-left: 2172px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-90 {\n padding-right: 2172px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-90 {\n padding-left: 2160px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-90 {\n padding-right: 2160px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-90 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-90 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-91 {\n padding-left: 2196px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-91 {\n padding-right: 2196px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-91 {\n padding-left: 2184px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-91 {\n padding-right: 2184px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-91 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-91 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-92 {\n padding-left: 2220px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-92 {\n padding-right: 2220px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-92 {\n padding-left: 2208px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-92 {\n padding-right: 2208px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-92 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-92 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-93 {\n padding-left: 2244px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-93 {\n padding-right: 2244px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-93 {\n padding-left: 2232px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-93 {\n padding-right: 2232px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-93 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-93 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-94 {\n padding-left: 2268px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-94 {\n padding-right: 2268px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-94 {\n padding-left: 2256px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-94 {\n padding-right: 2256px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-94 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-94 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-95 {\n padding-left: 2292px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-95 {\n padding-right: 2292px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-95 {\n padding-left: 2280px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-95 {\n padding-right: 2280px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-95 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-95 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-96 {\n padding-left: 2316px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-96 {\n padding-right: 2316px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-96 {\n padding-left: 2304px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-96 {\n padding-right: 2304px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-96 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-96 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-97 {\n padding-left: 2340px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-97 {\n padding-right: 2340px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-97 {\n padding-left: 2328px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-97 {\n padding-right: 2328px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-97 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-97 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-98 {\n padding-left: 2364px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-98 {\n padding-right: 2364px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-98 {\n padding-left: 2352px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-98 {\n padding-right: 2352px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-98 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-98 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-99 {\n padding-left: 2388px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-99 {\n padding-right: 2388px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-indent-99 {\n padding-left: 2376px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-indent-99 {\n padding-right: 2376px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-level-99 .ag-pivot-leaf-group {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-level-99 .ag-pivot-leaf-group {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-row-group-leaf-indent {\n margin-left: 24px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-row-group-leaf-indent {\n margin-right: 24px;\n}\n\n.ag-theme-fresh .ag-value-change-delta {\n padding-right: 2px;\n}\n.ag-theme-fresh .ag-value-change-delta-up {\n color: darkgreen;\n color: var(--ag-value-change-delta-up-color, darkgreen);\n}\n.ag-theme-fresh .ag-value-change-delta-down {\n color: darkred;\n color: var(--ag-value-change-delta-down-color, darkred);\n}\n.ag-theme-fresh .ag-value-change-value {\n background-color: transparent;\n border-radius: 1px;\n padding-left: 1px;\n padding-right: 1px;\n -webkit-transition: background-color 1s;\n transition: background-color 1s;\n}\n.ag-theme-fresh .ag-value-change-value-highlight {\n background-color: #cec;\n background-color: var(--ag-value-change-value-highlight-background-color, #cec);\n -webkit-transition: background-color 0.1s;\n transition: background-color 0.1s;\n}\n.ag-theme-fresh .ag-cell-data-changed {\n background-color: #cec !important;\n background-color: var(--ag-value-change-value-highlight-background-color, #cec) !important;\n}\n.ag-theme-fresh .ag-cell-data-changed-animation {\n background-color: transparent;\n}\n.ag-theme-fresh .ag-cell-highlight {\n background-color: rgba(136, 255, 136, 0.4) !important;\n background-color: var(--ag-range-selection-highlight-color, rgba(136, 255, 136, 0.4)) !important;\n}\n.ag-theme-fresh .ag-row {\n height: 25px;\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n color: #000;\n color: var(--ag-data-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-fresh .ag-row-highlight-above::after, .ag-theme-fresh .ag-row-highlight-below::after {\n content: \"\";\n position: absolute;\n width: calc(100% - 1px);\n height: 1px;\n background-color: #000;\n background-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n left: 1px;\n}\n.ag-theme-fresh .ag-row-highlight-above::after {\n top: -1px;\n}\n.ag-theme-fresh .ag-row-highlight-above.ag-row-first::after {\n top: 0;\n}\n.ag-theme-fresh .ag-row-highlight-below::after {\n bottom: 0px;\n}\n.ag-theme-fresh .ag-row-odd {\n background-color: #f6f6f6;\n background-color: var(--ag-odd-row-background-color, #f6f6f6);\n}\n.ag-theme-fresh .ag-body-horizontal-scroll:not(.ag-scrollbar-invisible) .ag-horizontal-left-spacer:not(.ag-scroller-corner) {\n border-right: solid 1px;\n border-right-color: darkgrey;\n border-right-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-fresh .ag-body-horizontal-scroll:not(.ag-scrollbar-invisible) .ag-horizontal-right-spacer:not(.ag-scroller-corner) {\n border-left: solid 1px;\n border-left-color: darkgrey;\n border-left-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-fresh .ag-ltr .ag-right-aligned-cell {\n text-align: right;\n}\n\n.ag-theme-fresh .ag-rtl .ag-right-aligned-cell {\n text-align: left;\n}\n\n.ag-theme-fresh .ag-ltr .ag-right-aligned-cell .ag-cell-value, .ag-theme-fresh .ag-ltr .ag-right-aligned-cell .ag-group-value {\n margin-left: auto;\n}\n\n.ag-theme-fresh .ag-rtl .ag-right-aligned-cell .ag-cell-value, .ag-theme-fresh .ag-rtl .ag-right-aligned-cell .ag-group-value {\n margin-right: auto;\n}\n\n.ag-theme-fresh .ag-cell, .ag-theme-fresh .ag-full-width-row .ag-cell-wrapper.ag-row-group {\n border: 1px solid transparent;\n line-height: min(var(--ag-line-height, 23px), 23px);\n padding-left: 11px;\n padding-right: 11px;\n -webkit-font-smoothing: subpixel-antialiased;\n}\n.ag-theme-fresh .ag-row > .ag-cell-wrapper {\n padding-left: 11px;\n padding-right: 11px;\n}\n.ag-theme-fresh .ag-row-dragging {\n cursor: move;\n opacity: 0.5;\n}\n.ag-theme-fresh .ag-cell-inline-editing {\n border: solid 1px;\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n background: #FFF;\n background: var(--ag-background-color, #FFF);\n border-radius: 0px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n padding: 0;\n height: 25px;\n background-color: #f6f6f6;\n background-color: var(--ag-control-panel-background-color, #f6f6f6);\n}\n.ag-theme-fresh .ag-popup-editor {\n border: solid 1px;\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n background: #FFF;\n background: var(--ag-background-color, #FFF);\n border-radius: 0px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n background-color: #f6f6f6;\n background-color: var(--ag-control-panel-background-color, #f6f6f6);\n padding: 0;\n}\n.ag-theme-fresh .ag-large-text-input {\n height: auto;\n padding: 12px;\n}\n.ag-theme-fresh .ag-details-row {\n padding: 20px;\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n}\n.ag-theme-fresh .ag-layout-auto-height .ag-center-cols-clipper, .ag-theme-fresh .ag-layout-auto-height .ag-center-cols-container, .ag-theme-fresh .ag-layout-print .ag-center-cols-clipper, .ag-theme-fresh .ag-layout-print .ag-center-cols-container {\n min-height: 50px;\n}\n.ag-theme-fresh .ag-overlay-loading-wrapper {\n background-color: rgba(255, 255, 255, 0.66);\n background-color: var(--ag-modal-overlay-background-color, rgba(255, 255, 255, 0.66));\n}\n.ag-theme-fresh .ag-overlay-loading-center {\n border: solid 1px;\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n background: #FFF;\n background: var(--ag-background-color, #FFF);\n border-radius: 0px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n}\n.ag-theme-fresh .ag-overlay-no-rows-wrapper.ag-layout-auto-height {\n padding-top: 30px;\n}\n.ag-theme-fresh .ag-loading {\n padding-left: 12px;\n display: -webkit-box;\n display: flex;\n height: 100%;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-fresh .ag-loading-icon {\n padding-right: 12px;\n}\n.ag-theme-fresh .ag-icon-loading {\n -webkit-animation-name: spin;\n animation-name: spin;\n -webkit-animation-duration: 1000ms;\n animation-duration: 1000ms;\n -webkit-animation-iteration-count: infinite;\n animation-iteration-count: infinite;\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n}\n@-webkit-keyframes spin {\n from {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@keyframes spin {\n from {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.ag-theme-fresh .ag-floating-top {\n border-bottom: solid 1px;\n border-bottom-color: darkgrey;\n border-bottom-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-fresh .ag-floating-bottom {\n border-top: solid 1px;\n border-top-color: darkgrey;\n border-top-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-fresh .ag-ltr .ag-cell {\n border-right: dotted darkgrey;\n}\n\n.ag-theme-fresh .ag-rtl .ag-cell {\n border-left: dotted darkgrey;\n}\n\n.ag-theme-fresh .ag-ltr .ag-cell {\n border-right-width: 1px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-cell {\n border-left-width: 1px;\n}\n\n.ag-theme-fresh .ag-cell.ag-cell-first-right-pinned:not(.ag-cell-range-left):not(.ag-cell-range-single-cell) {\n border-left: solid 1px;\n border-left-color: darkgrey;\n border-left-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-fresh .ag-cell.ag-cell-last-left-pinned:not(.ag-cell-range-right):not(.ag-cell-range-single-cell) {\n border-right: solid 1px;\n border-right-color: darkgrey;\n border-right-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-fresh .ag-row-selected {\n background-color: #bde2e5;\n background-color: var(--ag-selected-row-background-color, #bde2e5);\n}\n.ag-theme-fresh .ag-cell-range-selected:not(.ag-cell-focus),\n.ag-theme-fresh .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing) {\n background-color: rgba(0, 0, 0, 0.2);\n background-color: var(--ag-range-selection-background-color, rgba(0, 0, 0, 0.2));\n}\n.ag-theme-fresh .ag-cell-range-selected:not(.ag-cell-focus).ag-cell-range-chart,\n.ag-theme-fresh .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing).ag-cell-range-chart {\n background-color: rgba(0, 88, 255, 0.1) !important;\n background-color: var(--ag-range-selection-chart-background-color, rgba(0, 88, 255, 0.1)) !important;\n}\n.ag-theme-fresh .ag-cell-range-selected:not(.ag-cell-focus).ag-cell-range-chart.ag-cell-range-chart-category,\n.ag-theme-fresh .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing).ag-cell-range-chart.ag-cell-range-chart-category {\n background-color: rgba(0, 255, 132, 0.1) !important;\n background-color: var(--ag-range-selection-chart-category-background-color, rgba(0, 255, 132, 0.1)) !important;\n}\n.ag-theme-fresh .ag-cell-range-selected-1:not(.ag-cell-focus),\n.ag-theme-fresh .ag-root:not(.ag-context-menu-open) .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-1:not(.ag-cell-inline-editing) {\n background-color: rgba(0, 0, 0, 0.2);\n background-color: var(--ag-range-selection-background-color-1, var(--ag-range-selection-background-color, rgba(0, 0, 0, 0.2)));\n}\n.ag-theme-fresh .ag-cell-range-selected-2:not(.ag-cell-focus),\n.ag-theme-fresh .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-2 {\n background-color: rgba(0, 0, 0, 0.36);\n background-color: var(--ag-range-selection-background-color-2, rgba(0, 0, 0, 0.36));\n}\n.ag-theme-fresh .ag-cell-range-selected-3:not(.ag-cell-focus),\n.ag-theme-fresh .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-3 {\n background-color: rgba(0, 0, 0, 0.488);\n background-color: var(--ag-range-selection-background-color-3, rgba(0, 0, 0, 0.488));\n}\n.ag-theme-fresh .ag-cell-range-selected-4:not(.ag-cell-focus),\n.ag-theme-fresh .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-4 {\n background-color: rgba(0, 0, 0, 0.5904);\n background-color: var(--ag-range-selection-background-color-4, rgba(0, 0, 0, 0.5904));\n}\n.ag-theme-fresh .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-top {\n border-top-color: #000;\n border-top-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-fresh .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-right {\n border-right-color: #000;\n border-right-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-fresh .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-bottom {\n border-bottom-color: #000;\n border-bottom-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-fresh .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-left {\n border-left-color: #000;\n border-left-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-fresh .ag-ltr .ag-has-focus .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-fresh .ag-ltr .ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-fresh .ag-ltr .ag-has-focus .ag-full-width-row.ag-row-focus .ag-cell-wrapper.ag-row-group,\n.ag-theme-fresh .ag-ltr .ag-cell-range-single-cell,\n.ag-theme-fresh .ag-ltr .ag-cell-range-single-cell.ag-cell-range-handle, .ag-theme-fresh .ag-rtl .ag-has-focus .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-fresh .ag-rtl .ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-fresh .ag-rtl .ag-has-focus .ag-full-width-row.ag-row-focus .ag-cell-wrapper.ag-row-group,\n.ag-theme-fresh .ag-rtl .ag-cell-range-single-cell,\n.ag-theme-fresh .ag-rtl .ag-cell-range-single-cell.ag-cell-range-handle {\n border: 1px solid;\n border-color: #000;\n border-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n outline: initial;\n}\n.ag-theme-fresh .ag-cell.ag-selection-fill-top,\n.ag-theme-fresh .ag-cell.ag-selection-fill-top.ag-cell-range-selected {\n border-top: 1px dashed;\n border-top-color: #000;\n border-top-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-fresh .ag-ltr .ag-cell.ag-selection-fill-right, .ag-theme-fresh .ag-ltr .ag-cell.ag-selection-fill-right.ag-cell-range-selected {\n border-right: 1px dashed;\n border-right-color: #000;\n border-right-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n}\n\n.ag-theme-fresh .ag-rtl .ag-cell.ag-selection-fill-right, .ag-theme-fresh .ag-rtl .ag-cell.ag-selection-fill-right.ag-cell-range-selected {\n border-left: 1px dashed;\n border-left-color: #000;\n border-left-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n}\n\n.ag-theme-fresh .ag-cell.ag-selection-fill-bottom,\n.ag-theme-fresh .ag-cell.ag-selection-fill-bottom.ag-cell-range-selected {\n border-bottom: 1px dashed;\n border-bottom-color: #000;\n border-bottom-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-fresh .ag-ltr .ag-cell.ag-selection-fill-left, .ag-theme-fresh .ag-ltr .ag-cell.ag-selection-fill-left.ag-cell-range-selected {\n border-left: 1px dashed;\n border-left-color: #000;\n border-left-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n}\n\n.ag-theme-fresh .ag-rtl .ag-cell.ag-selection-fill-left, .ag-theme-fresh .ag-rtl .ag-cell.ag-selection-fill-left.ag-cell-range-selected {\n border-right: 1px dashed;\n border-right-color: #000;\n border-right-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n}\n\n.ag-theme-fresh .ag-range-handle, .ag-theme-fresh .ag-fill-handle {\n position: absolute;\n width: 6px;\n height: 6px;\n bottom: -1px;\n background-color: #000;\n background-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-fresh .ag-ltr .ag-range-handle, .ag-theme-fresh .ag-ltr .ag-fill-handle {\n right: -1px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-range-handle, .ag-theme-fresh .ag-rtl .ag-fill-handle {\n left: -1px;\n}\n\n.ag-theme-fresh .ag-fill-handle {\n cursor: cell;\n}\n.ag-theme-fresh .ag-range-handle {\n cursor: nwse-resize;\n}\n.ag-theme-fresh .ag-cell-inline-editing {\n border-color: var(--ag-input-focus-border-color) !important;\n}\n.ag-theme-fresh .ag-menu {\n border: solid 1px;\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n background: #FFF;\n background: var(--ag-background-color, #FFF);\n border-radius: 0px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n padding: 0;\n}\n.ag-theme-fresh .ag-menu-list {\n cursor: default;\n padding: 4px 0;\n}\n.ag-theme-fresh .ag-menu-separator {\n height: 9px;\n}\n.ag-theme-fresh .ag-menu-separator-part::after {\n content: \"\";\n display: block;\n border-top: solid 1px;\n border-top-color: darkgrey;\n border-top-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-fresh .ag-menu-option-active, .ag-theme-fresh .ag-compact-menu-option-active {\n background-color: var(--ag-row-hover-color);\n}\n.ag-theme-fresh .ag-menu-option-part, .ag-theme-fresh .ag-compact-menu-option-part {\n line-height: 12px;\n padding: 6px 0;\n}\n.ag-theme-fresh .ag-menu-option-disabled, .ag-theme-fresh .ag-compact-menu-option-disabled {\n opacity: 0.5;\n}\n.ag-theme-fresh .ag-menu-option-icon, .ag-theme-fresh .ag-compact-menu-option-icon {\n width: 12px;\n}\n.ag-theme-fresh .ag-ltr .ag-menu-option-icon, .ag-theme-fresh .ag-ltr .ag-compact-menu-option-icon {\n padding-left: 8px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-menu-option-icon, .ag-theme-fresh .ag-rtl .ag-compact-menu-option-icon {\n padding-right: 8px;\n}\n\n.ag-theme-fresh .ag-menu-option-text, .ag-theme-fresh .ag-compact-menu-option-text {\n padding-left: 8px;\n padding-right: 8px;\n}\n.ag-theme-fresh .ag-ltr .ag-menu-option-shortcut, .ag-theme-fresh .ag-ltr .ag-compact-menu-option-shortcut {\n padding-right: 4px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-menu-option-shortcut, .ag-theme-fresh .ag-rtl .ag-compact-menu-option-shortcut {\n padding-left: 4px;\n}\n\n.ag-theme-fresh .ag-menu-option-popup-pointer, .ag-theme-fresh .ag-compact-menu-option-popup-pointer {\n padding-right: 4px;\n}\n.ag-theme-fresh .ag-tabs {\n min-width: 220px;\n}\n.ag-theme-fresh .ag-tabs-header {\n width: 100%;\n display: -webkit-box;\n display: flex;\n}\n.ag-theme-fresh .ag-tab {\n border-bottom: 0 solid transparent;\n display: -webkit-box;\n display: flex;\n -webkit-box-flex: 0;\n flex: none;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n cursor: pointer;\n}\n.ag-theme-fresh .ag-keyboard-focus .ag-tab:focus {\n outline: none;\n}\n.ag-theme-fresh .ag-keyboard-focus .ag-tab:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-fresh .ag-tab-selected {\n border-bottom-color: #000;\n border-bottom-color: var(--ag-selected-tab-underline-color, var(--ag-range-selection-border-color, var(--ag-foreground-color, #000)));\n}\n.ag-theme-fresh .ag-menu-header {\n color: #000;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-fresh .ag-filter-separator {\n border-top: solid 1px;\n border-top-color: darkgrey;\n border-top-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-fresh .ag-menu:not(.ag-tabs) .ag-filter-select {\n min-width: 167px;\n}\n.ag-theme-fresh .ag-tabs .ag-filter-select {\n min-width: 206px;\n}\n.ag-theme-fresh .ag-filter-select .ag-picker-field-wrapper {\n width: 0;\n}\n.ag-theme-fresh .ag-filter-condition-operator {\n height: 17px;\n}\n.ag-theme-fresh .ag-ltr .ag-filter-condition-operator-or {\n margin-left: 8px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-filter-condition-operator-or {\n margin-right: 8px;\n}\n\n.ag-theme-fresh .ag-set-filter-select-all {\n padding-top: 6px;\n}\n.ag-theme-fresh .ag-set-filter-list, .ag-theme-fresh .ag-filter-no-matches {\n height: 120px;\n}\n.ag-theme-fresh .ag-set-filter-filter {\n margin-top: 6px;\n margin-left: 6px;\n margin-right: 6px;\n}\n.ag-theme-fresh .ag-filter-to {\n margin-top: 4px;\n}\n.ag-theme-fresh .ag-mini-filter {\n margin: 6px 6px;\n}\n.ag-theme-fresh .ag-set-filter-item {\n margin: 0px 6px;\n}\n.ag-theme-fresh .ag-ltr .ag-set-filter-item-value {\n margin-left: 6px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-set-filter-item-value {\n margin-right: 6px;\n}\n\n.ag-theme-fresh .ag-filter-apply-panel {\n padding: 6px 6px;\n border-top: solid 1px;\n border-top-color: darkgrey;\n border-top-color: var(--ag-secondary-border-color, var(--ag-border-color, darkgrey));\n}\n.ag-theme-fresh .ag-filter-apply-panel-button {\n line-height: 1.5;\n}\n.ag-theme-fresh .ag-ltr .ag-filter-apply-panel-button {\n margin-left: 8px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-filter-apply-panel-button {\n margin-right: 8px;\n}\n\n.ag-theme-fresh .ag-simple-filter-body-wrapper {\n padding: 6px 6px;\n padding-bottom: 2px;\n}\n.ag-theme-fresh .ag-simple-filter-body-wrapper > * {\n margin-bottom: 4px;\n}\n.ag-theme-fresh .ag-filter-no-matches {\n padding: 6px 6px;\n}\n.ag-theme-fresh .ag-multi-filter-menu-item {\n margin: 4px 0;\n}\n.ag-theme-fresh .ag-multi-filter-group-title-bar {\n padding: 8px 4px;\n background-color: transparent;\n}\n.ag-theme-fresh .ag-keyboard-focus .ag-multi-filter-group-title-bar:focus {\n outline: none;\n}\n.ag-theme-fresh .ag-keyboard-focus .ag-multi-filter-group-title-bar:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-fresh .ag-side-bar {\n position: relative;\n}\n.ag-theme-fresh .ag-tool-panel-wrapper {\n width: 200px;\n background-color: #f6f6f6;\n background-color: var(--ag-control-panel-background-color, #f6f6f6);\n}\n.ag-theme-fresh .ag-side-buttons {\n padding-top: 16px;\n width: 16px;\n position: relative;\n color: #000;\n color: var(--ag-foreground-color, #000);\n overflow: hidden;\n}\n.ag-theme-fresh button.ag-side-button-button {\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n background: transparent;\n padding: 8px 0 8px 0;\n width: calc(100% + 1px);\n margin: 0;\n min-height: 72px;\n background-position-y: center;\n background-position-x: center;\n background-repeat: no-repeat;\n border: none;\n border-top: solid 1px;\n border-top-color: darkgrey;\n border-top-color: var(--ag-border-color, darkgrey);\n border-bottom: solid 1px;\n border-bottom-color: darkgrey;\n border-bottom-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-fresh button.ag-side-button-button:focus {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.ag-theme-fresh .ag-keyboard-focus .ag-side-button-button:focus {\n outline: none;\n}\n.ag-theme-fresh .ag-keyboard-focus .ag-side-button-button:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-fresh .ag-selected .ag-side-button-button {\n background-color: #f6f6f6;\n background-color: var(--ag-control-panel-background-color, #f6f6f6);\n border-top-color: darkgrey;\n border-top-color: var(--ag-border-color, darkgrey);\n border-bottom-color: darkgrey;\n border-bottom-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-fresh .ag-side-button-icon-wrapper {\n margin-bottom: 3px;\n}\n.ag-theme-fresh .ag-ltr .ag-side-bar-left,\n.ag-theme-fresh .ag-rtl .ag-side-bar-right {\n border-right: solid 1px;\n border-right-color: darkgrey;\n border-right-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-fresh .ag-ltr .ag-side-bar-left .ag-tool-panel-wrapper,\n.ag-theme-fresh .ag-rtl .ag-side-bar-right .ag-tool-panel-wrapper {\n border-left: solid 1px;\n border-left-color: darkgrey;\n border-left-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-fresh .ag-ltr .ag-side-bar-left .ag-side-button-button,\n.ag-theme-fresh .ag-rtl .ag-side-bar-right .ag-side-button-button {\n border-right: 0 solid transparent;\n margin-right: -1px;\n padding-right: 1px;\n}\n.ag-theme-fresh .ag-ltr .ag-side-bar-left .ag-selected .ag-side-button-button,\n.ag-theme-fresh .ag-rtl .ag-side-bar-right .ag-selected .ag-side-button-button {\n border-right-color: #000;\n border-right-color: var(--ag-selected-tab-underline-color, var(--ag-range-selection-border-color, var(--ag-foreground-color, #000)));\n}\n.ag-theme-fresh .ag-rtl .ag-side-bar-left,\n.ag-theme-fresh .ag-ltr .ag-side-bar-right {\n border-left: solid 1px;\n border-left-color: darkgrey;\n border-left-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-fresh .ag-rtl .ag-side-bar-left .ag-tool-panel-wrapper,\n.ag-theme-fresh .ag-ltr .ag-side-bar-right .ag-tool-panel-wrapper {\n border-right: solid 1px;\n border-right-color: darkgrey;\n border-right-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-fresh .ag-rtl .ag-side-bar-left .ag-side-button-button,\n.ag-theme-fresh .ag-ltr .ag-side-bar-right .ag-side-button-button {\n border-left: 0 solid transparent;\n margin-left: -1px;\n padding-left: 1px;\n}\n.ag-theme-fresh .ag-rtl .ag-side-bar-left .ag-selected .ag-side-button-button,\n.ag-theme-fresh .ag-ltr .ag-side-bar-right .ag-selected .ag-side-button-button {\n border-left-color: #000;\n border-left-color: var(--ag-selected-tab-underline-color, var(--ag-range-selection-border-color, var(--ag-foreground-color, #000)));\n}\n.ag-theme-fresh .ag-filter-toolpanel-header {\n height: 24px;\n}\n.ag-theme-fresh .ag-ltr .ag-filter-toolpanel-header, .ag-theme-fresh .ag-ltr .ag-filter-toolpanel-search {\n padding-left: 4px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-filter-toolpanel-header, .ag-theme-fresh .ag-rtl .ag-filter-toolpanel-search {\n padding-right: 4px;\n}\n\n.ag-theme-fresh .ag-keyboard-focus .ag-filter-toolpanel-header:focus {\n outline: none;\n}\n.ag-theme-fresh .ag-keyboard-focus .ag-filter-toolpanel-header:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-fresh .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n font-family: \"agGridClassic\";\n font-size: 12px;\n line-height: 12px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n content: \"\\f114\";\n position: absolute;\n}\n.ag-theme-fresh .ag-ltr .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n padding-left: 4px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n padding-right: 4px;\n}\n\n.ag-theme-fresh .ag-filter-toolpanel-group-level-0-header {\n height: 32px;\n}\n.ag-theme-fresh .ag-filter-toolpanel-group-item {\n margin-top: 2px;\n margin-bottom: 2px;\n}\n.ag-theme-fresh .ag-filter-toolpanel-search {\n height: 25px;\n}\n.ag-theme-fresh .ag-filter-toolpanel-search-input {\n -webkit-box-flex: 1;\n flex-grow: 1;\n height: 16px;\n}\n.ag-theme-fresh .ag-ltr .ag-filter-toolpanel-search-input {\n margin-right: 4px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-filter-toolpanel-search-input {\n margin-left: 4px;\n}\n\n.ag-theme-fresh .ag-filter-toolpanel-group-level-0 {\n border-top: solid 1px;\n border-top-color: darkgrey;\n border-top-color: var(--ag-secondary-border-color, var(--ag-border-color, darkgrey));\n}\n.ag-theme-fresh .ag-ltr .ag-filter-toolpanel-expand, .ag-theme-fresh .ag-ltr .ag-filter-toolpanel-group-title-bar-icon {\n margin-right: 4px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-filter-toolpanel-expand, .ag-theme-fresh .ag-rtl .ag-filter-toolpanel-group-title-bar-icon {\n margin-left: 4px;\n}\n\n.ag-theme-fresh .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-1-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-fresh .ag-ltr .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-2-header {\n padding-left: 20px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-2-header {\n padding-right: 20px;\n}\n\n.ag-theme-fresh .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-2-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-fresh .ag-ltr .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-3-header {\n padding-left: 36px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-3-header {\n padding-right: 36px;\n}\n\n.ag-theme-fresh .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-3-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-fresh .ag-ltr .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-4-header {\n padding-left: 52px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-4-header {\n padding-right: 52px;\n}\n\n.ag-theme-fresh .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-4-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-fresh .ag-ltr .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-5-header {\n padding-left: 68px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-5-header {\n padding-right: 68px;\n}\n\n.ag-theme-fresh .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-5-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-fresh .ag-ltr .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-6-header {\n padding-left: 84px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-6-header {\n padding-right: 84px;\n}\n\n.ag-theme-fresh .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-6-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-fresh .ag-ltr .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-7-header {\n padding-left: 100px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-7-header {\n padding-right: 100px;\n}\n\n.ag-theme-fresh .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-7-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-fresh .ag-ltr .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-8-header {\n padding-left: 116px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-8-header {\n padding-right: 116px;\n}\n\n.ag-theme-fresh .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-8-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-fresh .ag-ltr .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-9-header {\n padding-left: 132px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-9-header {\n padding-right: 132px;\n}\n\n.ag-theme-fresh .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-9-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-fresh .ag-ltr .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-10-header {\n padding-left: 148px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-10-header {\n padding-right: 148px;\n}\n\n.ag-theme-fresh .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-10-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-fresh .ag-ltr .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-11-header {\n padding-left: 164px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-11-header {\n padding-right: 164px;\n}\n\n.ag-theme-fresh .ag-filter-toolpanel-instance-header.ag-filter-toolpanel-group-level-1-header {\n padding-left: 4px;\n}\n.ag-theme-fresh .ag-filter-toolpanel-instance-filter {\n border-top: solid 1px;\n border-top-color: darkgrey;\n border-top-color: var(--ag-border-color, darkgrey);\n border-bottom: solid 1px;\n border-bottom-color: darkgrey;\n border-bottom-color: var(--ag-border-color, darkgrey);\n margin-top: 4px;\n}\n.ag-theme-fresh .ag-ltr .ag-filter-toolpanel-instance-header-icon {\n margin-left: 4px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-filter-toolpanel-instance-header-icon {\n margin-right: 4px;\n}\n\n.ag-theme-fresh .ag-pivot-mode-panel {\n min-height: 25px;\n height: 25px;\n display: -webkit-box;\n display: flex;\n}\n.ag-theme-fresh .ag-pivot-mode-select {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-fresh .ag-ltr .ag-pivot-mode-select {\n margin-left: 6px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-pivot-mode-select {\n margin-right: 6px;\n}\n\n.ag-theme-fresh .ag-keyboard-focus .ag-column-select-header:focus {\n outline: none;\n}\n.ag-theme-fresh .ag-keyboard-focus .ag-column-select-header:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-fresh .ag-column-select-header {\n height: 25px;\n -webkit-box-align: center;\n align-items: center;\n padding: 0 6px;\n border-bottom: solid 1px;\n border-bottom-color: darkgrey;\n border-bottom-color: var(--ag-secondary-border-color, var(--ag-border-color, darkgrey));\n}\n.ag-theme-fresh .ag-column-panel-column-select {\n border-bottom: solid 1px;\n border-bottom-color: darkgrey;\n border-bottom-color: var(--ag-secondary-border-color, var(--ag-border-color, darkgrey));\n border-top: solid 1px;\n border-top-color: darkgrey;\n border-top-color: var(--ag-secondary-border-color, var(--ag-border-color, darkgrey));\n}\n.ag-theme-fresh .ag-column-group-icons,\n.ag-theme-fresh .ag-column-select-header-icon {\n color: #000;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-fresh .ag-column-select-list .ag-list-item-hovered::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n height: 1px;\n background-color: #000;\n background-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-fresh .ag-column-select-list .ag-item-highlight-top::after {\n top: 0;\n}\n.ag-theme-fresh .ag-column-select-list .ag-item-highlight-bottom::after {\n bottom: 0;\n}\n.ag-theme-fresh .ag-header {\n background-color: var(--ag-header-background-color);\n border-bottom: solid 1px;\n border-bottom-color: darkgrey;\n border-bottom-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-fresh .ag-header-row {\n color: #000;\n color: var(--ag-header-foreground-color, var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000)));\n height: 25px;\n}\n.ag-theme-fresh .ag-pinned-right-header {\n border-left: solid 1px;\n border-left-color: darkgrey;\n border-left-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-fresh .ag-pinned-left-header {\n border-right: solid 1px;\n border-right-color: darkgrey;\n border-right-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-fresh .ag-ltr .ag-header-cell:not(.ag-right-aligned-header) .ag-header-label-icon {\n margin-left: 4px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-header-cell:not(.ag-right-aligned-header) .ag-header-label-icon {\n margin-right: 4px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-header-cell.ag-right-aligned-header .ag-header-label-icon {\n margin-right: 4px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-header-cell.ag-right-aligned-header .ag-header-label-icon {\n margin-left: 4px;\n}\n\n.ag-theme-fresh .ag-header-cell,\n.ag-theme-fresh .ag-header-group-cell {\n padding-left: 12px;\n padding-right: 12px;\n}\n.ag-theme-fresh .ag-header-cell.ag-header-cell-moving,\n.ag-theme-fresh .ag-header-group-cell.ag-header-cell-moving {\n background-color: #bebebe;\n background-color: var(--ag-header-cell-moving-background-color, #bebebe);\n}\n.ag-theme-fresh .ag-keyboard-focus .ag-header-cell:focus {\n outline: none;\n}\n.ag-theme-fresh .ag-keyboard-focus .ag-header-cell:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-fresh .ag-keyboard-focus .ag-header-group-cell:focus {\n outline: none;\n}\n.ag-theme-fresh .ag-keyboard-focus .ag-header-group-cell:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-fresh .ag-header-icon {\n color: #000;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-fresh .ag-header-expand-icon {\n cursor: pointer;\n}\n.ag-theme-fresh .ag-ltr .ag-header-expand-icon {\n padding-left: 4px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-header-expand-icon {\n padding-right: 4px;\n}\n\n.ag-theme-fresh .ag-header-row:not(:first-child) .ag-header-cell,\n.ag-theme-fresh .ag-header-row:not(:first-child) .ag-header-group-cell.ag-header-group-cell-with-group {\n border-top: solid 1px;\n border-top-color: darkgrey;\n border-top-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-fresh .ag-header-cell::after,\n.ag-theme-fresh .ag-header-group-cell::after {\n content: \"\";\n position: absolute;\n z-index: 1;\n display: block;\n width: 1px;\n height: 100%;\n top: calc(50% - 50%);\n background-color: rgba(169, 169, 169, 0.5);\n background-color: var(--ag-header-column-separator-color, rgba(169, 169, 169, 0.5));\n}\n.ag-theme-fresh .ag-ltr .ag-header-cell::after, .ag-theme-fresh .ag-ltr .ag-header-group-cell::after {\n right: 0;\n}\n\n.ag-theme-fresh .ag-rtl .ag-header-cell::after, .ag-theme-fresh .ag-rtl .ag-header-group-cell::after {\n left: 0;\n}\n\n.ag-theme-fresh .ag-ltr .ag-header-select-all {\n margin-right: 12px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-header-select-all {\n margin-left: 12px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-floating-filter-button {\n margin-left: 12px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-floating-filter-button {\n margin-right: 12px;\n}\n\n.ag-theme-fresh .ag-floating-filter-button-button {\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background: transparent;\n border: none;\n height: 12px;\n padding: 0;\n width: 12px;\n}\n.ag-theme-fresh .ag-filter-loading {\n background-color: #f6f6f6;\n background-color: var(--ag-control-panel-background-color, #f6f6f6);\n height: 100%;\n padding: 6px 6px;\n position: absolute;\n width: 100%;\n z-index: 1;\n}\n.ag-theme-fresh .ag-paging-panel {\n border-top: 1px solid;\n border-top-color: darkgrey;\n border-top-color: var(--ag-border-color, darkgrey);\n color: #000;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n height: 25px;\n}\n.ag-theme-fresh .ag-paging-panel > * {\n margin: 0 12px;\n}\n.ag-theme-fresh .ag-paging-button {\n cursor: pointer;\n}\n.ag-theme-fresh .ag-paging-button.ag-disabled {\n cursor: default;\n color: rgba(0, 0, 0, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.5));\n}\n.ag-theme-fresh .ag-keyboard-focus .ag-paging-button:focus {\n outline: none;\n}\n.ag-theme-fresh .ag-keyboard-focus .ag-paging-button:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 0px;\n left: 0px;\n display: block;\n width: calc(100% - 0px);\n height: calc(100% - 0px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-fresh .ag-paging-button, .ag-theme-fresh .ag-paging-description {\n margin: 0 4px;\n}\n.ag-theme-fresh .ag-status-bar {\n border-top: solid 1px;\n border-top-color: darkgrey;\n border-top-color: var(--ag-border-color, darkgrey);\n color: rgba(0, 0, 0, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.5));\n padding-right: 16px;\n padding-left: 16px;\n line-height: 1.5;\n}\n.ag-theme-fresh .ag-status-name-value-value {\n color: #000;\n color: var(--ag-foreground-color, #000);\n}\n.ag-theme-fresh .ag-status-bar-center {\n text-align: center;\n}\n.ag-theme-fresh .ag-status-name-value {\n margin-left: 4px;\n margin-right: 4px;\n padding-top: 8px;\n padding-bottom: 8px;\n}\n.ag-theme-fresh .ag-column-drop-cell {\n background: var(--ag-chip-background-color);\n border-radius: 16px;\n height: 16px;\n padding: 0 2px;\n border: 1px solid transparent;\n}\n.ag-theme-fresh .ag-keyboard-focus .ag-column-drop-cell:focus {\n outline: none;\n}\n.ag-theme-fresh .ag-keyboard-focus .ag-column-drop-cell:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 2px;\n left: 2px;\n display: block;\n width: calc(100% - 4px);\n height: calc(100% - 4px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-fresh .ag-column-drop-cell-text {\n margin: 0 4px;\n}\n.ag-theme-fresh .ag-column-drop-cell-button {\n min-width: 16px;\n margin: 0 2px;\n color: #000;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-fresh .ag-column-drop-cell-drag-handle {\n margin-left: 8px;\n}\n.ag-theme-fresh .ag-column-drop-cell-ghost {\n opacity: 0.5;\n}\n.ag-theme-fresh .ag-column-drop-horizontal {\n background-color: #f6f6f6;\n background-color: var(--ag-control-panel-background-color, #f6f6f6);\n color: #000;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n height: 25px;\n border-bottom: solid 1px;\n border-bottom-color: darkgrey;\n border-bottom-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-fresh .ag-ltr .ag-column-drop-horizontal {\n padding-left: 12px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-column-drop-horizontal {\n padding-right: 12px;\n}\n\n.ag-theme-fresh .ag-ltr .ag-column-drop-horizontal-half-width:not(:last-child) {\n border-right: solid 1px;\n border-right-color: darkgrey;\n border-right-color: var(--ag-border-color, darkgrey);\n}\n\n.ag-theme-fresh .ag-rtl .ag-column-drop-horizontal-half-width:not(:last-child) {\n border-left: solid 1px;\n border-left-color: darkgrey;\n border-left-color: var(--ag-border-color, darkgrey);\n}\n\n.ag-theme-fresh .ag-column-drop-horizontal-cell-separator {\n margin: 0 4px;\n color: #000;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-fresh .ag-column-drop-horizontal-empty-message {\n color: rgba(0, 0, 0, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.5));\n}\n.ag-theme-fresh .ag-ltr .ag-column-drop-horizontal-icon {\n margin-right: 12px;\n}\n\n.ag-theme-fresh .ag-rtl .ag-column-drop-horizontal-icon {\n margin-left: 12px;\n}\n\n.ag-theme-fresh .ag-column-drop-vertical-list {\n padding-bottom: 4px;\n padding-right: 4px;\n padding-left: 4px;\n}\n.ag-theme-fresh .ag-column-drop-vertical-cell {\n margin-top: 4px;\n}\n.ag-theme-fresh .ag-column-drop-vertical {\n min-height: 50px;\n border-bottom: solid 1px;\n border-bottom-color: darkgrey;\n border-bottom-color: var(--ag-secondary-border-color, var(--ag-border-color, darkgrey));\n}\n.ag-theme-fresh .ag-column-drop-vertical.ag-last-column-drop {\n border-bottom: none;\n}\n.ag-theme-fresh .ag-column-drop-vertical-icon {\n margin-left: 4px;\n margin-right: 4px;\n}\n.ag-theme-fresh .ag-column-drop-vertical-empty-message {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n overflow: hidden;\n color: rgba(0, 0, 0, 0.5);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.5));\n margin-top: 4px;\n}\n.ag-theme-fresh .ag-select-agg-func-popup {\n border: solid 1px;\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n background: #FFF;\n background: var(--ag-background-color, #FFF);\n border-radius: 0px;\n -webkit-box-shadow: none;\n box-shadow: none;\n padding: 4px;\n background: #FFF;\n background: var(--ag-background-color, #FFF);\n height: 70px;\n padding: 0;\n}\n.ag-theme-fresh .ag-select-agg-func-virtual-list-item {\n cursor: default;\n padding-left: 8px;\n}\n.ag-theme-fresh .ag-select-agg-func-virtual-list-item:hover {\n background-color: #bde2e5;\n background-color: var(--ag-selected-row-background-color, #bde2e5);\n}\n.ag-theme-fresh .ag-keyboard-focus .ag-select-agg-func-virtual-list-item:focus {\n outline: none;\n}\n.ag-theme-fresh .ag-keyboard-focus .ag-select-agg-func-virtual-list-item:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 1px;\n left: 1px;\n display: block;\n width: calc(100% - 2px);\n height: calc(100% - 2px);\n border: 1px solid;\n border-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-fresh .ag-chart-menu {\n border-radius: 0px;\n background: #FFF;\n background: var(--ag-background-color, #FFF);\n}\n.ag-theme-fresh .ag-chart-menu-icon {\n opacity: 0.5;\n line-height: 24px;\n font-size: 24px;\n width: 24px;\n height: 24px;\n margin: 2px 0;\n cursor: pointer;\n border-radius: 0px;\n color: #000;\n color: var(--ag-secondary-foreground-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-fresh .ag-chart-menu-icon:hover {\n opacity: 1;\n}\n.ag-theme-fresh .ag-chart-mini-thumbnail {\n border: 1px solid;\n border-color: darkgrey;\n border-color: var(--ag-secondary-border-color, var(--ag-border-color, darkgrey));\n border-radius: 5px;\n margin: 5px;\n}\n.ag-theme-fresh .ag-chart-mini-thumbnail:nth-last-child(3), .ag-theme-fresh .ag-chart-mini-thumbnail:nth-last-child(3) ~ .ag-chart-mini-thumbnail {\n margin-left: auto;\n margin-right: auto;\n}\n.ag-theme-fresh .ag-ltr .ag-chart-mini-thumbnail:first-child {\n margin-left: 0;\n}\n\n.ag-theme-fresh .ag-rtl .ag-chart-mini-thumbnail:first-child {\n margin-right: 0;\n}\n\n.ag-theme-fresh .ag-ltr .ag-chart-mini-thumbnail:last-child {\n margin-right: 0;\n}\n\n.ag-theme-fresh .ag-rtl .ag-chart-mini-thumbnail:last-child {\n margin-left: 0;\n}\n\n.ag-theme-fresh .ag-chart-mini-thumbnail.ag-selected {\n border-color: #000;\n border-color: var(--ag-minichart-selected-chart-color, var(--ag-checkbox-checked-color, var(--ag-foreground-color, #000)));\n}\n.ag-theme-fresh .ag-chart-settings-card-item {\n background: #000;\n background: var(--ag-foreground-color, #000);\n width: 8px;\n height: 8px;\n border-radius: 4px;\n}\n.ag-theme-fresh .ag-chart-settings-card-item.ag-selected {\n background-color: #000;\n background-color: var(--ag-minichart-selected-page-color, var(--ag-checkbox-checked-color, var(--ag-foreground-color, #000)));\n}\n.ag-theme-fresh .ag-chart-data-column-drag-handle {\n margin-left: 4px;\n}\n.ag-theme-fresh .ag-charts-settings-group-title-bar,\n.ag-theme-fresh .ag-charts-data-group-title-bar,\n.ag-theme-fresh .ag-charts-format-top-level-group-title-bar {\n border-top: solid 1px;\n border-top-color: darkgrey;\n border-top-color: var(--ag-secondary-border-color, var(--ag-border-color, darkgrey));\n}\n.ag-theme-fresh .ag-charts-settings-group-container {\n padding: 4px;\n}\n.ag-theme-fresh .ag-charts-data-group-container {\n padding: 3px 6px;\n}\n.ag-theme-fresh .ag-charts-data-group-container .ag-charts-data-group-item:not(.ag-charts-format-sub-level-group) {\n height: 20px;\n}\n.ag-theme-fresh .ag-charts-data-group-container .ag-list-item-hovered::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n height: 1px;\n background-color: #000;\n background-color: var(--ag-range-selection-border-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-fresh .ag-charts-data-group-container .ag-item-highlight-top::after {\n top: 0;\n}\n.ag-theme-fresh .ag-charts-data-group-container .ag-item-highlight-bottom::after {\n bottom: 0;\n}\n.ag-theme-fresh .ag-charts-format-top-level-group-container {\n margin-left: 8px;\n padding: 4px;\n}\n.ag-theme-fresh .ag-charts-format-top-level-group-item {\n margin: 4px 0;\n}\n.ag-theme-fresh .ag-charts-format-sub-level-group-container {\n padding: 6px 6px;\n padding-bottom: 2px;\n}\n.ag-theme-fresh .ag-charts-format-sub-level-group-container > * {\n margin-bottom: 4px;\n}\n.ag-theme-fresh .ag-charts-group-container.ag-group-container-horizontal {\n padding: 4px;\n}\n.ag-theme-fresh .ag-chart-data-section,\n.ag-theme-fresh .ag-chart-format-section {\n display: -webkit-box;\n display: flex;\n margin: 0;\n}\n.ag-theme-fresh .ag-chart-menu-panel {\n background-color: #f6f6f6;\n background-color: var(--ag-control-panel-background-color, #f6f6f6);\n}\n.ag-theme-fresh .ag-ltr .ag-chart-menu-panel {\n border-left: solid 1px;\n border-left-color: darkgrey;\n border-left-color: var(--ag-border-color, darkgrey);\n}\n\n.ag-theme-fresh .ag-rtl .ag-chart-menu-panel {\n border-right: solid 1px;\n border-right-color: darkgrey;\n border-right-color: var(--ag-border-color, darkgrey);\n}\n\n.ag-theme-fresh .ag-date-time-list-page-title {\n -webkit-box-flex: 1;\n flex-grow: 1;\n text-align: center;\n}\n.ag-theme-fresh .ag-date-time-list-page-column-label {\n text-align: center;\n}\n.ag-theme-fresh .ag-date-time-list-page-entry {\n text-align: center;\n}\n.ag-theme-fresh .ag-checkbox-input-wrapper {\n font-family: \"agGridClassic\";\n font-size: 12px;\n line-height: 12px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 12px;\n height: 12px;\n background-color: var(--ag-checkbox-background-color);\n border-radius: 0px;\n display: inline-block;\n vertical-align: middle;\n -webkit-box-flex: 0;\n flex: none;\n}\n.ag-theme-fresh .ag-checkbox-input-wrapper input, .ag-theme-fresh .ag-checkbox-input-wrapper input {\n -webkit-appearance: none;\n opacity: 0;\n width: 100%;\n height: 100%;\n}\n.ag-theme-fresh .ag-checkbox-input-wrapper:focus-within, .ag-theme-fresh .ag-checkbox-input-wrapper:active {\n outline: none;\n}\n.ag-theme-fresh .ag-checkbox-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-fresh .ag-checkbox-input-wrapper::after {\n content: \"\\f108\";\n color: #000;\n color: var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #000));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-fresh .ag-checkbox-input-wrapper.ag-checked::after {\n content: \"\\f106\";\n color: #000;\n color: var(--ag-checkbox-checked-color, var(--ag-foreground-color, #000));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-fresh .ag-checkbox-input-wrapper.ag-indeterminate::after {\n content: \"\\f107\";\n color: #000;\n color: var(--ag-checkbox-indeterminate-color, var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #000)));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-fresh .ag-toggle-button-input-wrapper {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n width: 24px;\n height: 12px;\n background-color: #000;\n background-color: var(--ag-toggle-button-off-background-color, var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #000)));\n border-radius: 6px;\n position: relative;\n -webkit-box-flex: 0;\n flex: none;\n border: 1px solid;\n border-color: #000;\n border-color: var(--ag-toggle-button-off-border-color, var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #000)));\n}\n.ag-theme-fresh .ag-toggle-button-input-wrapper input {\n opacity: 0;\n height: 100%;\n width: 100%;\n}\n.ag-theme-fresh .ag-toggle-button-input-wrapper:focus-within {\n outline: none;\n}\n.ag-theme-fresh .ag-toggle-button-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-fresh .ag-toggle-button-input-wrapper.ag-checked {\n background-color: #000;\n background-color: var(--ag-toggle-button-on-background-color, var(--ag-checkbox-checked-color, var(--ag-foreground-color, #000)));\n border-color: #000;\n border-color: var(--ag-toggle-button-on-border-color, var(--ag-checkbox-checked-color, var(--ag-foreground-color, #000)));\n}\n.ag-theme-fresh .ag-toggle-button-input-wrapper::before {\n content: \" \";\n position: absolute;\n top: -1px;\n left: -1px;\n display: block;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n height: 12px;\n width: 12px;\n background-color: #FFF;\n background-color: var(--ag-toggle-button-switch-background-color, var(--ag-background-color, #FFF));\n border-radius: 6px;\n -webkit-transition: left 100ms;\n transition: left 100ms;\n border: 1px solid;\n border-color: #000;\n border-color: var(--ag-toggle-button-switch-border-color, var(--ag-toggle-button-off-border-color, var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #000))));\n}\n.ag-theme-fresh .ag-toggle-button-input-wrapper.ag-checked::before {\n left: calc(100% - 12px );\n border-color: #000;\n border-color: var(--ag-toggle-button-on-border-color, var(--ag-checkbox-checked-color, var(--ag-foreground-color, #000)));\n}\n.ag-theme-fresh .ag-radio-button-input-wrapper {\n font-family: \"agGridClassic\";\n font-size: 12px;\n line-height: 12px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 12px;\n height: 12px;\n background-color: var(--ag-checkbox-background-color);\n border-radius: 0px;\n display: inline-block;\n vertical-align: middle;\n -webkit-box-flex: 0;\n flex: none;\n border-radius: 12px;\n}\n.ag-theme-fresh .ag-radio-button-input-wrapper input, .ag-theme-fresh .ag-radio-button-input-wrapper input {\n -webkit-appearance: none;\n opacity: 0;\n width: 100%;\n height: 100%;\n}\n.ag-theme-fresh .ag-radio-button-input-wrapper:focus-within, .ag-theme-fresh .ag-radio-button-input-wrapper:active {\n outline: none;\n}\n.ag-theme-fresh .ag-radio-button-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-fresh .ag-radio-button-input-wrapper::after {\n content: \"\\f126\";\n color: #000;\n color: var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #000));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-fresh .ag-radio-button-input-wrapper.ag-checked::after {\n content: \"\\f127\";\n color: #000;\n color: var(--ag-checkbox-checked-color, var(--ag-foreground-color, #000));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-fresh input[class^=ag-][type=range] {\n -webkit-appearance: none;\n width: 100%;\n height: 100%;\n background: none;\n overflow: visible;\n}\n.ag-theme-fresh input[class^=ag-][type=range]::-webkit-slider-runnable-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: darkgrey;\n background-color: var(--ag-border-color, darkgrey);\n border-radius: 0px;\n border-radius: 0px;\n}\n.ag-theme-fresh input[class^=ag-][type=range]::-moz-range-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: darkgrey;\n background-color: var(--ag-border-color, darkgrey);\n border-radius: 0px;\n border-radius: 0px;\n}\n.ag-theme-fresh input[class^=ag-][type=range]::-ms-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: darkgrey;\n background-color: var(--ag-border-color, darkgrey);\n border-radius: 0px;\n border-radius: 0px;\n color: transparent;\n width: calc(100% - 2px);\n}\n.ag-theme-fresh input[class^=ag-][type=range]::-webkit-slider-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: 12px;\n height: 12px;\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n border: 1px solid;\n border-color: #000;\n border-color: var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #000));\n border-radius: 12px;\n -webkit-transform: translateY(-4.5px);\n transform: translateY(-4.5px);\n}\n.ag-theme-fresh input[class^=ag-][type=range]::-ms-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: 12px;\n height: 12px;\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n border: 1px solid;\n border-color: #000;\n border-color: var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #000));\n border-radius: 12px;\n}\n.ag-theme-fresh input[class^=ag-][type=range]::-moz-ag-range-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: 12px;\n height: 12px;\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n border: 1px solid;\n border-color: #000;\n border-color: var(--ag-checkbox-unchecked-color, var(--ag-foreground-color, #000));\n border-radius: 12px;\n}\n.ag-theme-fresh input[class^=ag-][type=range]:focus {\n outline: none;\n}\n.ag-theme-fresh input[class^=ag-][type=range]:focus::-webkit-slider-thumb {\n border-color: #000;\n border-color: var(--ag-checkbox-checked-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-fresh input[class^=ag-][type=range]:focus::-ms-thumb {\n border-color: #000;\n border-color: var(--ag-checkbox-checked-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-fresh input[class^=ag-][type=range]:focus::-moz-ag-range-thumb {\n border-color: #000;\n border-color: var(--ag-checkbox-checked-color, var(--ag-foreground-color, #000));\n}\n.ag-theme-fresh input[class^=ag-][type=range]:active::-webkit-slider-runnable-track {\n background-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-fresh input[class^=ag-][type=range]:active::-moz-ag-range-track {\n background-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-fresh input[class^=ag-][type=range]:active::-ms-track {\n background-color: var(--ag-input-focus-border-color);\n}\n.ag-theme-fresh input[class^=ag-][type=range]:disabled {\n opacity: 0.5;\n}\n.ag-theme-fresh .ag-icon {\n color: #333;\n margin: 1px 1px 2px 1px;\n}\n.ag-theme-fresh .ag-icon-tree-closed::before {\n content: \"\\f10b\";\n}\n.ag-theme-fresh .ag-icon-tree-open::before {\n content: \"\\f111\";\n}\n.ag-theme-fresh .ag-header, .ag-theme-fresh .ag-column-drop-cell {\n background-image: -webkit-gradient(linear, left top, left bottom, from(white), to(lightgrey));\n background-image: linear-gradient(white, lightgrey);\n}\n.ag-theme-fresh .ag-tab {\n border: 1px solid transparent;\n padding: 4px 8px;\n margin: 4px;\n margin-bottom: -1px;\n}\n.ag-theme-fresh .ag-tabs-body {\n margin: 2px 0;\n}\n.ag-theme-fresh .ag-tab-selected {\n background-color: #FFF;\n background-color: var(--ag-background-color, #FFF);\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n border-bottom-color: transparent;\n}\n.ag-theme-fresh .ag-tabs-header {\n background-color: var(--ag-header-background-color);\n border-bottom: 1px solid;\n border-bottom-color: darkgrey;\n border-bottom-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-fresh .ag-filter .ag-filter-apply-panel {\n -webkit-box-pack: start;\n justify-content: flex-start;\n}\n.ag-theme-fresh .ag-menu-option-active {\n background-color: #bde2e5;\n background-color: var(--ag-selected-row-background-color, #bde2e5);\n}\n.ag-theme-fresh .ag-column-drop-cell {\n border: 1px solid;\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n border-radius: 0;\n}\n.ag-theme-fresh .ag-column-drop-cell-button .ag-icon {\n border: 1px solid transparent;\n}\n.ag-theme-fresh .ag-column-drop-cell-button:hover .ag-icon {\n border-color: darkgrey;\n border-color: var(--ag-border-color, darkgrey);\n}\n.ag-theme-fresh .ag-panel-title-bar-button-icon {\n font-size: 20px;\n line-height: 20px;\n}\n.ag-theme-fresh .ag-menu-option-part {\n padding-top: 4px;\n padding-bottom: 4px;\n}\n.ag-theme-fresh .ag-column-drop-vertical-title-bar {\n margin-top: 4px;\n margin-left: 4px;\n}\n.ag-theme-fresh .ag-column-drop-vertical-title {\n margin-left: 4px;\n}\n.ag-theme-fresh .ag-column-drop-vertical-empty-message {\n margin-left: 24px;\n}\n", ""]);
58499// Exports
58500module.exports = exports;
58501
58502
58503/***/ }),
58504/* 295 */
58505/***/ (function(module, exports, __webpack_require__) {
58506
58507var api = __webpack_require__(276);
58508 var content = __webpack_require__(296);
58509
58510 content = content.__esModule ? content.default : content;
58511
58512 if (typeof content === 'string') {
58513 content = [[module.i, content, '']];
58514 }
58515
58516var options = {};
58517
58518options.insert = "head";
58519options.singleton = false;
58520
58521var update = api(content, options);
58522
58523
58524
58525module.exports = content.locals || {};
58526
58527/***/ }),
58528/* 296 */
58529/***/ (function(module, exports, __webpack_require__) {
58530
58531// Imports
58532var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58533exports = ___CSS_LOADER_API_IMPORT___(false);
58534// Module
58535exports.push([module.i, ".ag-theme-material {\n -webkit-font-smoothing: antialiased;\n color: rgba(0, 0, 0, 0.87);\n color: var(--ag-foreground-color, rgba(0, 0, 0, 0.87));\n font-family: \"Roboto\", sans-serif;\n font-size: 13px;\n line-height: normal;\n}\n@font-face {\n font-family: \"agGridMaterial\";\n src: url(\"data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABPwAAsAAAAAJjAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAAmMAAAR2ZOVnMk9TLzIAAANsAAAAQQAAAFZWUFMDY21hcAAAA7AAAAIRAAAFnH0V34BnbHlmAAAFxAAACj0AABO8Q1oUYmhlYWQAABAEAAAAMQAAADZ2zsSBaGhlYQAAEDgAAAAWAAAAJAfRBDVobXR4AAAQUAAAABIAAAEww1AAAGxvY2EAABBkAAAAcwAAAJoHSQMCbWF4cAAAENgAAAAfAAAAIAFfAKpuYW1lAAAQ+AAAATIAAAJebBQ2inBvc3QAABIsAAABwgAAAqTvU9OHeJx9lEtyElEUhv+mm0gCklSMGjFq1PhCjZpO09DhYUIHAjpwYFkOnMSyyrKKcsQ6XIAryNAVuAAHrsAFOHDo2PK7h0ZMBuEWl3vP4z//eVzkSVrQY7WVS3vPX6o8Ohx/VEWBJh+n///sjT68P1RhekMX2G9BXlBSWTf0WmN988re2DvKrfgV/5X/zv/sf/F/ycdqXZtYF7XNilRjDxWrroYS5TSHLOK8oybWPnvLpMswypump74uETPCp2+IVQ11R0vgpIbT1S5WMcthdtmHrLtaPMUi0T3w67DpIA2oyFVq0tR5zesAll3Obfyb6M8Rc4/YIV4puhR2eSQtzm1dgJPzCKyqB3rDvmyZOpR65hPzjbRv99BuRdbUqgVOg1gO+wkMpvIGUWt4PAK9jtXTrKJV3cS7AU4XtLZ575h3Ecsa3GL6ElieNbiWtMHphd7qIRb7mU/XajqpwH3Yz+Sp4SV6cEzaBmuI7SYcZlLXnyqxQg0sq1UkI33Skb7qu37op37rj85Qpw56l8Mu6Hun1qZABU9a99C2/kldrnPMwEmr4xbzZN6w6kTo+lkNXbQimbnqxJxDpLHZL8DT2fdgk9CPgBihxXWdzrM63COsz2bT2WSVrNJ9er9oEzywWagwgVtMlUOczGFCra+A6E4Tfpetbk3w1qxvrrruhS3Zzb0F1+8KfbjGb0iGdavTM7TXkTikmWTdvBLYO4wt9AmsZ9EcqzVYbdtEuxkb2OvoEWmDfCZMarptL2Ng83ULBvXspa7oorFvZx1bNbvIvDz+CcLshcdWOzfTKdzcfAz/Au6DcHUAeJxjYGSaxDiBgZWBgamKaQ8DA0MPhGZ8wGDIyAQUZWBlZsAKAtJcUxgOMOh+NGJ+AeRGMb9hYAHSjCA5AOMfCvMAAAB4nLXUB1IbQRCF4V+BLMC2MDknR9kgBCIHIUDAKXCmcKBw5hw+m+/RJ8Bv1O0D4Cpv1afeGa12Z7T1GmgBcvJU8pBtJ6MzMlnNZprzOTqb83l+a1ygnazOS5xzybWVb240W+KMC64s0xz9PTK6usAo86xotM8Se2xR1+iECjussss2B6yzxhHLbFLlkGM2qNHgVL9Pq8hrja206bkdWkmX7thND3e4S5E++hlgkCGGGdGTxhhngkmmdN00M8wyp6cXecBDHvGYJ9pPiWc81/cLLFLWIlu53bF/y+vTsbS3VV85qexox9sH62va7Gb18Hij1jj9h5v9h6OQPnK/YpQWVQppt2dhSV6EPXkZtuRVqMvrkN76m3Aib0NF3oUdOQ+rchF25X3Ylg/hQD6GdfkU1uQyHMlVWJbPYVO+hKp8DYfyLRzL97AhP0JNfoaGXAf9V5ZxKS+WdaSacylflncpY9biUvas1ZFqmyPVdkeqHY5UO13KpHU5Ui249Cat25FqjyPVXqfsYEEpwoJygt1zShZWdMoY1ueUNuy+U+6wfqcEYgNOWcQGnVKJDTnlExt2Sio24pRZbNQpvdiYU46xcadEYxOuud9Jp5RjU055x6adko/NOPUAbNapG2BzrrnfeacOgQX1Ciyoa2BB/QML6iRYSL3TQsqMBfUZLKjjYKG5/gVHqouOVMuO8h8D8KVRAAAAeJztWH1sG+UZv+e92Ofz99m+O3tN7NgX+0qTGsXn88V2miZN2mSMpJ1sOvpFCqwtkNK0UAaFRTDEpDJGizTCH6BJoEmONAkGyz9lQy3qQHRC2lzRMQl13cQ/JIxFRYpAMvVtz3ux04ZmjP2JtuTe9557P557Pn73Ps9jBhj8IwvsJsbFMBAXPSDG9bihxsmC6Qaf+SksmhfPn4cOdqBUq5WmqlWGaaF72NfY1xg742FCzBrcqemaymmconOyriVVURE1UVVERTYUeKkyefbsZA/tyPDZyckZ65k8iv0MpUpnJyuTBlLI1pKH3YTyOBgmKBuCJsgGzBTmy3NFcxYWi/OmDb6YL8Ioim2tnWanUYZ23Jrg7Jw9JEuylDFyRi6rptRUkFM51VAN2ZA5WDxy+7iRzxvjt3/YJMYLzz1XmJ62enZ6xZRF1H/fnMWevs56Z5gNI8VRmwU1QaHN0ESlOjX18dGj8w88QO42D5CR+qlazTKvtWeOnWOCTIRaOeEFUQhFQYtn+kAXsmngwZBBZo9d+SyqRfFinda9vmB+PHYOKmPsHD6vmLzyGUhj70Bl60r+8ur8WXTqddyfrl8gXddzrl84fC1P1uIpxIXkanyRJ+v8Et+lwckv823Y7iH2+4wNvRtmGB44mQfWiIGduk4MSZmcTt1G/m6OF+4069B37tw7r7pcEZ/Uvblb8kXgLLxUxAnzd7Dh3Lk+jye6JhVJdHcnIsnWKGXPL+NnyT8+yyZrmBijUF/pCm0cNh2bjM0QNd3WGBewzVQqNetq3M29jSfyQqW+H+/lSmMAZ/BqYpacJAuoF4MqcYjYZwunTxdqZKF45kyxtoybx9gzluatlpfsIqI7LltESEKj5tCmKTYuxMmrplvpLsPilKlT7eBd2ps6vMue7k7UXyfDpW6l/jodJMNKd30fGV7+dig26beMuLdEkQ2VDRfn55sX+cs1D/gFM/+8wh5iP2H8aKk2ZoR5jPk57sZPR7VdIxir6IgB2S5LRQgmQ16iJNIteraPaJkoiCF7IqWmQcENCI9MzuiDjCSHvDiCw3o2l4myGvVtGtQ0yfYB7iKNTUt7YiDJUYLC5oxu3ByFkOgDL0mk4UYWt0vsvdz+wzZzTDUMleRUY8usuQmeJMDa/B8Qc5wPREN+OeR32jzheFDuCDo9jhZHyCe3uuV2yU4cXudrgYTUJnj8vNfBOXxuQXIF/KE1QiAmBcKCw+nhWmy+aMDusgUCLk/A2du5jrDE4XLYiE44p89tJxoLzoCDfOT4weM20qNe+aMlzJPVKz9hH/pThBfqz/zZHYsGHYE17UkxoadCrWqA9zk9Yiibae+UwmGnz+uL3CD5XMmAy+uKCG454BUcdi4YTyeDHjEs+p0uXyDo4V08y3E2Lth24rdv8C67k/M4bfwF3ufgvfwffLzTH6Cu/r/vvrm+WxHn8FsVFEHlgB2wAh2M0kAHX5i2eQx6NN6u8PO3/6OPDRr6sjktI8VgI6Euk8SQD2R0jRcSqRuBoyBI6dmvds36Hd/hOVvIJwT9vf1Or93j8AXFsbLbyQdCgZZbv9fCCzjyVUY9d2zC63FJ/mB4505fwGbzu4W2e4/5xICX5+2PPmx32AWfZY//BR1Xxgk8nZHRiUKtVjhNZou1WvHMMi52kDmmiA9p1MDOqagkqiV7AUlDwQFFtqNqqhLFT9igNH6LOCXbOY0ulmTyLJceUuNFeXTHgW0jW+5plW/pGUvyg5ywbmzIwcezjkFu/Wa1o314cATnJ1pT393FtzxxQ9va9ixPhOQGJSKNarHYoeENd8RHk1o4sG4zqLFUn+Lb8i06vLd/dzC0tjUV/YbKzC7LHMDcYK2VPaKsKDEmj31goGwpFk+w7NKB5gU2YafpSTYFi5ZwrfdsGXkRibY2JLZ13dTVddOttOtam89vy+fJR/SNw4disebdnGiswA5YumZbvinHBGKikU8mMQehOThgxoaZc8W8SBbqJzELd9dK8FKpZF4sL+eU5HMLSzxFk4F4AsxDyedvvolgMvVyGXSafNTo3kY+t4kcsd5DM/24jeaEA/X95PlGO1KaKTXiCq69jXUi5WQERsSsNUb3oBk6gQpn0MAR14NWFoWZv0LDAhkGCdO8GZDMj2eQMN2T9O8STQRhlHZjhw9fwvtk/cLk5GE6fJ0eQZqxqHHU41NLDXiwXCazlhqoxHXnJhYqmDmrqMbSUQmj9Ngk0fmCOWvOFuab9p0mb2ONEGa68A0oahF0BXNZDF0WlQYZTZHEkmXJ1Z2AVB9gwPtFolepVPJ7e3r25isVpTfxSxgzfw0PUlpRludgUSkqW3vG7xvv2aoUuXIF+y10ZO+R8Z5mLu1Ee8qWHbEUwWJB5rBK0rE4oQY0sGpiNUNXFU4kXfu27n/mmf1b9x1eJvbvHhjYPUAeXjFICfORATrVsMsEO0E1DqJ3pxA2AXaixKyCMQPVtf7Rh9a6pYblXblaKjXOqQXmPN1pIC8LQlULG6vyEhp4naLrmvyuwpW9pk6LM+l/U6lBlpL0IIA04AGuAk1O6MLV6jZz0/qum0d35e/qNNcnOmAUCXgv0UEHVyvjzPFdozd3re9ImOs77zI/6UjAe5135a2xpk4HMTeX0D8qyqfQ1IZTVibmSjwj0bwnm4O4oKHKGhv+lad/W7/3FSsRH7Fy9ItCJJKIRECvnyrDi2V2IplOJzFn32eteSHRHVbCeKGNXpiaamKjn+1DKXy0elCNIFiZO61ZVdj1lPrUX6ErGr3cu/3yLb3HopDDEfibeSEaPdZ7y+XtvZevqXtoTb5U7yioR5rJMDmmgGdKHDGOKvTRyi1KazgvAMId9Ygnl16FyBO1pFUsy3SKfg0GNnpAxLS2Ni1Gnrfu9X9UKujmIXjD/HDjRvXAAfV9HPhE7d+49sABM4S0dOnSpUql5+qWmMUCxAr82HzklY39uGktvD9zo9pPSXiaFlOVFXVyiLmhiRI/RUk7hYafooRNWGGfPmfoTAMgx48eGRwaGjxyFPxN6vi9e3bqhqHv3PNBk2Dn6IR5eeXiKz9cscgiGpigsrgRszkqjXVgLJ0L6n8h2tD9g4P3H6fd0NeTkiw01mNX+9oCX3c2cjJ+uRgTrv3NxMov5wsw2rA1PS88iHqrvleWsW4zLEwICPD6qdIStM3Zg4VqtXCwTH8Qgg7zolWXdrQeLFarxYPws+X85m2yh3IHLII7qlWym/5i1Jzbg+cwsWSj4+St1eYQ9D+tVule5jqeiE0cp/NX9b2TdTfzKVDh0MvFOVgsQOnlwjzemzUxiTbPxSr9XYZEy8u8F8jJpbqdJmSNWENO0Or9at0+jXaicTBDzwaxUTZxch/QqohTZI0mOuLVeIJVkyHjQhkvA8hbVrww1m3IbuzZe8fusqN+6vHCSDOmbOreHrtvfGQmWx8mb2HkULo2uzasuaM3P95TKcPBH4Xv7s9bgUXpvsm2vXwbriS/Qan+BR+vOg4AAAB4nGNgZGBgAGKpH/rO8fw2Xxm4mV8ABaI4H+9rQND//zC/YH4DVMnBwAQkGQBX3Q0FAAAAeJxjYGRgYH7BwIBEMjKgAh8ARYYDEAAAeJxjYGBgYH4xPDA9AAANeC3nAAB4nGNgAAIpBg+GOIYZDJsYHjHyMJoxZjAuYtzC+IyJgeke8x7mSywuLNtYTrAqsdawHmC9w/qFjYvNgS2CrYBtE9sTtk/sXOwS7EbsTewH2J9wuHH0cDzj+MOpxmnC6cQZwBnHWcBZxzmB8x7pEAB+RDEmAHicY2BkYGDwYZjHwMkAAkxAzAWEDAz/wXwGACCLAgoAeJx9kD1qw0AQhZ/8F2JDCIS4UrEQSBOQf0qT2oKAGxfuZWsly6y1YrU2+AY5SE6QQ6TMQXKKPK23sQvPwvC9N2+mWACP+EGApgI8uN5UC3dUZ26Tnj13yC+euxhg4rlH/91zH2/48DzAEw68EHTu6YT49Nxi/stzm/635w7513MXQ/x57iEM4LmPVRB6HuA1MEkemyJdJFaaIlFLmR9UcmVeqpU0daFLMYnGl4NYltKQU7E+ifqYT63NRGb0Xsx1aaVSWlRG7+TGRltrq9lolHk/2ug9EuSIYVAgxYLKQjqVQGFJzvkXisrcTN6arRzXVBolBP8/wvjmRkwunT77KbfWOLHXOHJvStcio86Y0diT5u56k1Z8mk7lZjs6G/oRtm6rwgwjvuwqHzHFS/808m/eAAB4nG2SB2/bMBCF/cWS7dhpk6Ztuvceauvune6Z/giGomUiEimQlO3k15e1gwABegCJ9x7uju8ObC21FtFv/T+2WKJNQkqHLj2W6TNghSMcZZU1jrHOcU5wkg1OcZoznOUc57nARS5xmStc5RrXucFNbnGbO9zlHvfJeMBDHjHkMU94yjOe84KXvOI1b3jLO96zyQc+8onPfOEr3/jOD37yi99s8ac1EEXhVCGCtqYjnLNT3xZedqQwUpWpHAsX1uRYyZ1tO8vmQOUbB4I2uQrKVdqIoNYP5MbsZ65IW1qX1ToS142kqYzvS2uCEzKoPJG23k2ls963pZ+k8WTDJFdepmoWDXTndzbsqVkt4lv5stpVmS+FHw8OUDZsR9wZ6TJaSUfa+ZAUTtdp4WxTJzElJKUahU6pTfTULa3ItSl6lZjpSu+ppFKm6cUZFsxYowbGhkyUpZ2qPK1jA9WutUlrPbFhzcVym203IViT2dFo9bBgUqeLcUi8mKi+r2KXLLdTsw//GRks4Dytt8DRZ4hLWg9OqcNbXZ5Ltlam15jFBAgKHIqAxmKY4pGUjNlhm1n8FzkVDTW7TBix12r9BZxqtRIAAA==\") format(\"woff\");\n font-weight: normal;\n font-style: normal;\n}\n.ag-theme-material .ag-icon {\n font-family: \"agGridMaterial\";\n font-size: 18px;\n line-height: 18px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.ag-theme-material .ag-icon-aggregation::before {\n content: \"\\f101\";\n}\n.ag-theme-material .ag-icon-arrows::before {\n content: \"\\f102\";\n}\n.ag-theme-material .ag-icon-asc::before {\n content: \"\\f103\";\n}\n.ag-theme-material .ag-icon-cancel::before {\n content: \"\\f104\";\n}\n.ag-theme-material .ag-icon-chart::before {\n content: \"\\f105\";\n}\n.ag-theme-material .ag-icon-color-picker::before {\n content: \"\\f109\";\n}\n.ag-theme-material .ag-icon-columns::before {\n content: \"\\f10a\";\n}\n.ag-theme-material .ag-icon-contracted::before {\n content: \"\\f10b\";\n}\n.ag-theme-material .ag-icon-copy::before {\n content: \"\\f10c\";\n}\n.ag-theme-material .ag-icon-cross::before {\n content: \"\\f10d\";\n}\n.ag-theme-material .ag-icon-csv::before {\n content: \"\\f10e\";\n}\n.ag-theme-material .ag-icon-desc::before {\n content: \"\\f10f\";\n}\n.ag-theme-material .ag-icon-excel::before {\n content: \"\\f110\";\n}\n.ag-theme-material .ag-icon-expanded::before {\n content: \"\\f111\";\n}\n.ag-theme-material .ag-icon-eye-slash::before {\n content: \"\\f112\";\n}\n.ag-theme-material .ag-icon-eye::before {\n content: \"\\f113\";\n}\n.ag-theme-material .ag-icon-filter::before {\n content: \"\\f114\";\n}\n.ag-theme-material .ag-icon-first::before {\n content: \"\\f115\";\n}\n.ag-theme-material .ag-icon-grip::before {\n content: \"\\f116\";\n}\n.ag-theme-material .ag-icon-group::before {\n content: \"\\f117\";\n}\n.ag-theme-material .ag-icon-last::before {\n content: \"\\f118\";\n}\n.ag-theme-material .ag-icon-left::before {\n content: \"\\f119\";\n}\n.ag-theme-material .ag-icon-linked::before {\n content: \"\\f11a\";\n}\n.ag-theme-material .ag-icon-loading::before {\n content: \"\\f11b\";\n}\n.ag-theme-material .ag-icon-maximize::before {\n content: \"\\f11c\";\n}\n.ag-theme-material .ag-icon-menu::before {\n content: \"\\f11d\";\n}\n.ag-theme-material .ag-icon-minimize::before {\n content: \"\\f11e\";\n}\n.ag-theme-material .ag-icon-next::before {\n content: \"\\f11f\";\n}\n.ag-theme-material .ag-icon-none::before {\n content: \"\\f120\";\n}\n.ag-theme-material .ag-icon-not-allowed::before {\n content: \"\\f121\";\n}\n.ag-theme-material .ag-icon-paste::before {\n content: \"\\f122\";\n}\n.ag-theme-material .ag-icon-pin::before {\n content: \"\\f123\";\n}\n.ag-theme-material .ag-icon-pivot::before {\n content: \"\\f124\";\n}\n.ag-theme-material .ag-icon-previous::before {\n content: \"\\f125\";\n}\n.ag-theme-material .ag-icon-right::before {\n content: \"\\f128\";\n}\n.ag-theme-material .ag-icon-save::before {\n content: \"\\f129\";\n}\n.ag-theme-material .ag-icon-small-down::before {\n content: \"\\f12a\";\n}\n.ag-theme-material .ag-icon-small-left::before {\n content: \"\\f12b\";\n}\n.ag-theme-material .ag-icon-small-right::before {\n content: \"\\f12c\";\n}\n.ag-theme-material .ag-icon-small-up::before {\n content: \"\\f12d\";\n}\n.ag-theme-material .ag-icon-tick::before {\n content: \"\\f12e\";\n}\n.ag-theme-material .ag-icon-tree-closed::before {\n content: \"\\f12f\";\n}\n.ag-theme-material .ag-icon-tree-indeterminate::before {\n content: \"\\f130\";\n}\n.ag-theme-material .ag-icon-tree-open::before {\n content: \"\\f131\";\n}\n.ag-theme-material .ag-icon-unlinked::before {\n content: \"\\f132\";\n}\n.ag-theme-material .ag-icon-row-drag::before {\n content: \"\\f116\";\n}\n.ag-theme-material .ag-left-arrow::before {\n content: \"\\f119\";\n}\n.ag-theme-material .ag-right-arrow::before {\n content: \"\\f128\";\n}\n.ag-theme-material .ag-root-wrapper {\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n}\n.ag-theme-material [class^=ag-], .ag-theme-material [class^=ag-]:focus, .ag-theme-material [class^=ag-]:after, .ag-theme-material [class^=ag-]:before {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n outline: none;\n}\n.ag-theme-material [class^=ag-]::-ms-clear {\n display: none;\n}\n.ag-theme-material .ag-checkbox .ag-input-wrapper,\n.ag-theme-material .ag-radio-button .ag-input-wrapper {\n overflow: visible;\n}\n.ag-theme-material .ag-range-field .ag-input-wrapper {\n height: 100%;\n}\n.ag-theme-material .ag-toggle-button {\n -webkit-box-flex: 0;\n flex: none;\n width: unset;\n min-width: unset;\n}\n.ag-theme-material .ag-ltr .ag-label-align-right .ag-label {\n margin-left: 8px;\n}\n\n.ag-theme-material .ag-rtl .ag-label-align-right .ag-label {\n margin-right: 8px;\n}\n\n.ag-theme-material input[class^=ag-] {\n margin: 0;\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n}\n.ag-theme-material textarea[class^=ag-],\n.ag-theme-material select[class^=ag-] {\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n}\n.ag-theme-material input[class^=ag-]:not([type]),\n.ag-theme-material input[class^=ag-][type=text],\n.ag-theme-material input[class^=ag-][type=number],\n.ag-theme-material input[class^=ag-][type=tel],\n.ag-theme-material input[class^=ag-][type=date],\n.ag-theme-material input[class^=ag-][type=datetime-local],\n.ag-theme-material textarea[class^=ag-] {\n font-size: inherit;\n line-height: inherit;\n color: inherit;\n}\n.ag-theme-material input[class^=ag-]:not([type]):disabled,\n.ag-theme-material input[class^=ag-][type=text]:disabled,\n.ag-theme-material input[class^=ag-][type=number]:disabled,\n.ag-theme-material input[class^=ag-][type=tel]:disabled,\n.ag-theme-material input[class^=ag-][type=date]:disabled,\n.ag-theme-material input[class^=ag-][type=datetime-local]:disabled,\n.ag-theme-material textarea[class^=ag-]:disabled {\n color: rgba(0, 0, 0, 0.38);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.38));\n background-color: var(--ag-input-disabled-background-color);\n border-color: var(--ag-input-disabled-border-color);\n}\n.ag-theme-material input[class^=ag-]:not([type]):focus,\n.ag-theme-material input[class^=ag-][type=text]:focus,\n.ag-theme-material input[class^=ag-][type=number]:focus,\n.ag-theme-material input[class^=ag-][type=tel]:focus,\n.ag-theme-material input[class^=ag-][type=date]:focus,\n.ag-theme-material input[class^=ag-][type=datetime-local]:focus,\n.ag-theme-material textarea[class^=ag-]:focus {\n outline: none;\n -webkit-box-shadow: 0 0 0 5px rgba(32, 33, 36, 0.122);\n box-shadow: 0 0 0 5px rgba(32, 33, 36, 0.122);\n border-color: #3f51b5;\n border-color: var(--ag-input-focus-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material input[class^=ag-]:not([type]):invalid,\n.ag-theme-material input[class^=ag-][type=text]:invalid,\n.ag-theme-material input[class^=ag-][type=number]:invalid,\n.ag-theme-material input[class^=ag-][type=tel]:invalid,\n.ag-theme-material input[class^=ag-][type=date]:invalid,\n.ag-theme-material input[class^=ag-][type=datetime-local]:invalid,\n.ag-theme-material textarea[class^=ag-]:invalid {\n border-width: 2px;\n border-style: solid;\n border-color: var(--ag-input-border-color-invalid);\n}\n.ag-theme-material input[class^=ag-][type=number] {\n -moz-appearance: textfield;\n}\n.ag-theme-material input[class^=ag-][type=number]::-webkit-outer-spin-button, .ag-theme-material input[class^=ag-][type=number]::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n.ag-theme-material input[class^=ag-][type=range] {\n padding: 0;\n}\n.ag-theme-material input[class^=ag-][type=button]:focus, .ag-theme-material button[class^=ag-]:focus {\n -webkit-box-shadow: 0 0 0 5px rgba(32, 33, 36, 0.122);\n box-shadow: 0 0 0 5px rgba(32, 33, 36, 0.122);\n}\n.ag-theme-material .ag-drag-handle {\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n}\n.ag-theme-material .ag-list-item, .ag-theme-material .ag-virtual-list-item {\n height: 32px;\n}\n.ag-theme-material .ag-keyboard-focus .ag-virtual-list-item:focus {\n outline: none;\n}\n.ag-theme-material .ag-keyboard-focus .ag-virtual-list-item:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: #3f51b5;\n border-color: var(--ag-input-focus-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material .ag-select-list {\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n overflow-y: auto;\n overflow-x: hidden;\n}\n.ag-theme-material .ag-list-item {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ag-theme-material .ag-list-item.ag-active-item {\n background-color: #fafafa;\n background-color: var(--ag-row-hover-color, #fafafa);\n}\n.ag-theme-material .ag-select-list-item {\n padding-left: 4px;\n padding-right: 4px;\n cursor: default;\n -moz-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n}\n.ag-theme-material .ag-select-list-item span {\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n}\n.ag-theme-material .ag-select .ag-picker-field-wrapper {\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n min-height: 32px;\n cursor: default;\n}\n.ag-theme-material .ag-select.ag-disabled .ag-picker-field-wrapper:focus {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.ag-theme-material .ag-select:not(.ag-cell-editor) {\n height: 32px;\n}\n.ag-theme-material .ag-select .ag-picker-field-display {\n margin: 4px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ag-theme-material .ag-select .ag-picker-field-icon {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-material .ag-select.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-material .ag-rich-select {\n background-color: #fafafa;\n background-color: var(--ag-control-panel-background-color, #fafafa);\n}\n.ag-theme-material .ag-rich-select-list {\n width: 100%;\n min-width: 200px;\n height: 312px;\n}\n.ag-theme-material .ag-rich-select-value {\n padding: 0 8px 0 24px;\n height: 48px;\n}\n.ag-theme-material .ag-rich-select-virtual-list-item {\n cursor: default;\n height: 32px;\n}\n.ag-theme-material .ag-rich-select-virtual-list-item:hover {\n background-color: #fafafa;\n background-color: var(--ag-row-hover-color, #fafafa);\n}\n.ag-theme-material .ag-rich-select-row {\n padding-left: 24px;\n}\n.ag-theme-material .ag-rich-select-row-selected {\n background-color: #eee;\n background-color: var(--ag-selected-row-background-color, #eee);\n}\n.ag-theme-material .ag-row-drag,\n.ag-theme-material .ag-selection-checkbox,\n.ag-theme-material .ag-group-expanded,\n.ag-theme-material .ag-group-contracted {\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n}\n.ag-theme-material .ag-ltr .ag-row-drag, .ag-theme-material .ag-ltr .ag-selection-checkbox, .ag-theme-material .ag-ltr .ag-group-expanded, .ag-theme-material .ag-ltr .ag-group-contracted {\n margin-right: 24px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-drag, .ag-theme-material .ag-rtl .ag-selection-checkbox, .ag-theme-material .ag-rtl .ag-group-expanded, .ag-theme-material .ag-rtl .ag-group-contracted {\n margin-left: 24px;\n}\n\n.ag-theme-material .ag-cell-wrapper > *:not(.ag-cell-value):not(.ag-group-value) {\n height: min(var(--ag-line-height, 46px), 46px);\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-flex: 0;\n flex: none;\n}\n.ag-theme-material .ag-group-expanded,\n.ag-theme-material .ag-group-contracted {\n cursor: pointer;\n}\n.ag-theme-material .ag-group-title-bar-icon {\n cursor: pointer;\n -webkit-box-flex: 0;\n flex: none;\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n}\n.ag-theme-material .ag-ltr .ag-group-child-count {\n margin-left: 2px;\n}\n\n.ag-theme-material .ag-rtl .ag-group-child-count {\n margin-right: 2px;\n}\n\n.ag-theme-material .ag-group-title-bar {\n background-color: #eee;\n background-color: var(--ag-subheader-background-color, #eee);\n padding: 8px;\n}\n.ag-theme-material .ag-group-toolbar {\n padding: 8px;\n}\n.ag-theme-material .ag-disabled-group-title-bar, .ag-theme-material .ag-disabled-group-container {\n opacity: 0.5;\n}\n.ag-theme-material .group-item {\n margin: 4px 0;\n}\n.ag-theme-material .ag-label {\n white-space: nowrap;\n}\n.ag-theme-material .ag-ltr .ag-label {\n margin-right: 8px;\n}\n\n.ag-theme-material .ag-rtl .ag-label {\n margin-left: 8px;\n}\n\n.ag-theme-material .ag-label-align-top .ag-label {\n margin-bottom: 4px;\n}\n.ag-theme-material .ag-ltr .ag-slider-field, .ag-theme-material .ag-ltr .ag-angle-select-field {\n margin-right: 16px;\n}\n\n.ag-theme-material .ag-rtl .ag-slider-field, .ag-theme-material .ag-rtl .ag-angle-select-field {\n margin-left: 16px;\n}\n\n.ag-theme-material .ag-angle-select-parent-circle {\n width: 24px;\n height: 24px;\n border-radius: 12px;\n border: solid 1px;\n border-color: #e2e2e2;\n border-color: var(--ag-border-color, #e2e2e2);\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n}\n.ag-theme-material .ag-angle-select-child-circle {\n top: 4px;\n left: 12px;\n width: 6px;\n height: 6px;\n margin-left: -3px;\n margin-top: -4px;\n border-radius: 3px;\n background-color: rgba(0, 0, 0, 0.54);\n background-color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n}\n.ag-theme-material .ag-picker-field-wrapper {\n border: 1px solid;\n border-color: #e2e2e2;\n border-color: var(--ag-border-color, #e2e2e2);\n border-radius: 5px;\n}\n.ag-theme-material .ag-picker-field-wrapper:focus {\n -webkit-box-shadow: 0 0 0 5px rgba(32, 33, 36, 0.122);\n box-shadow: 0 0 0 5px rgba(32, 33, 36, 0.122);\n}\n.ag-theme-material .ag-picker-field-button {\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n}\n.ag-theme-material .ag-dialog.ag-color-dialog {\n border-radius: 5px;\n}\n.ag-theme-material .ag-color-picker .ag-picker-field-display {\n height: 18px;\n}\n.ag-theme-material .ag-color-panel {\n padding: 8px;\n}\n.ag-theme-material .ag-spectrum-color {\n background-color: rgb(255, 0, 0);\n border-radius: 2px;\n}\n.ag-theme-material .ag-spectrum-tools {\n padding: 10px;\n}\n.ag-theme-material .ag-spectrum-sat {\n background-image: -webkit-gradient(linear, left top, right top, from(white), to(rgba(204, 154, 129, 0)));\n background-image: linear-gradient(to right, white, rgba(204, 154, 129, 0));\n}\n.ag-theme-material .ag-spectrum-val {\n background-image: -webkit-gradient(linear, left bottom, left top, from(black), to(rgba(204, 154, 129, 0)));\n background-image: linear-gradient(to top, black, rgba(204, 154, 129, 0));\n}\n.ag-theme-material .ag-spectrum-dragger {\n border-radius: 12px;\n height: 12px;\n width: 12px;\n border: 1px solid white;\n background: black;\n -webkit-box-shadow: 0 0 2px 0px rgba(0, 0, 0, 0.24);\n box-shadow: 0 0 2px 0px rgba(0, 0, 0, 0.24);\n}\n.ag-theme-material .ag-spectrum-hue-background {\n border-radius: 2px;\n}\n.ag-theme-material .ag-spectrum-alpha-background {\n border-radius: 2px;\n}\n.ag-theme-material .ag-spectrum-tool {\n margin-bottom: 10px;\n height: 11px;\n border-radius: 2px;\n}\n.ag-theme-material .ag-spectrum-slider {\n margin-top: -12px;\n width: 13px;\n height: 13px;\n border-radius: 13px;\n background-color: rgb(248, 248, 248);\n -webkit-box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\n box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.37);\n}\n.ag-theme-material .ag-recent-color {\n margin: 0 3px;\n}\n.ag-theme-material .ag-recent-color:first-child {\n margin-left: 0;\n}\n.ag-theme-material .ag-recent-color:last-child {\n margin-right: 0;\n}\n.ag-theme-material.ag-dnd-ghost {\n background: #fff;\n background: var(--ag-background-color, #fff);\n border-radius: 2px;\n -webkit-box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\n box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\n padding: 8px;\n overflow: hidden;\n text-overflow: ellipsis;\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n height: 56px !important;\n line-height: 56px;\n margin: 0;\n padding: 0 16px;\n -webkit-transform: translateY(16px);\n transform: translateY(16px);\n}\n.ag-theme-material .ag-dnd-ghost-icon {\n margin-right: 8px;\n color: rgba(0, 0, 0, 0.87);\n color: var(--ag-foreground-color, rgba(0, 0, 0, 0.87));\n}\n.ag-theme-material .ag-popup-child:not(.ag-tooltip-custom) {\n -webkit-box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.3);\n box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.3);\n}\n.ag-dragging-range-handle .ag-theme-material .ag-dialog, .ag-dragging-fill-handle .ag-theme-material .ag-dialog {\n opacity: 0.7;\n pointer-events: none;\n}\n.ag-theme-material .ag-dialog {\n border-radius: 0px;\n}\n.ag-theme-material .ag-panel {\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n}\n.ag-theme-material .ag-panel-title-bar {\n background-color: #fff;\n background-color: var(--ag-header-background-color, #fff);\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-header-foreground-color, var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54)));\n height: 56px;\n padding: 8px 24px;\n}\n.ag-theme-material .ag-ltr .ag-panel-title-bar-button {\n margin-left: 8px;\n}\n\n.ag-theme-material .ag-rtl .ag-panel-title-bar-button {\n margin-right: 8px;\n}\n\n.ag-theme-material .ag-tooltip {\n background-color: #fff;\n background-color: var(--ag-header-background-color, #fff);\n color: rgba(0, 0, 0, 0.87);\n color: var(--ag-foreground-color, rgba(0, 0, 0, 0.87));\n padding: 8px;\n border-radius: 2px;\n -webkit-transition: opacity 1s;\n transition: opacity 1s;\n white-space: normal;\n}\n.ag-theme-material .ag-tooltip.ag-tooltip-hiding {\n opacity: 0;\n}\n.ag-theme-material .ag-tooltip-custom {\n -webkit-transition: opacity 1s;\n transition: opacity 1s;\n}\n.ag-theme-material .ag-tooltip-custom.ag-tooltip-hiding {\n opacity: 0;\n}\n.ag-theme-material .ag-ltr .ag-column-select-indent-1 {\n padding-left: 26px;\n}\n\n.ag-theme-material .ag-rtl .ag-column-select-indent-1 {\n padding-right: 26px;\n}\n\n.ag-theme-material .ag-ltr .ag-column-select-indent-2 {\n padding-left: 52px;\n}\n\n.ag-theme-material .ag-rtl .ag-column-select-indent-2 {\n padding-right: 52px;\n}\n\n.ag-theme-material .ag-ltr .ag-column-select-indent-3 {\n padding-left: 78px;\n}\n\n.ag-theme-material .ag-rtl .ag-column-select-indent-3 {\n padding-right: 78px;\n}\n\n.ag-theme-material .ag-ltr .ag-column-select-indent-4 {\n padding-left: 104px;\n}\n\n.ag-theme-material .ag-rtl .ag-column-select-indent-4 {\n padding-right: 104px;\n}\n\n.ag-theme-material .ag-ltr .ag-column-select-indent-5 {\n padding-left: 130px;\n}\n\n.ag-theme-material .ag-rtl .ag-column-select-indent-5 {\n padding-right: 130px;\n}\n\n.ag-theme-material .ag-ltr .ag-column-select-indent-6 {\n padding-left: 156px;\n}\n\n.ag-theme-material .ag-rtl .ag-column-select-indent-6 {\n padding-right: 156px;\n}\n\n.ag-theme-material .ag-ltr .ag-column-select-indent-7 {\n padding-left: 182px;\n}\n\n.ag-theme-material .ag-rtl .ag-column-select-indent-7 {\n padding-right: 182px;\n}\n\n.ag-theme-material .ag-ltr .ag-column-select-indent-8 {\n padding-left: 208px;\n}\n\n.ag-theme-material .ag-rtl .ag-column-select-indent-8 {\n padding-right: 208px;\n}\n\n.ag-theme-material .ag-ltr .ag-column-select-indent-9 {\n padding-left: 234px;\n}\n\n.ag-theme-material .ag-rtl .ag-column-select-indent-9 {\n padding-right: 234px;\n}\n\n.ag-theme-material .ag-column-select-header-icon {\n cursor: pointer;\n}\n.ag-theme-material .ag-keyboard-focus .ag-column-select-header-icon:focus {\n outline: none;\n}\n.ag-theme-material .ag-keyboard-focus .ag-column-select-header-icon:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 0px;\n left: 0px;\n display: block;\n width: calc(100% - 0px);\n height: calc(100% - 0px);\n border: 1px solid;\n border-color: #3f51b5;\n border-color: var(--ag-input-focus-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material .ag-ltr .ag-column-group-icons:not(:last-child), .ag-theme-material .ag-ltr .ag-column-select-header-icon:not(:last-child), .ag-theme-material .ag-ltr .ag-column-select-header-checkbox:not(:last-child), .ag-theme-material .ag-ltr .ag-column-select-header-filter-wrapper:not(:last-child), .ag-theme-material .ag-ltr .ag-column-select-checkbox:not(:last-child), .ag-theme-material .ag-ltr .ag-column-select-column-drag-handle:not(:last-child), .ag-theme-material .ag-ltr .ag-column-select-column-group-drag-handle:not(:last-child), .ag-theme-material .ag-ltr .ag-column-select-column-label:not(:last-child) {\n margin-right: 16px;\n}\n\n.ag-theme-material .ag-rtl .ag-column-group-icons:not(:last-child), .ag-theme-material .ag-rtl .ag-column-select-header-icon:not(:last-child), .ag-theme-material .ag-rtl .ag-column-select-header-checkbox:not(:last-child), .ag-theme-material .ag-rtl .ag-column-select-header-filter-wrapper:not(:last-child), .ag-theme-material .ag-rtl .ag-column-select-checkbox:not(:last-child), .ag-theme-material .ag-rtl .ag-column-select-column-drag-handle:not(:last-child), .ag-theme-material .ag-rtl .ag-column-select-column-group-drag-handle:not(:last-child), .ag-theme-material .ag-rtl .ag-column-select-column-label:not(:last-child) {\n margin-left: 16px;\n}\n\n.ag-theme-material .ag-keyboard-focus .ag-column-select-virtual-list-item:focus {\n outline: none;\n}\n.ag-theme-material .ag-keyboard-focus .ag-column-select-virtual-list-item:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 1px;\n left: 1px;\n display: block;\n width: calc(100% - 2px);\n height: calc(100% - 2px);\n border: 1px solid;\n border-color: #3f51b5;\n border-color: var(--ag-input-focus-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material .ag-column-select-column-group:not(:last-child),\n.ag-theme-material .ag-column-select-column:not(:last-child) {\n margin-bottom: 14px;\n}\n.ag-theme-material .ag-column-select-column-readonly,\n.ag-theme-material .ag-column-select-column-group-readonly {\n color: rgba(0, 0, 0, 0.38);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.38));\n pointer-events: none;\n}\n.ag-theme-material .ag-ltr .ag-column-select-add-group-indent {\n margin-left: 34px;\n}\n\n.ag-theme-material .ag-rtl .ag-column-select-add-group-indent {\n margin-right: 34px;\n}\n\n.ag-theme-material .ag-column-select-virtual-list-viewport {\n padding: 8px 0px;\n}\n.ag-theme-material .ag-column-select-virtual-list-item {\n padding: 0 12px;\n}\n.ag-theme-material .ag-rtl {\n text-align: right;\n}\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-1 {\n padding-left: 66px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-1 {\n padding-right: 66px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-1 {\n padding-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-1 {\n padding-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-1 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-1 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-2 {\n padding-left: 108px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-2 {\n padding-right: 108px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-2 {\n padding-left: 84px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-2 {\n padding-right: 84px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-2 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-2 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-3 {\n padding-left: 150px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-3 {\n padding-right: 150px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-3 {\n padding-left: 126px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-3 {\n padding-right: 126px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-3 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-3 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-4 {\n padding-left: 192px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-4 {\n padding-right: 192px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-4 {\n padding-left: 168px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-4 {\n padding-right: 168px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-4 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-4 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-5 {\n padding-left: 234px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-5 {\n padding-right: 234px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-5 {\n padding-left: 210px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-5 {\n padding-right: 210px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-5 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-5 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-6 {\n padding-left: 276px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-6 {\n padding-right: 276px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-6 {\n padding-left: 252px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-6 {\n padding-right: 252px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-6 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-6 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-7 {\n padding-left: 318px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-7 {\n padding-right: 318px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-7 {\n padding-left: 294px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-7 {\n padding-right: 294px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-7 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-7 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-8 {\n padding-left: 360px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-8 {\n padding-right: 360px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-8 {\n padding-left: 336px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-8 {\n padding-right: 336px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-8 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-8 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-9 {\n padding-left: 402px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-9 {\n padding-right: 402px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-9 {\n padding-left: 378px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-9 {\n padding-right: 378px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-9 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-9 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-10 {\n padding-left: 444px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-10 {\n padding-right: 444px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-10 {\n padding-left: 420px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-10 {\n padding-right: 420px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-10 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-10 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-11 {\n padding-left: 486px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-11 {\n padding-right: 486px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-11 {\n padding-left: 462px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-11 {\n padding-right: 462px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-11 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-11 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-12 {\n padding-left: 528px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-12 {\n padding-right: 528px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-12 {\n padding-left: 504px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-12 {\n padding-right: 504px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-12 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-12 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-13 {\n padding-left: 570px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-13 {\n padding-right: 570px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-13 {\n padding-left: 546px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-13 {\n padding-right: 546px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-13 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-13 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-14 {\n padding-left: 612px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-14 {\n padding-right: 612px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-14 {\n padding-left: 588px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-14 {\n padding-right: 588px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-14 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-14 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-15 {\n padding-left: 654px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-15 {\n padding-right: 654px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-15 {\n padding-left: 630px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-15 {\n padding-right: 630px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-15 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-15 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-16 {\n padding-left: 696px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-16 {\n padding-right: 696px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-16 {\n padding-left: 672px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-16 {\n padding-right: 672px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-16 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-16 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-17 {\n padding-left: 738px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-17 {\n padding-right: 738px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-17 {\n padding-left: 714px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-17 {\n padding-right: 714px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-17 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-17 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-18 {\n padding-left: 780px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-18 {\n padding-right: 780px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-18 {\n padding-left: 756px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-18 {\n padding-right: 756px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-18 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-18 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-19 {\n padding-left: 822px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-19 {\n padding-right: 822px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-19 {\n padding-left: 798px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-19 {\n padding-right: 798px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-19 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-19 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-20 {\n padding-left: 864px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-20 {\n padding-right: 864px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-20 {\n padding-left: 840px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-20 {\n padding-right: 840px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-20 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-20 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-21 {\n padding-left: 906px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-21 {\n padding-right: 906px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-21 {\n padding-left: 882px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-21 {\n padding-right: 882px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-21 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-21 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-22 {\n padding-left: 948px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-22 {\n padding-right: 948px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-22 {\n padding-left: 924px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-22 {\n padding-right: 924px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-22 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-22 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-23 {\n padding-left: 990px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-23 {\n padding-right: 990px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-23 {\n padding-left: 966px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-23 {\n padding-right: 966px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-23 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-23 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-24 {\n padding-left: 1032px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-24 {\n padding-right: 1032px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-24 {\n padding-left: 1008px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-24 {\n padding-right: 1008px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-24 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-24 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-25 {\n padding-left: 1074px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-25 {\n padding-right: 1074px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-25 {\n padding-left: 1050px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-25 {\n padding-right: 1050px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-25 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-25 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-26 {\n padding-left: 1116px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-26 {\n padding-right: 1116px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-26 {\n padding-left: 1092px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-26 {\n padding-right: 1092px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-26 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-26 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-27 {\n padding-left: 1158px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-27 {\n padding-right: 1158px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-27 {\n padding-left: 1134px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-27 {\n padding-right: 1134px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-27 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-27 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-28 {\n padding-left: 1200px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-28 {\n padding-right: 1200px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-28 {\n padding-left: 1176px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-28 {\n padding-right: 1176px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-28 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-28 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-29 {\n padding-left: 1242px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-29 {\n padding-right: 1242px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-29 {\n padding-left: 1218px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-29 {\n padding-right: 1218px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-29 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-29 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-30 {\n padding-left: 1284px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-30 {\n padding-right: 1284px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-30 {\n padding-left: 1260px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-30 {\n padding-right: 1260px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-30 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-30 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-31 {\n padding-left: 1326px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-31 {\n padding-right: 1326px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-31 {\n padding-left: 1302px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-31 {\n padding-right: 1302px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-31 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-31 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-32 {\n padding-left: 1368px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-32 {\n padding-right: 1368px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-32 {\n padding-left: 1344px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-32 {\n padding-right: 1344px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-32 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-32 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-33 {\n padding-left: 1410px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-33 {\n padding-right: 1410px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-33 {\n padding-left: 1386px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-33 {\n padding-right: 1386px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-33 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-33 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-34 {\n padding-left: 1452px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-34 {\n padding-right: 1452px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-34 {\n padding-left: 1428px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-34 {\n padding-right: 1428px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-34 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-34 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-35 {\n padding-left: 1494px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-35 {\n padding-right: 1494px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-35 {\n padding-left: 1470px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-35 {\n padding-right: 1470px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-35 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-35 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-36 {\n padding-left: 1536px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-36 {\n padding-right: 1536px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-36 {\n padding-left: 1512px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-36 {\n padding-right: 1512px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-36 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-36 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-37 {\n padding-left: 1578px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-37 {\n padding-right: 1578px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-37 {\n padding-left: 1554px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-37 {\n padding-right: 1554px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-37 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-37 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-38 {\n padding-left: 1620px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-38 {\n padding-right: 1620px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-38 {\n padding-left: 1596px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-38 {\n padding-right: 1596px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-38 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-38 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-39 {\n padding-left: 1662px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-39 {\n padding-right: 1662px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-39 {\n padding-left: 1638px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-39 {\n padding-right: 1638px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-39 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-39 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-40 {\n padding-left: 1704px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-40 {\n padding-right: 1704px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-40 {\n padding-left: 1680px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-40 {\n padding-right: 1680px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-40 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-40 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-41 {\n padding-left: 1746px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-41 {\n padding-right: 1746px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-41 {\n padding-left: 1722px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-41 {\n padding-right: 1722px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-41 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-41 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-42 {\n padding-left: 1788px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-42 {\n padding-right: 1788px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-42 {\n padding-left: 1764px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-42 {\n padding-right: 1764px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-42 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-42 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-43 {\n padding-left: 1830px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-43 {\n padding-right: 1830px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-43 {\n padding-left: 1806px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-43 {\n padding-right: 1806px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-43 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-43 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-44 {\n padding-left: 1872px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-44 {\n padding-right: 1872px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-44 {\n padding-left: 1848px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-44 {\n padding-right: 1848px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-44 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-44 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-45 {\n padding-left: 1914px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-45 {\n padding-right: 1914px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-45 {\n padding-left: 1890px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-45 {\n padding-right: 1890px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-45 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-45 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-46 {\n padding-left: 1956px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-46 {\n padding-right: 1956px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-46 {\n padding-left: 1932px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-46 {\n padding-right: 1932px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-46 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-46 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-47 {\n padding-left: 1998px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-47 {\n padding-right: 1998px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-47 {\n padding-left: 1974px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-47 {\n padding-right: 1974px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-47 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-47 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-48 {\n padding-left: 2040px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-48 {\n padding-right: 2040px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-48 {\n padding-left: 2016px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-48 {\n padding-right: 2016px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-48 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-48 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-49 {\n padding-left: 2082px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-49 {\n padding-right: 2082px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-49 {\n padding-left: 2058px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-49 {\n padding-right: 2058px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-49 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-49 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-50 {\n padding-left: 2124px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-50 {\n padding-right: 2124px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-50 {\n padding-left: 2100px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-50 {\n padding-right: 2100px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-50 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-50 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-51 {\n padding-left: 2166px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-51 {\n padding-right: 2166px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-51 {\n padding-left: 2142px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-51 {\n padding-right: 2142px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-51 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-51 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-52 {\n padding-left: 2208px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-52 {\n padding-right: 2208px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-52 {\n padding-left: 2184px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-52 {\n padding-right: 2184px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-52 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-52 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-53 {\n padding-left: 2250px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-53 {\n padding-right: 2250px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-53 {\n padding-left: 2226px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-53 {\n padding-right: 2226px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-53 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-53 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-54 {\n padding-left: 2292px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-54 {\n padding-right: 2292px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-54 {\n padding-left: 2268px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-54 {\n padding-right: 2268px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-54 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-54 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-55 {\n padding-left: 2334px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-55 {\n padding-right: 2334px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-55 {\n padding-left: 2310px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-55 {\n padding-right: 2310px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-55 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-55 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-56 {\n padding-left: 2376px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-56 {\n padding-right: 2376px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-56 {\n padding-left: 2352px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-56 {\n padding-right: 2352px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-56 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-56 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-57 {\n padding-left: 2418px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-57 {\n padding-right: 2418px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-57 {\n padding-left: 2394px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-57 {\n padding-right: 2394px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-57 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-57 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-58 {\n padding-left: 2460px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-58 {\n padding-right: 2460px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-58 {\n padding-left: 2436px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-58 {\n padding-right: 2436px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-58 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-58 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-59 {\n padding-left: 2502px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-59 {\n padding-right: 2502px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-59 {\n padding-left: 2478px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-59 {\n padding-right: 2478px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-59 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-59 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-60 {\n padding-left: 2544px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-60 {\n padding-right: 2544px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-60 {\n padding-left: 2520px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-60 {\n padding-right: 2520px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-60 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-60 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-61 {\n padding-left: 2586px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-61 {\n padding-right: 2586px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-61 {\n padding-left: 2562px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-61 {\n padding-right: 2562px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-61 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-61 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-62 {\n padding-left: 2628px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-62 {\n padding-right: 2628px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-62 {\n padding-left: 2604px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-62 {\n padding-right: 2604px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-62 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-62 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-63 {\n padding-left: 2670px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-63 {\n padding-right: 2670px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-63 {\n padding-left: 2646px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-63 {\n padding-right: 2646px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-63 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-63 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-64 {\n padding-left: 2712px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-64 {\n padding-right: 2712px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-64 {\n padding-left: 2688px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-64 {\n padding-right: 2688px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-64 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-64 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-65 {\n padding-left: 2754px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-65 {\n padding-right: 2754px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-65 {\n padding-left: 2730px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-65 {\n padding-right: 2730px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-65 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-65 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-66 {\n padding-left: 2796px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-66 {\n padding-right: 2796px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-66 {\n padding-left: 2772px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-66 {\n padding-right: 2772px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-66 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-66 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-67 {\n padding-left: 2838px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-67 {\n padding-right: 2838px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-67 {\n padding-left: 2814px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-67 {\n padding-right: 2814px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-67 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-67 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-68 {\n padding-left: 2880px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-68 {\n padding-right: 2880px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-68 {\n padding-left: 2856px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-68 {\n padding-right: 2856px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-68 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-68 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-69 {\n padding-left: 2922px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-69 {\n padding-right: 2922px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-69 {\n padding-left: 2898px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-69 {\n padding-right: 2898px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-69 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-69 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-70 {\n padding-left: 2964px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-70 {\n padding-right: 2964px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-70 {\n padding-left: 2940px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-70 {\n padding-right: 2940px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-70 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-70 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-71 {\n padding-left: 3006px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-71 {\n padding-right: 3006px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-71 {\n padding-left: 2982px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-71 {\n padding-right: 2982px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-71 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-71 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-72 {\n padding-left: 3048px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-72 {\n padding-right: 3048px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-72 {\n padding-left: 3024px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-72 {\n padding-right: 3024px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-72 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-72 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-73 {\n padding-left: 3090px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-73 {\n padding-right: 3090px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-73 {\n padding-left: 3066px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-73 {\n padding-right: 3066px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-73 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-73 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-74 {\n padding-left: 3132px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-74 {\n padding-right: 3132px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-74 {\n padding-left: 3108px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-74 {\n padding-right: 3108px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-74 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-74 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-75 {\n padding-left: 3174px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-75 {\n padding-right: 3174px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-75 {\n padding-left: 3150px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-75 {\n padding-right: 3150px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-75 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-75 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-76 {\n padding-left: 3216px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-76 {\n padding-right: 3216px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-76 {\n padding-left: 3192px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-76 {\n padding-right: 3192px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-76 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-76 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-77 {\n padding-left: 3258px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-77 {\n padding-right: 3258px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-77 {\n padding-left: 3234px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-77 {\n padding-right: 3234px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-77 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-77 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-78 {\n padding-left: 3300px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-78 {\n padding-right: 3300px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-78 {\n padding-left: 3276px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-78 {\n padding-right: 3276px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-78 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-78 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-79 {\n padding-left: 3342px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-79 {\n padding-right: 3342px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-79 {\n padding-left: 3318px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-79 {\n padding-right: 3318px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-79 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-79 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-80 {\n padding-left: 3384px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-80 {\n padding-right: 3384px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-80 {\n padding-left: 3360px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-80 {\n padding-right: 3360px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-80 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-80 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-81 {\n padding-left: 3426px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-81 {\n padding-right: 3426px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-81 {\n padding-left: 3402px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-81 {\n padding-right: 3402px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-81 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-81 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-82 {\n padding-left: 3468px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-82 {\n padding-right: 3468px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-82 {\n padding-left: 3444px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-82 {\n padding-right: 3444px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-82 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-82 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-83 {\n padding-left: 3510px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-83 {\n padding-right: 3510px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-83 {\n padding-left: 3486px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-83 {\n padding-right: 3486px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-83 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-83 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-84 {\n padding-left: 3552px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-84 {\n padding-right: 3552px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-84 {\n padding-left: 3528px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-84 {\n padding-right: 3528px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-84 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-84 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-85 {\n padding-left: 3594px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-85 {\n padding-right: 3594px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-85 {\n padding-left: 3570px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-85 {\n padding-right: 3570px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-85 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-85 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-86 {\n padding-left: 3636px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-86 {\n padding-right: 3636px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-86 {\n padding-left: 3612px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-86 {\n padding-right: 3612px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-86 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-86 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-87 {\n padding-left: 3678px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-87 {\n padding-right: 3678px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-87 {\n padding-left: 3654px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-87 {\n padding-right: 3654px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-87 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-87 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-88 {\n padding-left: 3720px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-88 {\n padding-right: 3720px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-88 {\n padding-left: 3696px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-88 {\n padding-right: 3696px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-88 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-88 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-89 {\n padding-left: 3762px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-89 {\n padding-right: 3762px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-89 {\n padding-left: 3738px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-89 {\n padding-right: 3738px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-89 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-89 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-90 {\n padding-left: 3804px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-90 {\n padding-right: 3804px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-90 {\n padding-left: 3780px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-90 {\n padding-right: 3780px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-90 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-90 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-91 {\n padding-left: 3846px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-91 {\n padding-right: 3846px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-91 {\n padding-left: 3822px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-91 {\n padding-right: 3822px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-91 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-91 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-92 {\n padding-left: 3888px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-92 {\n padding-right: 3888px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-92 {\n padding-left: 3864px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-92 {\n padding-right: 3864px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-92 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-92 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-93 {\n padding-left: 3930px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-93 {\n padding-right: 3930px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-93 {\n padding-left: 3906px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-93 {\n padding-right: 3906px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-93 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-93 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-94 {\n padding-left: 3972px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-94 {\n padding-right: 3972px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-94 {\n padding-left: 3948px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-94 {\n padding-right: 3948px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-94 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-94 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-95 {\n padding-left: 4014px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-95 {\n padding-right: 4014px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-95 {\n padding-left: 3990px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-95 {\n padding-right: 3990px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-95 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-95 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-96 {\n padding-left: 4056px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-96 {\n padding-right: 4056px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-96 {\n padding-left: 4032px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-96 {\n padding-right: 4032px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-96 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-96 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-97 {\n padding-left: 4098px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-97 {\n padding-right: 4098px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-97 {\n padding-left: 4074px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-97 {\n padding-right: 4074px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-97 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-97 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-98 {\n padding-left: 4140px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-98 {\n padding-right: 4140px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-98 {\n padding-left: 4116px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-98 {\n padding-right: 4116px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-98 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-98 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row > .ag-cell-wrapper.ag-row-group-indent-99 {\n padding-left: 4182px;\n}\n\n.ag-theme-material .ag-rtl .ag-row > .ag-cell-wrapper.ag-row-group-indent-99 {\n padding-right: 4182px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-indent-99 {\n padding-left: 4158px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-indent-99 {\n padding-right: 4158px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-level-99 .ag-pivot-leaf-group {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-level-99 .ag-pivot-leaf-group {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-ltr .ag-row-group-leaf-indent {\n margin-left: 42px;\n}\n\n.ag-theme-material .ag-rtl .ag-row-group-leaf-indent {\n margin-right: 42px;\n}\n\n.ag-theme-material .ag-value-change-delta {\n padding-right: 2px;\n}\n.ag-theme-material .ag-value-change-delta-up {\n color: #43a047;\n color: var(--ag-value-change-delta-up-color, #43a047);\n}\n.ag-theme-material .ag-value-change-delta-down {\n color: #e53935;\n color: var(--ag-value-change-delta-down-color, #e53935);\n}\n.ag-theme-material .ag-value-change-value {\n background-color: transparent;\n border-radius: 1px;\n padding-left: 1px;\n padding-right: 1px;\n -webkit-transition: background-color 1s;\n transition: background-color 1s;\n}\n.ag-theme-material .ag-value-change-value-highlight {\n background-color: #00acc1;\n background-color: var(--ag-value-change-value-highlight-background-color, #00acc1);\n -webkit-transition: background-color 0.1s;\n transition: background-color 0.1s;\n}\n.ag-theme-material .ag-cell-data-changed {\n background-color: #00acc1 !important;\n background-color: var(--ag-value-change-value-highlight-background-color, #00acc1) !important;\n}\n.ag-theme-material .ag-cell-data-changed-animation {\n background-color: transparent;\n}\n.ag-theme-material .ag-cell-highlight {\n background-color: #fce4ec !important;\n background-color: var(--ag-range-selection-highlight-color, #fce4ec) !important;\n}\n.ag-theme-material .ag-row {\n height: 48px;\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n color: rgba(0, 0, 0, 0.87);\n color: var(--ag-data-color, var(--ag-foreground-color, rgba(0, 0, 0, 0.87)));\n border-width: 1px;\n border-color: #e2e2e2;\n border-color: var(--ag-row-border-color, var(--ag-secondary-border-color, var(--ag-border-color, #e2e2e2)));\n border-bottom-style: solid;\n}\n.ag-theme-material .ag-row-highlight-above::after, .ag-theme-material .ag-row-highlight-below::after {\n content: \"\";\n position: absolute;\n width: calc(100% - 1px);\n height: 1px;\n background-color: #3f51b5;\n background-color: var(--ag-range-selection-border-color, var(--ag-material-primary-color, #3f51b5));\n left: 1px;\n}\n.ag-theme-material .ag-row-highlight-above::after {\n top: -1px;\n}\n.ag-theme-material .ag-row-highlight-above.ag-row-first::after {\n top: 0;\n}\n.ag-theme-material .ag-row-highlight-below::after {\n bottom: 0px;\n}\n.ag-theme-material .ag-row-odd {\n background-color: var(--ag-odd-row-background-color);\n}\n.ag-theme-material .ag-body-horizontal-scroll:not(.ag-scrollbar-invisible) .ag-horizontal-left-spacer:not(.ag-scroller-corner) {\n border-right: solid 1px;\n border-right-color: #e2e2e2;\n border-right-color: var(--ag-border-color, #e2e2e2);\n}\n.ag-theme-material .ag-body-horizontal-scroll:not(.ag-scrollbar-invisible) .ag-horizontal-right-spacer:not(.ag-scroller-corner) {\n border-left: solid 1px;\n border-left-color: #e2e2e2;\n border-left-color: var(--ag-border-color, #e2e2e2);\n}\n.ag-theme-material .ag-row-hover {\n background-color: #fafafa;\n background-color: var(--ag-row-hover-color, #fafafa);\n}\n.ag-theme-material .ag-column-hover {\n background-color: #fafafa;\n background-color: var(--ag-column-hover-color, #fafafa);\n}\n.ag-theme-material .ag-ltr .ag-right-aligned-cell {\n text-align: right;\n}\n\n.ag-theme-material .ag-rtl .ag-right-aligned-cell {\n text-align: left;\n}\n\n.ag-theme-material .ag-ltr .ag-right-aligned-cell .ag-cell-value, .ag-theme-material .ag-ltr .ag-right-aligned-cell .ag-group-value {\n margin-left: auto;\n}\n\n.ag-theme-material .ag-rtl .ag-right-aligned-cell .ag-cell-value, .ag-theme-material .ag-rtl .ag-right-aligned-cell .ag-group-value {\n margin-right: auto;\n}\n\n.ag-theme-material .ag-cell, .ag-theme-material .ag-full-width-row .ag-cell-wrapper.ag-row-group {\n border: 1px solid transparent;\n line-height: min(var(--ag-line-height, 46px), 46px);\n padding-left: 23px;\n padding-right: 23px;\n -webkit-font-smoothing: subpixel-antialiased;\n}\n.ag-theme-material .ag-row > .ag-cell-wrapper {\n padding-left: 23px;\n padding-right: 23px;\n}\n.ag-theme-material .ag-row-dragging {\n cursor: move;\n opacity: 0.5;\n}\n.ag-theme-material .ag-cell-inline-editing {\n background: #fff;\n background: var(--ag-background-color, #fff);\n border-radius: 2px;\n -webkit-box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\n box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\n padding: 8px;\n padding: 0;\n height: 48px;\n background-color: #fafafa;\n background-color: var(--ag-control-panel-background-color, #fafafa);\n}\n.ag-theme-material .ag-popup-editor {\n background: #fff;\n background: var(--ag-background-color, #fff);\n border-radius: 2px;\n -webkit-box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\n box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\n padding: 8px;\n background-color: #fafafa;\n background-color: var(--ag-control-panel-background-color, #fafafa);\n padding: 0;\n}\n.ag-theme-material .ag-large-text-input {\n height: auto;\n padding: 24px;\n}\n.ag-theme-material .ag-details-row {\n padding: 40px;\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n}\n.ag-theme-material .ag-layout-auto-height .ag-center-cols-clipper, .ag-theme-material .ag-layout-auto-height .ag-center-cols-container, .ag-theme-material .ag-layout-print .ag-center-cols-clipper, .ag-theme-material .ag-layout-print .ag-center-cols-container {\n min-height: 50px;\n}\n.ag-theme-material .ag-overlay-loading-wrapper {\n background-color: rgba(255, 255, 255, 0.66);\n background-color: var(--ag-modal-overlay-background-color, rgba(255, 255, 255, 0.66));\n}\n.ag-theme-material .ag-overlay-loading-center {\n background: #fff;\n background: var(--ag-background-color, #fff);\n border-radius: 2px;\n -webkit-box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\n box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\n padding: 8px;\n}\n.ag-theme-material .ag-overlay-no-rows-wrapper.ag-layout-auto-height {\n padding-top: 30px;\n}\n.ag-theme-material .ag-loading {\n padding-left: 24px;\n display: -webkit-box;\n display: flex;\n height: 100%;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-material .ag-loading-icon {\n padding-right: 24px;\n}\n.ag-theme-material .ag-icon-loading {\n -webkit-animation-name: spin;\n animation-name: spin;\n -webkit-animation-duration: 1000ms;\n animation-duration: 1000ms;\n -webkit-animation-iteration-count: infinite;\n animation-iteration-count: infinite;\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n}\n@-webkit-keyframes spin {\n from {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@keyframes spin {\n from {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n to {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.ag-theme-material .ag-floating-top {\n border-bottom: solid 1px;\n border-bottom-color: #e2e2e2;\n border-bottom-color: var(--ag-border-color, #e2e2e2);\n}\n.ag-theme-material .ag-floating-bottom {\n border-top: solid 1px;\n border-top-color: #e2e2e2;\n border-top-color: var(--ag-border-color, #e2e2e2);\n}\n.ag-theme-material .ag-ltr .ag-cell {\n border-right: solid transparent;\n}\n\n.ag-theme-material .ag-rtl .ag-cell {\n border-left: solid transparent;\n}\n\n.ag-theme-material .ag-ltr .ag-cell {\n border-right-width: 1px;\n}\n\n.ag-theme-material .ag-rtl .ag-cell {\n border-left-width: 1px;\n}\n\n.ag-theme-material .ag-cell.ag-cell-first-right-pinned:not(.ag-cell-range-left):not(.ag-cell-range-single-cell) {\n border-left: solid 1px;\n border-left-color: #e2e2e2;\n border-left-color: var(--ag-border-color, #e2e2e2);\n}\n.ag-theme-material .ag-cell.ag-cell-last-left-pinned:not(.ag-cell-range-right):not(.ag-cell-range-single-cell) {\n border-right: solid 1px;\n border-right-color: #e2e2e2;\n border-right-color: var(--ag-border-color, #e2e2e2);\n}\n.ag-theme-material .ag-row-selected {\n background-color: #eee;\n background-color: var(--ag-selected-row-background-color, #eee);\n}\n.ag-theme-material .ag-cell-range-selected:not(.ag-cell-focus),\n.ag-theme-material .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing) {\n background-color: rgba(122, 134, 203, 0.1);\n background-color: var(--ag-range-selection-background-color, rgba(122, 134, 203, 0.1));\n}\n.ag-theme-material .ag-cell-range-selected:not(.ag-cell-focus).ag-cell-range-chart,\n.ag-theme-material .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing).ag-cell-range-chart {\n background-color: rgba(0, 88, 255, 0.1) !important;\n background-color: var(--ag-range-selection-chart-background-color, rgba(0, 88, 255, 0.1)) !important;\n}\n.ag-theme-material .ag-cell-range-selected:not(.ag-cell-focus).ag-cell-range-chart.ag-cell-range-chart-category,\n.ag-theme-material .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-single-cell:not(.ag-cell-inline-editing).ag-cell-range-chart.ag-cell-range-chart-category {\n background-color: rgba(0, 255, 132, 0.1) !important;\n background-color: var(--ag-range-selection-chart-category-background-color, rgba(0, 255, 132, 0.1)) !important;\n}\n.ag-theme-material .ag-cell-range-selected-1:not(.ag-cell-focus),\n.ag-theme-material .ag-root:not(.ag-context-menu-open) .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-1:not(.ag-cell-inline-editing) {\n background-color: rgba(122, 134, 203, 0.1);\n background-color: var(--ag-range-selection-background-color-1, var(--ag-range-selection-background-color, rgba(122, 134, 203, 0.1)));\n}\n.ag-theme-material .ag-cell-range-selected-2:not(.ag-cell-focus),\n.ag-theme-material .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-2 {\n background-color: rgba(122, 134, 203, 0.19);\n background-color: var(--ag-range-selection-background-color-2, rgba(122, 134, 203, 0.19));\n}\n.ag-theme-material .ag-cell-range-selected-3:not(.ag-cell-focus),\n.ag-theme-material .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-3 {\n background-color: rgba(122, 134, 203, 0.271);\n background-color: var(--ag-range-selection-background-color-3, rgba(122, 134, 203, 0.271));\n}\n.ag-theme-material .ag-cell-range-selected-4:not(.ag-cell-focus),\n.ag-theme-material .ag-body-viewport:not(.ag-has-focus) .ag-cell-range-selected-4 {\n background-color: rgba(122, 134, 203, 0.3439);\n background-color: var(--ag-range-selection-background-color-4, rgba(122, 134, 203, 0.3439));\n}\n.ag-theme-material .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-top {\n border-top-color: #3f51b5;\n border-top-color: var(--ag-range-selection-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-right {\n border-right-color: #3f51b5;\n border-right-color: var(--ag-range-selection-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-bottom {\n border-bottom-color: #3f51b5;\n border-bottom-color: var(--ag-range-selection-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material .ag-cell.ag-cell-range-selected:not(.ag-cell-range-single-cell).ag-cell-range-left {\n border-left-color: #3f51b5;\n border-left-color: var(--ag-range-selection-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material .ag-ltr .ag-has-focus .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-material .ag-ltr .ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-material .ag-ltr .ag-has-focus .ag-full-width-row.ag-row-focus .ag-cell-wrapper.ag-row-group,\n.ag-theme-material .ag-ltr .ag-cell-range-single-cell,\n.ag-theme-material .ag-ltr .ag-cell-range-single-cell.ag-cell-range-handle, .ag-theme-material .ag-rtl .ag-has-focus .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-material .ag-rtl .ag-context-menu-open .ag-cell-focus:not(.ag-cell-range-selected),\n.ag-theme-material .ag-rtl .ag-has-focus .ag-full-width-row.ag-row-focus .ag-cell-wrapper.ag-row-group,\n.ag-theme-material .ag-rtl .ag-cell-range-single-cell,\n.ag-theme-material .ag-rtl .ag-cell-range-single-cell.ag-cell-range-handle {\n border: 1px solid;\n border-color: #3f51b5;\n border-color: var(--ag-range-selection-border-color, var(--ag-material-primary-color, #3f51b5));\n outline: initial;\n}\n.ag-theme-material .ag-cell.ag-selection-fill-top,\n.ag-theme-material .ag-cell.ag-selection-fill-top.ag-cell-range-selected {\n border-top: 1px dashed;\n border-top-color: #3f51b5;\n border-top-color: var(--ag-range-selection-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material .ag-ltr .ag-cell.ag-selection-fill-right, .ag-theme-material .ag-ltr .ag-cell.ag-selection-fill-right.ag-cell-range-selected {\n border-right: 1px dashed;\n border-right-color: #3f51b5;\n border-right-color: var(--ag-range-selection-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n\n.ag-theme-material .ag-rtl .ag-cell.ag-selection-fill-right, .ag-theme-material .ag-rtl .ag-cell.ag-selection-fill-right.ag-cell-range-selected {\n border-left: 1px dashed;\n border-left-color: #3f51b5;\n border-left-color: var(--ag-range-selection-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n\n.ag-theme-material .ag-cell.ag-selection-fill-bottom,\n.ag-theme-material .ag-cell.ag-selection-fill-bottom.ag-cell-range-selected {\n border-bottom: 1px dashed;\n border-bottom-color: #3f51b5;\n border-bottom-color: var(--ag-range-selection-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material .ag-ltr .ag-cell.ag-selection-fill-left, .ag-theme-material .ag-ltr .ag-cell.ag-selection-fill-left.ag-cell-range-selected {\n border-left: 1px dashed;\n border-left-color: #3f51b5;\n border-left-color: var(--ag-range-selection-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n\n.ag-theme-material .ag-rtl .ag-cell.ag-selection-fill-left, .ag-theme-material .ag-rtl .ag-cell.ag-selection-fill-left.ag-cell-range-selected {\n border-right: 1px dashed;\n border-right-color: #3f51b5;\n border-right-color: var(--ag-range-selection-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n\n.ag-theme-material .ag-range-handle, .ag-theme-material .ag-fill-handle {\n position: absolute;\n width: 6px;\n height: 6px;\n bottom: -1px;\n background-color: #3f51b5;\n background-color: var(--ag-range-selection-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material .ag-ltr .ag-range-handle, .ag-theme-material .ag-ltr .ag-fill-handle {\n right: -1px;\n}\n\n.ag-theme-material .ag-rtl .ag-range-handle, .ag-theme-material .ag-rtl .ag-fill-handle {\n left: -1px;\n}\n\n.ag-theme-material .ag-fill-handle {\n cursor: cell;\n}\n.ag-theme-material .ag-range-handle {\n cursor: nwse-resize;\n}\n.ag-theme-material .ag-cell-inline-editing {\n border-color: #3f51b5 !important;\n border-color: var(--ag-input-focus-border-color, var(--ag-material-primary-color, #3f51b5)) !important;\n}\n.ag-theme-material .ag-menu {\n background: #fff;\n background: var(--ag-background-color, #fff);\n border-radius: 2px;\n -webkit-box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\n box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\n padding: 8px;\n padding: 0;\n}\n.ag-theme-material .ag-menu-list {\n cursor: default;\n padding: 8px 0;\n}\n.ag-theme-material .ag-menu-separator {\n height: 17px;\n}\n.ag-theme-material .ag-menu-separator-part::after {\n content: \"\";\n display: block;\n border-top: solid 1px;\n border-top-color: #e2e2e2;\n border-top-color: var(--ag-border-color, #e2e2e2);\n}\n.ag-theme-material .ag-menu-option-active, .ag-theme-material .ag-compact-menu-option-active {\n background-color: #fafafa;\n background-color: var(--ag-row-hover-color, #fafafa);\n}\n.ag-theme-material .ag-menu-option-part, .ag-theme-material .ag-compact-menu-option-part {\n line-height: 18px;\n padding: 10px 0;\n}\n.ag-theme-material .ag-menu-option-disabled, .ag-theme-material .ag-compact-menu-option-disabled {\n opacity: 0.5;\n}\n.ag-theme-material .ag-menu-option-icon, .ag-theme-material .ag-compact-menu-option-icon {\n width: 18px;\n}\n.ag-theme-material .ag-ltr .ag-menu-option-icon, .ag-theme-material .ag-ltr .ag-compact-menu-option-icon {\n padding-left: 16px;\n}\n\n.ag-theme-material .ag-rtl .ag-menu-option-icon, .ag-theme-material .ag-rtl .ag-compact-menu-option-icon {\n padding-right: 16px;\n}\n\n.ag-theme-material .ag-menu-option-text, .ag-theme-material .ag-compact-menu-option-text {\n padding-left: 16px;\n padding-right: 16px;\n}\n.ag-theme-material .ag-ltr .ag-menu-option-shortcut, .ag-theme-material .ag-ltr .ag-compact-menu-option-shortcut {\n padding-right: 8px;\n}\n\n.ag-theme-material .ag-rtl .ag-menu-option-shortcut, .ag-theme-material .ag-rtl .ag-compact-menu-option-shortcut {\n padding-left: 8px;\n}\n\n.ag-theme-material .ag-menu-option-popup-pointer, .ag-theme-material .ag-compact-menu-option-popup-pointer {\n padding-right: 8px;\n}\n.ag-theme-material .ag-tabs {\n min-width: 220px;\n}\n.ag-theme-material .ag-tabs-header {\n width: 100%;\n display: -webkit-box;\n display: flex;\n}\n.ag-theme-material .ag-tab {\n border-bottom: 2px solid transparent;\n display: -webkit-box;\n display: flex;\n -webkit-box-flex: 0;\n flex: none;\n -webkit-box-align: center;\n align-items: center;\n -webkit-box-pack: center;\n justify-content: center;\n cursor: pointer;\n -webkit-box-flex: 1;\n flex: 1 1 auto;\n}\n.ag-theme-material .ag-keyboard-focus .ag-tab:focus {\n outline: none;\n}\n.ag-theme-material .ag-keyboard-focus .ag-tab:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: #3f51b5;\n border-color: var(--ag-input-focus-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material .ag-tab-selected {\n border-bottom-color: #3f51b5;\n border-bottom-color: var(--ag-selected-tab-underline-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material .ag-menu-header {\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n}\n.ag-theme-material .ag-filter-separator {\n border-top: solid 1px;\n border-top-color: #e2e2e2;\n border-top-color: var(--ag-border-color, #e2e2e2);\n}\n.ag-theme-material .ag-menu:not(.ag-tabs) .ag-filter-select {\n min-width: 155px;\n}\n.ag-theme-material .ag-tabs .ag-filter-select {\n min-width: 194px;\n}\n.ag-theme-material .ag-filter-select .ag-picker-field-wrapper {\n width: 0;\n}\n.ag-theme-material .ag-filter-condition-operator {\n height: 17px;\n}\n.ag-theme-material .ag-ltr .ag-filter-condition-operator-or {\n margin-left: 16px;\n}\n\n.ag-theme-material .ag-rtl .ag-filter-condition-operator-or {\n margin-right: 16px;\n}\n\n.ag-theme-material .ag-set-filter-select-all {\n padding-top: 16px;\n}\n.ag-theme-material .ag-set-filter-list, .ag-theme-material .ag-filter-no-matches {\n height: 192px;\n}\n.ag-theme-material .ag-set-filter-filter {\n margin-top: 16px;\n margin-left: 12px;\n margin-right: 12px;\n}\n.ag-theme-material .ag-filter-to {\n margin-top: 14px;\n}\n.ag-theme-material .ag-mini-filter {\n margin: 16px 12px;\n}\n.ag-theme-material .ag-set-filter-item {\n margin: 0px 12px;\n}\n.ag-theme-material .ag-ltr .ag-set-filter-item-value {\n margin-left: 12px;\n}\n\n.ag-theme-material .ag-rtl .ag-set-filter-item-value {\n margin-right: 12px;\n}\n\n.ag-theme-material .ag-filter-apply-panel {\n padding: 16px 12px;\n}\n.ag-theme-material .ag-filter-apply-panel-button {\n line-height: 1.5;\n}\n.ag-theme-material .ag-ltr .ag-filter-apply-panel-button {\n margin-left: 16px;\n}\n\n.ag-theme-material .ag-rtl .ag-filter-apply-panel-button {\n margin-right: 16px;\n}\n\n.ag-theme-material .ag-simple-filter-body-wrapper {\n padding: 16px 12px;\n padding-bottom: 2px;\n}\n.ag-theme-material .ag-simple-filter-body-wrapper > * {\n margin-bottom: 14px;\n}\n.ag-theme-material .ag-filter-no-matches {\n padding: 16px 12px;\n}\n.ag-theme-material .ag-multi-filter-menu-item {\n margin: 8px 0;\n}\n.ag-theme-material .ag-multi-filter-group-title-bar {\n padding: 16px 8px;\n background-color: transparent;\n}\n.ag-theme-material .ag-keyboard-focus .ag-multi-filter-group-title-bar:focus {\n outline: none;\n}\n.ag-theme-material .ag-keyboard-focus .ag-multi-filter-group-title-bar:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: #3f51b5;\n border-color: var(--ag-input-focus-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material .ag-side-bar {\n position: relative;\n}\n.ag-theme-material .ag-tool-panel-wrapper {\n width: 200px;\n background-color: #fafafa;\n background-color: var(--ag-control-panel-background-color, #fafafa);\n}\n.ag-theme-material .ag-side-buttons {\n padding-top: 32px;\n width: 22px;\n position: relative;\n color: rgba(0, 0, 0, 0.87);\n color: var(--ag-foreground-color, rgba(0, 0, 0, 0.87));\n overflow: hidden;\n}\n.ag-theme-material button.ag-side-button-button {\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n background: transparent;\n padding: 16px 0 16px 0;\n width: 100%;\n margin: 0;\n min-height: 144px;\n background-position-y: center;\n background-position-x: center;\n background-repeat: no-repeat;\n border: none;\n}\n.ag-theme-material button.ag-side-button-button:focus {\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.ag-theme-material .ag-keyboard-focus .ag-side-button-button:focus {\n outline: none;\n}\n.ag-theme-material .ag-keyboard-focus .ag-side-button-button:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: #3f51b5;\n border-color: var(--ag-input-focus-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material .ag-side-button-icon-wrapper {\n margin-bottom: 3px;\n}\n.ag-theme-material .ag-ltr .ag-side-bar-left .ag-side-button-button,\n.ag-theme-material .ag-rtl .ag-side-bar-right .ag-side-button-button {\n border-right: 2px solid transparent;\n}\n.ag-theme-material .ag-ltr .ag-side-bar-left .ag-selected .ag-side-button-button,\n.ag-theme-material .ag-rtl .ag-side-bar-right .ag-selected .ag-side-button-button {\n border-right-color: #3f51b5;\n border-right-color: var(--ag-selected-tab-underline-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material .ag-rtl .ag-side-bar-left .ag-side-button-button,\n.ag-theme-material .ag-ltr .ag-side-bar-right .ag-side-button-button {\n border-left: 2px solid transparent;\n}\n.ag-theme-material .ag-rtl .ag-side-bar-left .ag-selected .ag-side-button-button,\n.ag-theme-material .ag-ltr .ag-side-bar-right .ag-selected .ag-side-button-button {\n border-left-color: #3f51b5;\n border-left-color: var(--ag-selected-tab-underline-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material .ag-filter-toolpanel-header {\n height: 48px;\n}\n.ag-theme-material .ag-ltr .ag-filter-toolpanel-header, .ag-theme-material .ag-ltr .ag-filter-toolpanel-search {\n padding-left: 8px;\n}\n\n.ag-theme-material .ag-rtl .ag-filter-toolpanel-header, .ag-theme-material .ag-rtl .ag-filter-toolpanel-search {\n padding-right: 8px;\n}\n\n.ag-theme-material .ag-keyboard-focus .ag-filter-toolpanel-header:focus {\n outline: none;\n}\n.ag-theme-material .ag-keyboard-focus .ag-filter-toolpanel-header:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: #3f51b5;\n border-color: var(--ag-input-focus-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n font-family: \"agGridMaterial\";\n font-size: 18px;\n line-height: 18px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n content: \"\\f114\";\n position: absolute;\n}\n.ag-theme-material .ag-ltr .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n padding-left: 8px;\n}\n\n.ag-theme-material .ag-rtl .ag-filter-toolpanel-group.ag-has-filter > .ag-group-title-bar .ag-group-title::after {\n padding-right: 8px;\n}\n\n.ag-theme-material .ag-filter-toolpanel-group-level-0-header {\n height: 64px;\n}\n.ag-theme-material .ag-filter-toolpanel-group-item {\n margin-top: 4px;\n margin-bottom: 4px;\n}\n.ag-theme-material .ag-filter-toolpanel-search {\n height: 56px;\n}\n.ag-theme-material .ag-filter-toolpanel-search-input {\n -webkit-box-flex: 1;\n flex-grow: 1;\n height: 32px;\n}\n.ag-theme-material .ag-ltr .ag-filter-toolpanel-search-input {\n margin-right: 8px;\n}\n\n.ag-theme-material .ag-rtl .ag-filter-toolpanel-search-input {\n margin-left: 8px;\n}\n\n.ag-theme-material .ag-ltr .ag-filter-toolpanel-expand, .ag-theme-material .ag-ltr .ag-filter-toolpanel-group-title-bar-icon {\n margin-right: 8px;\n}\n\n.ag-theme-material .ag-rtl .ag-filter-toolpanel-expand, .ag-theme-material .ag-rtl .ag-filter-toolpanel-group-title-bar-icon {\n margin-left: 8px;\n}\n\n.ag-theme-material .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-1-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-material .ag-ltr .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-2-header {\n padding-left: 24px;\n}\n\n.ag-theme-material .ag-rtl .ag-filter-toolpanel-group-level-1 .ag-filter-toolpanel-group-level-2-header {\n padding-right: 24px;\n}\n\n.ag-theme-material .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-2-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-material .ag-ltr .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-3-header {\n padding-left: 40px;\n}\n\n.ag-theme-material .ag-rtl .ag-filter-toolpanel-group-level-2 .ag-filter-toolpanel-group-level-3-header {\n padding-right: 40px;\n}\n\n.ag-theme-material .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-3-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-material .ag-ltr .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-4-header {\n padding-left: 56px;\n}\n\n.ag-theme-material .ag-rtl .ag-filter-toolpanel-group-level-3 .ag-filter-toolpanel-group-level-4-header {\n padding-right: 56px;\n}\n\n.ag-theme-material .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-4-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-material .ag-ltr .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-5-header {\n padding-left: 72px;\n}\n\n.ag-theme-material .ag-rtl .ag-filter-toolpanel-group-level-4 .ag-filter-toolpanel-group-level-5-header {\n padding-right: 72px;\n}\n\n.ag-theme-material .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-5-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-material .ag-ltr .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-6-header {\n padding-left: 88px;\n}\n\n.ag-theme-material .ag-rtl .ag-filter-toolpanel-group-level-5 .ag-filter-toolpanel-group-level-6-header {\n padding-right: 88px;\n}\n\n.ag-theme-material .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-6-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-material .ag-ltr .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-7-header {\n padding-left: 104px;\n}\n\n.ag-theme-material .ag-rtl .ag-filter-toolpanel-group-level-6 .ag-filter-toolpanel-group-level-7-header {\n padding-right: 104px;\n}\n\n.ag-theme-material .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-7-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-material .ag-ltr .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-8-header {\n padding-left: 120px;\n}\n\n.ag-theme-material .ag-rtl .ag-filter-toolpanel-group-level-7 .ag-filter-toolpanel-group-level-8-header {\n padding-right: 120px;\n}\n\n.ag-theme-material .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-8-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-material .ag-ltr .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-9-header {\n padding-left: 136px;\n}\n\n.ag-theme-material .ag-rtl .ag-filter-toolpanel-group-level-8 .ag-filter-toolpanel-group-level-9-header {\n padding-right: 136px;\n}\n\n.ag-theme-material .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-9-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-material .ag-ltr .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-10-header {\n padding-left: 152px;\n}\n\n.ag-theme-material .ag-rtl .ag-filter-toolpanel-group-level-9 .ag-filter-toolpanel-group-level-10-header {\n padding-right: 152px;\n}\n\n.ag-theme-material .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-10-header.ag-filter-toolpanel-group-title-bar {\n background-color: transparent;\n}\n.ag-theme-material .ag-ltr .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-11-header {\n padding-left: 168px;\n}\n\n.ag-theme-material .ag-rtl .ag-filter-toolpanel-group-level-10 .ag-filter-toolpanel-group-level-11-header {\n padding-right: 168px;\n}\n\n.ag-theme-material .ag-filter-toolpanel-instance-header.ag-filter-toolpanel-group-level-1-header {\n padding-left: 8px;\n}\n.ag-theme-material .ag-filter-toolpanel-instance-filter {\n margin-top: 8px;\n}\n.ag-theme-material .ag-ltr .ag-filter-toolpanel-instance-header-icon {\n margin-left: 8px;\n}\n\n.ag-theme-material .ag-rtl .ag-filter-toolpanel-instance-header-icon {\n margin-right: 8px;\n}\n\n.ag-theme-material .ag-pivot-mode-panel {\n min-height: 56px;\n height: 56px;\n display: -webkit-box;\n display: flex;\n}\n.ag-theme-material .ag-pivot-mode-select {\n display: -webkit-box;\n display: flex;\n -webkit-box-align: center;\n align-items: center;\n}\n.ag-theme-material .ag-ltr .ag-pivot-mode-select {\n margin-left: 12px;\n}\n\n.ag-theme-material .ag-rtl .ag-pivot-mode-select {\n margin-right: 12px;\n}\n\n.ag-theme-material .ag-keyboard-focus .ag-column-select-header:focus {\n outline: none;\n}\n.ag-theme-material .ag-keyboard-focus .ag-column-select-header:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: #3f51b5;\n border-color: var(--ag-input-focus-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material .ag-column-select-header {\n height: 56px;\n -webkit-box-align: center;\n align-items: center;\n padding: 0 12px;\n}\n.ag-theme-material .ag-column-group-icons,\n.ag-theme-material .ag-column-select-header-icon {\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n}\n.ag-theme-material .ag-column-select-list .ag-list-item-hovered::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n height: 1px;\n background-color: #3f51b5;\n background-color: var(--ag-range-selection-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material .ag-column-select-list .ag-item-highlight-top::after {\n top: 0;\n}\n.ag-theme-material .ag-column-select-list .ag-item-highlight-bottom::after {\n bottom: 0;\n}\n.ag-theme-material .ag-header {\n background-color: #fff;\n background-color: var(--ag-header-background-color, #fff);\n border-bottom: solid 1px;\n border-bottom-color: #e2e2e2;\n border-bottom-color: var(--ag-border-color, #e2e2e2);\n}\n.ag-theme-material .ag-header-row {\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-header-foreground-color, var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54)));\n height: 56px;\n}\n.ag-theme-material .ag-pinned-right-header {\n border-left: solid 1px;\n border-left-color: #e2e2e2;\n border-left-color: var(--ag-border-color, #e2e2e2);\n}\n.ag-theme-material .ag-pinned-left-header {\n border-right: solid 1px;\n border-right-color: #e2e2e2;\n border-right-color: var(--ag-border-color, #e2e2e2);\n}\n.ag-theme-material .ag-ltr .ag-header-cell:not(.ag-right-aligned-header) .ag-header-label-icon {\n margin-left: 8px;\n}\n\n.ag-theme-material .ag-rtl .ag-header-cell:not(.ag-right-aligned-header) .ag-header-label-icon {\n margin-right: 8px;\n}\n\n.ag-theme-material .ag-ltr .ag-header-cell.ag-right-aligned-header .ag-header-label-icon {\n margin-right: 8px;\n}\n\n.ag-theme-material .ag-rtl .ag-header-cell.ag-right-aligned-header .ag-header-label-icon {\n margin-left: 8px;\n}\n\n.ag-theme-material .ag-header-cell,\n.ag-theme-material .ag-header-group-cell {\n padding-left: 24px;\n padding-right: 24px;\n}\n.ag-theme-material .ag-header-cell.ag-header-cell-moving,\n.ag-theme-material .ag-header-group-cell.ag-header-cell-moving {\n background-color: #f2f2f2;\n background-color: var(--ag-header-cell-moving-background-color, var(--ag-header-cell-hover-background-color, #f2f2f2));\n}\n.ag-theme-material .ag-keyboard-focus .ag-header-cell:focus {\n outline: none;\n}\n.ag-theme-material .ag-keyboard-focus .ag-header-cell:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: #3f51b5;\n border-color: var(--ag-input-focus-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material .ag-keyboard-focus .ag-header-group-cell:focus {\n outline: none;\n}\n.ag-theme-material .ag-keyboard-focus .ag-header-group-cell:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 4px;\n left: 4px;\n display: block;\n width: calc(100% - 8px);\n height: calc(100% - 8px);\n border: 1px solid;\n border-color: #3f51b5;\n border-color: var(--ag-input-focus-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material .ag-header-icon {\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n}\n.ag-theme-material .ag-header-expand-icon {\n cursor: pointer;\n}\n.ag-theme-material .ag-ltr .ag-header-expand-icon {\n padding-left: 4px;\n}\n\n.ag-theme-material .ag-rtl .ag-header-expand-icon {\n padding-right: 4px;\n}\n\n.ag-theme-material .ag-header-row:not(:first-child) .ag-header-cell,\n.ag-theme-material .ag-header-row:not(:first-child) .ag-header-group-cell.ag-header-group-cell-with-group {\n border-top: solid 1px;\n border-top-color: #e2e2e2;\n border-top-color: var(--ag-border-color, #e2e2e2);\n}\n.ag-theme-material .ag-header-group-cell:not(.ag-column-resizing) + .ag-header-group-cell:not(.ag-header-cell-moving):hover, .ag-theme-material .ag-header-group-cell:not(.ag-column-resizing) + .ag-header-group-cell.ag-column-resizing,\n.ag-theme-material .ag-header-cell:not(.ag-column-resizing) + .ag-header-cell:not(.ag-header-cell-moving):hover,\n.ag-theme-material .ag-header-cell:not(.ag-column-resizing) + .ag-header-cell.ag-column-resizing,\n.ag-theme-material .ag-header-group-cell:first-of-type:not(.ag-header-cell-moving):hover,\n.ag-theme-material .ag-header-group-cell:first-of-type.ag-column-resizing,\n.ag-theme-material .ag-header-cell:first-of-type:not(.ag-header-cell-moving):hover,\n.ag-theme-material .ag-header-cell:first-of-type.ag-column-resizing {\n background-color: #f2f2f2;\n background-color: var(--ag-header-cell-hover-background-color, #f2f2f2);\n}\n.ag-theme-material .ag-ltr .ag-header-select-all {\n margin-right: 24px;\n}\n\n.ag-theme-material .ag-rtl .ag-header-select-all {\n margin-left: 24px;\n}\n\n.ag-theme-material .ag-ltr .ag-floating-filter-button {\n margin-left: 24px;\n}\n\n.ag-theme-material .ag-rtl .ag-floating-filter-button {\n margin-right: 24px;\n}\n\n.ag-theme-material .ag-floating-filter-button-button {\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background: transparent;\n border: none;\n height: 18px;\n padding: 0;\n width: 18px;\n}\n.ag-theme-material .ag-filter-loading {\n background-color: #fafafa;\n background-color: var(--ag-control-panel-background-color, #fafafa);\n height: 100%;\n padding: 16px 12px;\n position: absolute;\n width: 100%;\n z-index: 1;\n}\n.ag-theme-material .ag-paging-panel {\n border-top: 1px solid;\n border-top-color: #e2e2e2;\n border-top-color: var(--ag-border-color, #e2e2e2);\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n height: 56px;\n}\n.ag-theme-material .ag-paging-panel > * {\n margin: 0 24px;\n}\n.ag-theme-material .ag-paging-button {\n cursor: pointer;\n}\n.ag-theme-material .ag-paging-button.ag-disabled {\n cursor: default;\n color: rgba(0, 0, 0, 0.38);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.38));\n}\n.ag-theme-material .ag-keyboard-focus .ag-paging-button:focus {\n outline: none;\n}\n.ag-theme-material .ag-keyboard-focus .ag-paging-button:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 0px;\n left: 0px;\n display: block;\n width: calc(100% - 0px);\n height: calc(100% - 0px);\n border: 1px solid;\n border-color: #3f51b5;\n border-color: var(--ag-input-focus-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material .ag-paging-button, .ag-theme-material .ag-paging-description {\n margin: 0 8px;\n}\n.ag-theme-material .ag-status-bar {\n color: rgba(0, 0, 0, 0.38);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.38));\n padding-right: 32px;\n padding-left: 32px;\n line-height: 1.5;\n}\n.ag-theme-material .ag-status-name-value-value {\n color: rgba(0, 0, 0, 0.87);\n color: var(--ag-foreground-color, rgba(0, 0, 0, 0.87));\n}\n.ag-theme-material .ag-status-bar-center {\n text-align: center;\n}\n.ag-theme-material .ag-status-name-value {\n margin-left: 8px;\n margin-right: 8px;\n padding-top: 16px;\n padding-bottom: 16px;\n}\n.ag-theme-material .ag-column-drop-cell {\n background: #e2e2e2;\n background: var(--ag-chip-background-color, #e2e2e2);\n border-radius: 32px;\n height: 32px;\n padding: 0 4px;\n border: 1px solid transparent;\n}\n.ag-theme-material .ag-keyboard-focus .ag-column-drop-cell:focus {\n outline: none;\n}\n.ag-theme-material .ag-keyboard-focus .ag-column-drop-cell:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 2px;\n left: 2px;\n display: block;\n width: calc(100% - 4px);\n height: calc(100% - 4px);\n border: 1px solid;\n border-color: #3f51b5;\n border-color: var(--ag-input-focus-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material .ag-column-drop-cell-text {\n margin: 0 8px;\n}\n.ag-theme-material .ag-column-drop-cell-button {\n min-width: 32px;\n margin: 0 4px;\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n}\n.ag-theme-material .ag-column-drop-cell-drag-handle {\n margin-left: 16px;\n}\n.ag-theme-material .ag-column-drop-cell-ghost {\n opacity: 0.5;\n}\n.ag-theme-material .ag-column-drop-horizontal {\n background-color: #fafafa;\n background-color: var(--ag-control-panel-background-color, #fafafa);\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n height: 48px;\n}\n.ag-theme-material .ag-ltr .ag-column-drop-horizontal {\n padding-left: 24px;\n}\n\n.ag-theme-material .ag-rtl .ag-column-drop-horizontal {\n padding-right: 24px;\n}\n\n.ag-theme-material .ag-column-drop-horizontal-cell-separator {\n margin: 0 8px;\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n}\n.ag-theme-material .ag-column-drop-horizontal-empty-message {\n color: rgba(0, 0, 0, 0.38);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.38));\n}\n.ag-theme-material .ag-ltr .ag-column-drop-horizontal-icon {\n margin-right: 24px;\n}\n\n.ag-theme-material .ag-rtl .ag-column-drop-horizontal-icon {\n margin-left: 24px;\n}\n\n.ag-theme-material .ag-column-drop-vertical-list {\n padding-bottom: 8px;\n padding-right: 8px;\n padding-left: 8px;\n}\n.ag-theme-material .ag-column-drop-vertical-cell {\n margin-top: 8px;\n}\n.ag-theme-material .ag-column-drop-vertical {\n min-height: 50px;\n}\n.ag-theme-material .ag-column-drop-vertical-icon {\n margin-left: 8px;\n margin-right: 8px;\n}\n.ag-theme-material .ag-column-drop-vertical-empty-message {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n overflow: hidden;\n color: rgba(0, 0, 0, 0.38);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.38));\n margin-top: 8px;\n}\n.ag-theme-material .ag-select-agg-func-popup {\n background: #fff;\n background: var(--ag-background-color, #fff);\n border-radius: 2px;\n -webkit-box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\n box-shadow: 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12);\n padding: 8px;\n background: #fff;\n background: var(--ag-background-color, #fff);\n height: 140px;\n padding: 0;\n}\n.ag-theme-material .ag-select-agg-func-virtual-list-item {\n cursor: default;\n padding-left: 16px;\n}\n.ag-theme-material .ag-select-agg-func-virtual-list-item:hover {\n background-color: #eee;\n background-color: var(--ag-selected-row-background-color, #eee);\n}\n.ag-theme-material .ag-keyboard-focus .ag-select-agg-func-virtual-list-item:focus {\n outline: none;\n}\n.ag-theme-material .ag-keyboard-focus .ag-select-agg-func-virtual-list-item:focus::after {\n content: \"\";\n position: absolute;\n background-color: transparent;\n pointer-events: none;\n top: 1px;\n left: 1px;\n display: block;\n width: calc(100% - 2px);\n height: calc(100% - 2px);\n border: 1px solid;\n border-color: #3f51b5;\n border-color: var(--ag-input-focus-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material .ag-chart-menu {\n border-radius: 2px;\n background: #fff;\n background: var(--ag-background-color, #fff);\n}\n.ag-theme-material .ag-chart-menu-icon {\n opacity: 0.5;\n line-height: 24px;\n font-size: 24px;\n width: 24px;\n height: 24px;\n margin: 2px 0;\n cursor: pointer;\n border-radius: 2px;\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n}\n.ag-theme-material .ag-chart-menu-icon:hover {\n opacity: 1;\n}\n.ag-theme-material .ag-chart-mini-thumbnail {\n border: 1px solid;\n border-color: #e2e2e2;\n border-color: var(--ag-secondary-border-color, var(--ag-border-color, #e2e2e2));\n border-radius: 5px;\n margin: 5px;\n}\n.ag-theme-material .ag-chart-mini-thumbnail:nth-last-child(3), .ag-theme-material .ag-chart-mini-thumbnail:nth-last-child(3) ~ .ag-chart-mini-thumbnail {\n margin-left: auto;\n margin-right: auto;\n}\n.ag-theme-material .ag-ltr .ag-chart-mini-thumbnail:first-child {\n margin-left: 0;\n}\n\n.ag-theme-material .ag-rtl .ag-chart-mini-thumbnail:first-child {\n margin-right: 0;\n}\n\n.ag-theme-material .ag-ltr .ag-chart-mini-thumbnail:last-child {\n margin-right: 0;\n}\n\n.ag-theme-material .ag-rtl .ag-chart-mini-thumbnail:last-child {\n margin-left: 0;\n}\n\n.ag-theme-material .ag-chart-mini-thumbnail.ag-selected {\n border-color: #ff4081;\n border-color: var(--ag-minichart-selected-chart-color, var(--ag-checkbox-checked-color, var(--ag-material-accent-color, #ff4081)));\n}\n.ag-theme-material .ag-chart-settings-card-item {\n background: rgba(0, 0, 0, 0.87);\n background: var(--ag-foreground-color, rgba(0, 0, 0, 0.87));\n width: 8px;\n height: 8px;\n border-radius: 4px;\n}\n.ag-theme-material .ag-chart-settings-card-item.ag-selected {\n background-color: #ff4081;\n background-color: var(--ag-minichart-selected-page-color, var(--ag-checkbox-checked-color, var(--ag-material-accent-color, #ff4081)));\n}\n.ag-theme-material .ag-chart-data-column-drag-handle {\n margin-left: 8px;\n}\n.ag-theme-material .ag-charts-settings-group-container {\n padding: 8px;\n}\n.ag-theme-material .ag-charts-data-group-container {\n padding: 8px 12px;\n}\n.ag-theme-material .ag-charts-data-group-container .ag-charts-data-group-item:not(.ag-charts-format-sub-level-group) {\n height: 32px;\n}\n.ag-theme-material .ag-charts-data-group-container .ag-list-item-hovered::after {\n content: \"\";\n position: absolute;\n left: 0;\n right: 0;\n height: 1px;\n background-color: #3f51b5;\n background-color: var(--ag-range-selection-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material .ag-charts-data-group-container .ag-item-highlight-top::after {\n top: 0;\n}\n.ag-theme-material .ag-charts-data-group-container .ag-item-highlight-bottom::after {\n bottom: 0;\n}\n.ag-theme-material .ag-charts-format-top-level-group-container {\n margin-left: 16px;\n padding: 8px;\n}\n.ag-theme-material .ag-charts-format-top-level-group-item {\n margin: 8px 0;\n}\n.ag-theme-material .ag-charts-format-sub-level-group-container {\n padding: 16px 12px;\n padding-bottom: 2px;\n}\n.ag-theme-material .ag-charts-format-sub-level-group-container > * {\n margin-bottom: 14px;\n}\n.ag-theme-material .ag-charts-group-container.ag-group-container-horizontal {\n padding: 8px;\n}\n.ag-theme-material .ag-chart-data-section,\n.ag-theme-material .ag-chart-format-section {\n display: -webkit-box;\n display: flex;\n margin: 0;\n}\n.ag-theme-material .ag-chart-menu-panel {\n background-color: #fafafa;\n background-color: var(--ag-control-panel-background-color, #fafafa);\n}\n.ag-theme-material .ag-ltr .ag-chart-menu-panel {\n border-left: solid 1px;\n border-left-color: #e2e2e2;\n border-left-color: var(--ag-border-color, #e2e2e2);\n}\n\n.ag-theme-material .ag-rtl .ag-chart-menu-panel {\n border-right: solid 1px;\n border-right-color: #e2e2e2;\n border-right-color: var(--ag-border-color, #e2e2e2);\n}\n\n.ag-theme-material .ag-date-time-list-page-title {\n -webkit-box-flex: 1;\n flex-grow: 1;\n text-align: center;\n}\n.ag-theme-material .ag-date-time-list-page-column-label {\n text-align: center;\n}\n.ag-theme-material .ag-date-time-list-page-entry {\n text-align: center;\n}\n.ag-theme-material .ag-checkbox-input-wrapper {\n font-family: \"agGridMaterial\";\n font-size: 18px;\n line-height: 18px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 18px;\n height: 18px;\n background-color: var(--ag-checkbox-background-color);\n border-radius: 2px;\n display: inline-block;\n vertical-align: middle;\n -webkit-box-flex: 0;\n flex: none;\n}\n.ag-theme-material .ag-checkbox-input-wrapper input, .ag-theme-material .ag-checkbox-input-wrapper input {\n -webkit-appearance: none;\n opacity: 0;\n width: 100%;\n height: 100%;\n}\n.ag-theme-material .ag-checkbox-input-wrapper:focus-within, .ag-theme-material .ag-checkbox-input-wrapper:active {\n outline: none;\n -webkit-box-shadow: 0 0 0 5px rgba(32, 33, 36, 0.122);\n box-shadow: 0 0 0 5px rgba(32, 33, 36, 0.122);\n}\n.ag-theme-material .ag-checkbox-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-material .ag-checkbox-input-wrapper::after {\n content: \"\\f108\";\n color: #333;\n color: var(--ag-checkbox-unchecked-color, #333);\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-material .ag-checkbox-input-wrapper.ag-checked::after {\n content: \"\\f106\";\n color: #ff4081;\n color: var(--ag-checkbox-checked-color, var(--ag-material-accent-color, #ff4081));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-material .ag-checkbox-input-wrapper.ag-indeterminate::after {\n content: \"\\f107\";\n color: #333;\n color: var(--ag-checkbox-indeterminate-color, var(--ag-checkbox-unchecked-color, #333));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-material .ag-toggle-button-input-wrapper {\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n width: 36px;\n height: 18px;\n background-color: #333;\n background-color: var(--ag-toggle-button-off-background-color, var(--ag-checkbox-unchecked-color, #333));\n border-radius: 9px;\n position: relative;\n -webkit-box-flex: 0;\n flex: none;\n border: 1px solid;\n border-color: #333;\n border-color: var(--ag-toggle-button-off-border-color, var(--ag-checkbox-unchecked-color, #333));\n}\n.ag-theme-material .ag-toggle-button-input-wrapper input {\n opacity: 0;\n height: 100%;\n width: 100%;\n}\n.ag-theme-material .ag-toggle-button-input-wrapper:focus-within {\n outline: none;\n -webkit-box-shadow: 0 0 0 5px rgba(32, 33, 36, 0.122);\n box-shadow: 0 0 0 5px rgba(32, 33, 36, 0.122);\n}\n.ag-theme-material .ag-toggle-button-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-material .ag-toggle-button-input-wrapper.ag-checked {\n background-color: #ff4081;\n background-color: var(--ag-toggle-button-on-background-color, var(--ag-checkbox-checked-color, var(--ag-material-accent-color, #ff4081)));\n border-color: #ff4081;\n border-color: var(--ag-toggle-button-on-border-color, var(--ag-checkbox-checked-color, var(--ag-material-accent-color, #ff4081)));\n}\n.ag-theme-material .ag-toggle-button-input-wrapper::before {\n content: \" \";\n position: absolute;\n top: -1px;\n left: -1px;\n display: block;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n height: 18px;\n width: 18px;\n background-color: #fff;\n background-color: var(--ag-toggle-button-switch-background-color, var(--ag-background-color, #fff));\n border-radius: 9px;\n -webkit-transition: left 100ms;\n transition: left 100ms;\n border: 1px solid;\n border-color: #333;\n border-color: var(--ag-toggle-button-switch-border-color, var(--ag-toggle-button-off-border-color, var(--ag-checkbox-unchecked-color, #333)));\n}\n.ag-theme-material .ag-toggle-button-input-wrapper.ag-checked::before {\n left: calc(100% - 18px );\n border-color: #ff4081;\n border-color: var(--ag-toggle-button-on-border-color, var(--ag-checkbox-checked-color, var(--ag-material-accent-color, #ff4081)));\n}\n.ag-theme-material .ag-radio-button-input-wrapper {\n font-family: \"agGridMaterial\";\n font-size: 18px;\n line-height: 18px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n width: 18px;\n height: 18px;\n background-color: var(--ag-checkbox-background-color);\n border-radius: 2px;\n display: inline-block;\n vertical-align: middle;\n -webkit-box-flex: 0;\n flex: none;\n border-radius: 18px;\n}\n.ag-theme-material .ag-radio-button-input-wrapper input, .ag-theme-material .ag-radio-button-input-wrapper input {\n -webkit-appearance: none;\n opacity: 0;\n width: 100%;\n height: 100%;\n}\n.ag-theme-material .ag-radio-button-input-wrapper:focus-within, .ag-theme-material .ag-radio-button-input-wrapper:active {\n outline: none;\n -webkit-box-shadow: 0 0 0 5px rgba(32, 33, 36, 0.122);\n box-shadow: 0 0 0 5px rgba(32, 33, 36, 0.122);\n}\n.ag-theme-material .ag-radio-button-input-wrapper.ag-disabled {\n opacity: 0.5;\n}\n.ag-theme-material .ag-radio-button-input-wrapper::after {\n content: \"\\f126\";\n color: #333;\n color: var(--ag-checkbox-unchecked-color, #333);\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-material .ag-radio-button-input-wrapper.ag-checked::after {\n content: \"\\f127\";\n color: #ff4081;\n color: var(--ag-checkbox-checked-color, var(--ag-material-accent-color, #ff4081));\n position: absolute;\n top: 0;\n left: 0;\n pointer-events: none;\n}\n.ag-theme-material input[class^=ag-][type=range] {\n -webkit-appearance: none;\n width: 100%;\n height: 100%;\n background: none;\n overflow: visible;\n}\n.ag-theme-material input[class^=ag-][type=range]::-webkit-slider-runnable-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: #e2e2e2;\n background-color: var(--ag-border-color, #e2e2e2);\n border-radius: 0px;\n border-radius: 2px;\n}\n.ag-theme-material input[class^=ag-][type=range]::-moz-range-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: #e2e2e2;\n background-color: var(--ag-border-color, #e2e2e2);\n border-radius: 0px;\n border-radius: 2px;\n}\n.ag-theme-material input[class^=ag-][type=range]::-ms-track {\n margin: 0;\n padding: 0;\n width: 100%;\n height: 3px;\n background-color: #e2e2e2;\n background-color: var(--ag-border-color, #e2e2e2);\n border-radius: 0px;\n border-radius: 2px;\n color: transparent;\n width: calc(100% - 2px);\n}\n.ag-theme-material input[class^=ag-][type=range]::-webkit-slider-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: 18px;\n height: 18px;\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n border: 1px solid;\n border-color: #333;\n border-color: var(--ag-checkbox-unchecked-color, #333);\n border-radius: 18px;\n -webkit-transform: translateY(-7.5px);\n transform: translateY(-7.5px);\n}\n.ag-theme-material input[class^=ag-][type=range]::-ms-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: 18px;\n height: 18px;\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n border: 1px solid;\n border-color: #333;\n border-color: var(--ag-checkbox-unchecked-color, #333);\n border-radius: 18px;\n}\n.ag-theme-material input[class^=ag-][type=range]::-moz-ag-range-thumb {\n margin: 0;\n padding: 0;\n -webkit-appearance: none;\n width: 18px;\n height: 18px;\n background-color: #fff;\n background-color: var(--ag-background-color, #fff);\n border: 1px solid;\n border-color: #333;\n border-color: var(--ag-checkbox-unchecked-color, #333);\n border-radius: 18px;\n}\n.ag-theme-material input[class^=ag-][type=range]:focus {\n outline: none;\n}\n.ag-theme-material input[class^=ag-][type=range]:focus::-webkit-slider-thumb {\n -webkit-box-shadow: 0 0 0 5px rgba(32, 33, 36, 0.122);\n box-shadow: 0 0 0 5px rgba(32, 33, 36, 0.122);\n border-color: #ff4081;\n border-color: var(--ag-checkbox-checked-color, var(--ag-material-accent-color, #ff4081));\n}\n.ag-theme-material input[class^=ag-][type=range]:focus::-ms-thumb {\n box-shadow: 0 0 0 5px rgba(32, 33, 36, 0.122);\n border-color: #ff4081;\n border-color: var(--ag-checkbox-checked-color, var(--ag-material-accent-color, #ff4081));\n}\n.ag-theme-material input[class^=ag-][type=range]:focus::-moz-ag-range-thumb {\n box-shadow: 0 0 0 5px rgba(32, 33, 36, 0.122);\n border-color: #ff4081;\n border-color: var(--ag-checkbox-checked-color, var(--ag-material-accent-color, #ff4081));\n}\n.ag-theme-material input[class^=ag-][type=range]:active::-webkit-slider-runnable-track {\n background-color: #3f51b5;\n background-color: var(--ag-input-focus-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material input[class^=ag-][type=range]:active::-moz-ag-range-track {\n background-color: #3f51b5;\n background-color: var(--ag-input-focus-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material input[class^=ag-][type=range]:active::-ms-track {\n background-color: #3f51b5;\n background-color: var(--ag-input-focus-border-color, var(--ag-material-primary-color, #3f51b5));\n}\n.ag-theme-material input[class^=ag-][type=range]:disabled {\n opacity: 0.5;\n}\n.ag-theme-material .ag-filter-toolpanel-header,\n.ag-theme-material .ag-filter-toolpanel-search,\n.ag-theme-material .ag-status-bar,\n.ag-theme-material .ag-header-row,\n.ag-theme-material .ag-panel-title-bar-title,\n.ag-theme-material .ag-side-button-button,\n.ag-theme-material .ag-multi-filter-group-title-bar {\n font-size: 12px;\n font-weight: 600;\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-header-foreground-color, var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54)));\n}\n.ag-theme-material .ag-tab {\n height: 36px;\n}\n.ag-theme-material .ag-tabs-header,\n.ag-theme-material .ag-column-drop-horizontal {\n background-color: #eee;\n background-color: var(--ag-subheader-background-color, #eee);\n}\n.ag-theme-material .ag-tabs-body {\n padding: 4px 0;\n}\n.ag-theme-material .ag-tabs-body .ag-menu-list {\n padding-top: 0;\n padding-bottom: 0;\n}\n.ag-theme-material .ag-header-cell, .ag-theme-material .ag-header-group-cell {\n -webkit-transition: background-color 0.5s;\n transition: background-color 0.5s;\n}\n.ag-theme-material .ag-row-last:not(.ag-row-first) .ag-cell-inline-editing {\n bottom: 0;\n}\n.ag-theme-material .ag-cell-inline-editing {\n padding: 8px;\n height: 72px;\n border-color: #e2e2e2 !important;\n border-color: var(--ag-border-color, #e2e2e2) !important;\n}\n.ag-theme-material .ag-has-focus .ag-cell-inline-editing {\n border-color: #3f51b5 !important;\n border-color: var(--ag-input-focus-border-color, var(--ag-material-primary-color, #3f51b5)) !important;\n}\n.ag-theme-material .ag-side-button-button {\n color: rgba(0, 0, 0, 0.54);\n color: var(--ag-secondary-foreground-color, rgba(0, 0, 0, 0.54));\n}\n.ag-theme-material .ag-column-drop-vertical {\n border-bottom: solid 1px;\n border-bottom-color: #e2e2e2;\n border-bottom-color: var(--ag-border-color, #e2e2e2);\n padding-top: 8px;\n}\n.ag-theme-material .ag-column-drop-vertical.ag-last-column-drop {\n border-bottom: none;\n}\n.ag-theme-material .ag-column-drop-vertical-cell {\n margin-left: 0;\n}\n.ag-theme-material .ag-column-drop-vertical-empty-message {\n font-size: 12px;\n font-weight: 600;\n color: rgba(0, 0, 0, 0.38);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.38));\n}\n.ag-theme-material .ag-ltr .ag-column-drop-vertical-empty-message {\n padding-left: 34px;\n padding-right: 8px;\n}\n\n.ag-theme-material .ag-rtl .ag-column-drop-vertical-empty-message {\n padding-right: 34px;\n padding-left: 8px;\n}\n\n.ag-theme-material .ag-status-bar {\n border: solid 1px;\n border-color: #e2e2e2;\n border-color: var(--ag-border-color, #e2e2e2);\n}\n.ag-theme-material .ag-column-panel-column-select {\n border-top: solid 1px;\n border-top-color: #e2e2e2;\n border-top-color: var(--ag-border-color, #e2e2e2);\n}\n.ag-theme-material .ag-column-select, .ag-theme-material .ag-column-select-header {\n border-bottom: solid 1px;\n border-bottom-color: #e2e2e2;\n border-bottom-color: var(--ag-border-color, #e2e2e2);\n}\n.ag-theme-material .ag-column-select-header {\n height: 56px;\n}\n.ag-theme-material .ag-group-title-bar {\n padding: 6px 8px;\n}\n.ag-theme-material .ag-charts-format-sub-level-group-title-bar {\n padding: 4px 8px;\n}\n.ag-theme-material .ag-chart-data-section,\n.ag-theme-material .ag-chart-format-section {\n padding-bottom: 4px;\n}\n.ag-theme-material .ag-group-toolbar {\n background-color: rgba(238, 238, 238, 0.5);\n}\n.ag-theme-material input[class^=ag-]:not([type]),\n.ag-theme-material input[class^=ag-][type=text],\n.ag-theme-material input[class^=ag-][type=number],\n.ag-theme-material input[class^=ag-][type=tel],\n.ag-theme-material input[class^=ag-][type=date],\n.ag-theme-material input[class^=ag-][type=datetime-local],\n.ag-theme-material textarea[class^=ag-] {\n background: transparent;\n color: rgba(0, 0, 0, 0.87);\n color: var(--ag-foreground-color, rgba(0, 0, 0, 0.87));\n font-family: inherit;\n font-size: inherit;\n height: 40px;\n padding-bottom: 8px;\n border-width: 0;\n border-bottom: 2px solid;\n border-bottom-color: #e2e2e2;\n border-bottom-color: var(--ag-border-color, #e2e2e2);\n}\n.ag-theme-material input[class^=ag-]:focus:not([type]),\n.ag-theme-material input[class^=ag-][type=text]:focus,\n.ag-theme-material input[class^=ag-][type=number]:focus,\n.ag-theme-material input[class^=ag-][type=tel]:focus,\n.ag-theme-material input[class^=ag-][type=date]:focus,\n.ag-theme-material input[class^=ag-][type=datetime-local]:focus,\n.ag-theme-material textarea[class^=ag-]:focus {\n border-bottom: 2px solid;\n border-bottom-color: #3f51b5;\n border-bottom-color: var(--ag-material-primary-color, #3f51b5);\n outline: none;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\n.ag-theme-material input[class^=ag-]:not([type])::-webkit-input-placeholder, .ag-theme-material input[class^=ag-][type=text]::-webkit-input-placeholder, .ag-theme-material input[class^=ag-][type=number]::-webkit-input-placeholder, .ag-theme-material input[class^=ag-][type=tel]::-webkit-input-placeholder, .ag-theme-material input[class^=ag-][type=date]::-webkit-input-placeholder, .ag-theme-material input[class^=ag-][type=datetime-local]::-webkit-input-placeholder, .ag-theme-material textarea[class^=ag-]::-webkit-input-placeholder {\n color: rgba(0, 0, 0, 0.38);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.38));\n}\n.ag-theme-material input[class^=ag-]:not([type])::-moz-placeholder, .ag-theme-material input[class^=ag-][type=text]::-moz-placeholder, .ag-theme-material input[class^=ag-][type=number]::-moz-placeholder, .ag-theme-material input[class^=ag-][type=tel]::-moz-placeholder, .ag-theme-material input[class^=ag-][type=date]::-moz-placeholder, .ag-theme-material input[class^=ag-][type=datetime-local]::-moz-placeholder, .ag-theme-material textarea[class^=ag-]::-moz-placeholder {\n color: rgba(0, 0, 0, 0.38);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.38));\n}\n.ag-theme-material input[class^=ag-]:not([type])::placeholder,\n.ag-theme-material input[class^=ag-][type=text]::placeholder,\n.ag-theme-material input[class^=ag-][type=number]::placeholder,\n.ag-theme-material input[class^=ag-][type=tel]::placeholder,\n.ag-theme-material input[class^=ag-][type=date]::placeholder,\n.ag-theme-material input[class^=ag-][type=datetime-local]::placeholder,\n.ag-theme-material textarea[class^=ag-]::placeholder {\n color: rgba(0, 0, 0, 0.38);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.38));\n}\n.ag-theme-material input[class^=ag-]:disabled:not([type]),\n.ag-theme-material input[class^=ag-][type=text]:disabled,\n.ag-theme-material input[class^=ag-][type=number]:disabled,\n.ag-theme-material input[class^=ag-][type=tel]:disabled,\n.ag-theme-material input[class^=ag-][type=date]:disabled,\n.ag-theme-material input[class^=ag-][type=datetime-local]:disabled,\n.ag-theme-material textarea[class^=ag-]:disabled {\n border-bottom: 1px solid;\n border-bottom-color: #e2e2e2;\n border-bottom-color: var(--ag-border-color, #e2e2e2);\n}\n.ag-theme-material input[class^=ag-]:invalid:not([type]),\n.ag-theme-material input[class^=ag-][type=text]:invalid,\n.ag-theme-material input[class^=ag-][type=number]:invalid,\n.ag-theme-material input[class^=ag-][type=tel]:invalid,\n.ag-theme-material input[class^=ag-][type=date]:invalid,\n.ag-theme-material input[class^=ag-][type=datetime-local]:invalid,\n.ag-theme-material textarea[class^=ag-]:invalid {\n border-width: 0;\n border-bottom: 1px solid;\n border-bottom-color: #e02525;\n border-bottom-color: var(--ag-invalid-color, #e02525);\n color: #e02525;\n color: var(--ag-invalid-color, #e02525);\n}\n.ag-theme-material .ag-standard-button {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n background-color: transparent;\n border: 0;\n color: #3f51b5;\n color: var(--ag-material-primary-color, #3f51b5);\n font-family: inherit;\n font-size: inherit;\n margin: 0;\n padding: 0;\n text-transform: uppercase;\n}\n.ag-theme-material .ag-standard-button:disabled {\n color: rgba(0, 0, 0, 0.38);\n color: var(--ag-disabled-foreground-color, rgba(0, 0, 0, 0.38));\n background-color: var(--ag-input-disabled-background-color);\n border-color: var(--ag-input-disabled-border-color);\n}\n.ag-theme-material .ag-dnd-ghost {\n font-size: 12px;\n font-weight: 600;\n}\n.ag-theme-material .ag-filter-toolpanel-header {\n height: 32px;\n}\n.ag-theme-material .ag-filter-toolpanel-group-level-0-header {\n height: 56px;\n}\n.ag-theme-material .ag-layout-auto-height .ag-center-cols-clipper, .ag-theme-material .ag-layout-auto-height .ag-center-cols-container, .ag-theme-material .ag-layout-print .ag-center-cols-clipper, .ag-theme-material .ag-layout-print .ag-center-cols-container {\n min-height: 150px;\n}\n.ag-theme-material .ag-overlay-no-rows-wrapper.ag-layout-auto-height {\n padding-top: 60px;\n}\n.ag-theme-material .ag-picker-field-wrapper:focus {\n -webkit-box-shadow: 0 0 0 1px #3f51b5;\n box-shadow: 0 0 0 1px #3f51b5;\n}\n", ""]);
58536// Exports
58537module.exports = exports;
58538
58539
58540/***/ }),
58541/* 297 */
58542/***/ (function(module, exports, __webpack_require__) {
58543
58544var api = __webpack_require__(276);
58545 var content = __webpack_require__(298);
58546
58547 content = content.__esModule ? content.default : content;
58548
58549 if (typeof content === 'string') {
58550 content = [[module.i, content, '']];
58551 }
58552
58553var options = {};
58554
58555options.insert = "head";
58556options.singleton = false;
58557
58558var update = api(content, options);
58559
58560
58561
58562module.exports = content.locals || {};
58563
58564/***/ }),
58565/* 298 */
58566/***/ (function(module, exports, __webpack_require__) {
58567
58568// Imports
58569var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58570exports = ___CSS_LOADER_API_IMPORT___(false);
58571// Module
58572exports.push([module.i, "@font-face {\n font-family: \"agGridAlpine\";\n src: url(\"data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABWoAAsAAAAAJ9AAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAAmYAAAR2ZcBn9U9TLzIAAANwAAAAQQAAAFZWUVMIY21hcAAAA7QAAAIcAAAFnIMq5ipnbHlmAAAF0AAAC80AABVszjC1ZWhlYWQAABGgAAAANAAAADZ2zsSBaGhlYQAAEdQAAAAeAAAAJAfSBDFobXR4AAAR9AAAABcAAAE0xzj/+2xvY2EAABIMAAAAdQAAAJwYJx3EbWF4cAAAEoQAAAAfAAAAIAFjAKpuYW1lAAASpAAAATUAAAJG5xgJvXBvc3QAABPcAAAByQAAAqgIzxhUeJx9lEtyElEUhv+mm0gCJilFjRhjovEVXzF2uhuaRx4QEDJwYFkOnMSyyrKKcsQ6XIAryNAVuAAHrsAFOHDo2PK7h0ZMBuEWze3z+M9//3Mu8iTNaVNN5doHhy81PzwafVRFgcYf5/9/7w0/vD9SYfKGL7DfgrygpHnd1GuN9M2b90beca7sV/xX/jv/s//F/yWfqFU9JrqobVakmGeoRFXVlCqnGWwR+7oaRPs8m2a9oKvKm6ernpaoGZHTM8QN9XVPi+B0DKetPaISlsNs8xyw7mvhjIgUlDy+be1gDVBkBU3qKmtWz2HZhkmL/Ab+i9Tcp3ZIVgdfB3Z5LE32LV2Ck8sITNWe3ugpfndSh1LNchK+kQ7sPbS3NTSZRDXBqVHLYW/BYGKvgReTsQl6lajdTNEN3SK7Bk4btJZl1y17jcgYbgl9CeycMVxLWmf/Qm/pRREW45y2aTpW4CHsp/aO4aV6dMLaAmtA7BM4TK2uPw+oFdKVGPQlfEN90rG+6rt+6Kd+64/O6TJ1YjvDHuj7Z2pTQMHT0V28zX9Wd9YZZuB01MmIWU5eM3UifL1MQ1etyMmcOgn7EGti8XPwdPFd2KT0I6BGaHVdp/OsHd4jos9n09lglUzpHlOwYBPct1moMKNbum6I4zlM0XoZRLcb86uYbg3wrlnfnLruhi3am7sLrt8VurPCb8gJq6bTId5VLA5parlhWSnsHcYz/Cmsp9Ucq2VYhbqLz81Y325Hl0rrnGfMJNYduxl9m6/bMKhmN7VMDx37VtaxKxYXWZbHP0GY3fDEtHMz3YGbm4/BX0ArchMAAHicY2BkmsY4gYGVgYGpimkPAwNDD4RmfMBgyMgEFGVgZWbACgLSXFMYDjDofjRifgHkRjG/BZnCwAiSAwDkfwr5AAAAeJy11AdSG0EQheFfgSxwIOecEWCCySCiEHAJnCkcKJw5h8/me/QJ8Bt1+wC4ylv1qXdGq92ZWr0GaoCczEkesvVkdEYmq9lMdT5HY3U+z2+NC9ST1XmRK264s6X7e80WueSaW8tUR3+PjK4u0McEzzU6YoUDdjlmjXNWKbHBPnucsMUmp7pmh3XKnLHNIRUu9Pu0irzWWEudntuglTTpjs208JgntNJGOx100kU3PfTqWf0MMMgQw4wwyhjjevokU0wzw6x2U2SeBRb1/TOWWNYia3nYcfTA69OxcrB7vHa+WtKO9062NrXZnfXy2fZh5eIfbvYfjkL6yP2K0Tnpjbq028uwIi/CgbwMu/IqHMvrsCZvQrrn27Aq70JJrsKGXId9eR/25EM4kY9hSz6FTbkJp3Ib0j/vc9iRL2FdvoayfAtn8j1sy49wKD9DRe6CXqBlXMqLZR2p5lzKl+VdypjVuJQ9q3WkWudItd6RaoMj1UaXMmlNjlQLLr1Ja3ak2uJI9ZFTdrCgFGFBecKeOiULa3XKGNbmlDas3Sl3WIdTArFOpyxiXU6pxLqd8on1OCUV63XKLNbnlF6s3ynH2IBTorFBp+xiQ04px4ad8o6NOCUfG3XqAdiYUzfAxp36Ajbh1CGwSadegU05dQ1s2ql/YDMu9UubdSknNufUXbCiU5/B5p06DrbgqutfdOpCWFA/wgLLfwB3H6YceJztWHtwVNUZv9852b179/2+WUI22b3ZXNjshib7uEkWdkMSSMAQcVwwQDFEikONtqK0KBAR/2hNHavjDPgH6Uw7bcPUmUZaph0VKk6VEkeldqTtDOof1dKSqmlxGLGBvfQ7Z3dDAqnaPzttsnvej+98z9+3Agj4R6ZoXLAIAoR8sugLpUKaGiJTunV6Gi7qd2F5kMZz09PZ7PQ0W264evnqZfoR/Ugw4C6H4BOqBMEjyqKqGTRWRrCgMmt6VFZ+8PTTsZdfJlksYk/rg/39/e18JMYHyGOzOv0b+vv1T2evR7LYpbSDdggS3iNrroRL1iQ43DaZP5/Rj+pH4WJmUjfA5ckMrNGPCoSvP0APCF6hFreHRaNo9Mp+2d+spbV0Uq1X6z2iioQidUgfXNwxOKC1tmoDg++VGwNtBw+2HTjAS3pgzhRvFF4tz2LJrivx0Y4tkfMy4VLUhE9hNfxyePj48DDsGh6mtsJpZOgufUQo0Xmenhc8QoBxP2wHn8sbhESoOQspV7IRJNBkkOmDVz4JJoL4oWZeF6b0v/VNwFgfPY/9OZNXPgF/3ykYu3nu+fL851MU9g2nP144Q2I3nlw4c+/sMyk/0xVyReY7F8+k5uvOLQ5+/fpzi7yjD9CvoD6ZhEpBkECUJaBaDRiZ6Hxef3M6xcRGPtAH2rbqBchOTJw6YrEEHP6mFU1+RwB+DT/I4IT+MiybmMjabMGq+kC4qSkciCwMsuMr+B1x1POifByCEAm5QgbFlfAorgy4FBeNF54gO/TVXFbHhqdJYlgfYZIqSqukh+QInmFAGgmqD+yCVv0UmgWN66f0iZJ9FN/zMD2BrwkI1ZzzRh9qbUjmDa8fGZVGPtUrHqSBHNGtSlMeLg7rKUYyvIalAnoKXqMvNoULz5PuW5uUwvNsjnQrTYVtpLtkE0/SJ5muSYDsEiVQUV3gImzo1MdgY6d+WB/rhI1YkPScLmzEJbjdKAhXr9Cv0Q8FJ2pItdAjPCx8D6lF81ANswilSgrlLBtlfwY8Ea+dKOHGilQySxLNQfB5jeF6tREU3IAq0JzWstDsl712HMHhVDLdHKQJJr9GUBtJMgu4i5Q2FffUgF8OEjTFtNaEm4Pg9TnATsKNsITidj+9R7zzXoPep2qaStKqtvKo3gEjBKjBeZboA5I76HXKXqfZYKsMeeQ6j9lmqjB5HfJCq1zrNxKT3fwzd9hf7bI5JbtJNDmsLr/F7fRWudw1fnely2S2iRUGR9BttBjcbovNbV7aECWUmCwmA0kR0eywGkmCgtltIn81ffMRA2lRr/yWEzPy5pXv0Ad+H5BchSf/aK0JekzuqtqIL5yq9y5U3ZLDbPN5k821Df7KSrPD7ggs9jssEbfFbgm4rLLb7jIZRU+oMeKx+Sp9TrPF4fbYJItERdEgeqq/e+y4ZDGaRZvZIJ2RHCbJLp12SGanW/i/7P6rZTcnnoEqou9R0Xrpch7QYA3+Y0CDy7phEsMbrCn5rznyXvW5stZYmEumE83+GsgRJjq/z+sAGUVkh3D9EhCZMtSnkp8toviGmyTR4HW4PM6l7Wa70WZyeHx9eatZcnvdFf23VUguHPks5k48OGS3WfxOT+XGjQ63weC0uqrvedDhc9slybhvt9FkdDnc/ytvnBNDIui4RRljzgS0IL46Di3QmpsdQx5DPFElNArLmJ5ocpoZbQ0+ChjYMipGtDJAm5VxIIgWreFYmNmtpsppZouinNYaSRgql8V61g+sH91ZTam3Kx6PaZuHbhvdubCiwtc3GO/yLhjc33PLqkw01bAqGjK11N26Kurt6asL3LH/cfIj3Lu4a89as0XbrDTG0glYsXutxbx0m1R9a/PyrVpdW020uyHVsKXFG+3J1/VkNuHgLPrtiMHiSD9CA0YLJzWSJaWXcE8BBpxEH4OT6FJIRff+OwJ49xP7BxcgZfrJhTtHf8ppr+aNhRXw7eiqaHTVOlZAQNu6HK8slufW7ulixJpL9SjS1BPlRQm7DCHvRcGGFIk+0aWmQgbZp6U0OjR9bJo8Wxh/O3eWTE2PHof+6Vzu7bPZ0be5yHhxiUyh3LjVaqooM2xHLr30UmZ6Wk/l85A6cSLDMbNVsBbxBq4v4w2GwaqEGkERVKFBWCIImpJKyLO+kc/pI/4+nssd42XhjX/XmR4u/uVKdbZUIzmmmfdfT5MAiPoj+PXgPSn8qvhlYyLWIazpENPRwml+FF5BntUnsAW/0CfIDn6vvjqHd+X0ESQhm83OwzMP6jomFsizC5xlsCufJ0c5y3TrXL9oYphJY3BGDdHlZT/IfCIJTrYxyN82WbaRA+QkZiABtBLBgxEqAymlqEe8hdYgI8aNKD4WuuzQANjgyqb8MLxUGRtr3dLSsqV1bExZGn4G+vSfwy7eBuXaJFxUMsrNLQP3DbTcjK1ofgyrlWxoy46BFs7Xq1fpJMfE1/E1hPiSJRoGlhUhHQaWXJX6DHuSBb29I5e0S6RBu6QhOHsdkoVeVm7GPvkAZ/TXe3shWY8t/GjLent7d2KNn0u/g2QZjz9Dn0EqXBzTJnyAionAEj2lCph76CP9QDp0/V1MQDbo6PfIOznY9S4fox595B0+NuNzruksyiA1819Ex+UvtKKsh7Pl+9+kbxbvn7l2hpDczKWoQ2VKGFHFa/9QpmTGN44XfSNzcTLANzK6noFWGse6DVpKOnWOOnnuyaKnjGmCyBI5cu7ChdjJkzFekiCvvsXLmbcVc8IQ05V5s0JIsiZGERkaAQOICgwksYXz5Yh6RzzWu2ZT6/YGPR6ugzXYgLfCdWxwvpRRH9i0pjcWrwvr8Ybt+od1YXirYXsrHyvTdzfmDD4hKNQjfQqDWKIyN2EINfsZ/EqmgfE3lErQynF7+9p227M8O+jBUn/BFQiEAwFIFZ7Lw/fzdCjS2BjBPGIbX3Io3FSpVOKn4CaHuFsoyXAv3YMa28Z9W7r4L2v1WIFoRC4jn0SjA/mtsqQMWV6PbAG2CkOQ7E/4sanCLU+h+zZI1W1LtK32tupaCPraV2wHINTri8sH/xyDcx7JanKOphc1u2CBSSZgIgdMCJ/sbucZeOgpyWJxWBdZJMtg47KgT39v4TrrNqMhkGr4kmzB7eQJp9Nj94/aKa3S/2L0qpVJ98GKChBN7jOCmb9jnI6j9dUKi4TlwkrhJiEvbBIGhTvxXUEiu6mdiBWRRqIST5ZodYaQy48BVEsbvDILSCmuSqLqQ/wgKjLv+DkzIl45kVKNYiKlRQEZkUAH7UsgDlYjRkX0JbR6dDHUtWhFFJCe6IpF+vv6+9d6UA27C6f+PqUkiVQwAUkqtfCCObYuH5OiKxftlGLr1sXM7XXNC4JQeBX27gEYziVvagHYnYNf7WbrkRet0X0nWrr30Z/Me341710pvGqUcPnUGy4nXgZ7wMEPl+5d1N1ApFge7wGEqP5ocGXLQy+uTu37ZzoykNu7N4yrKcDeYXjoBlvknpiMZ/RT0JrRyccZlu226cLs3wO8wuKyVTmZttQytjmZVdEwh2ms38xmSgb16M4dnV1dnTt2grPcevSezRtTmpbauPlsuUHPswn9H3MXX9k7ZxFvlGyI0WJFG08zanggKPp79T8grev+zs77H2VF1xejkkyV1mMx/YUJviEXEGUMtuy3j7m/aPHMYLKNZQbXsGEvHeJxlSMZ5v8A93JEUvSDhffJkcJadNRZmOQD+uEcmSqcLt9JySEmPY8E58ABDnIIY19fSe6HKGVzEimOUqpf0C/MnUPsivRgwOS75z+zuKA092Pq4b+bsN8qNLgLPu0snNT/1AFVrPUbqOkorYuTTvZCD77mOA82HbfP8ClOxouxgeVL5GMeEqCVjGOMYKo5y88PCW7BLySYH/XxVNdvFOUssExWQcNOMMzsmwUSkmlNxpUyfjQgrxQxgBZdlswhAFj85byp8NwjbT1lpNDRtL7mvoGew8lCN3mFYYLYCsuyqjuWtg60jOXh7v2VX21vLYKFptWG9fnbcSV54V8PFbSvAAAAeJxjYGRgYADiJZeya+P5bb4ycDO/AApEcT7e1wCj///+/5v5LfNboEoOBiYgyQAAoN8P3nicY2BkYGB+wcAAIv///v+b+S0DIwMq8AUAntwHCgAAeJxjYGBgYH4Bwv9/Q+ihjekBAG/aMMwAeJxjYAACKYYghiyGJQz7GN4xSjA6MZYwTmNcxXiH8R/THeZdzFdY3Fh2sJxh1WEtY53Cuob1G5semxtbHNsitgfsbOwK7G7sEewl7Ec4mDjSOHk4FTjTOA9w3uL8xcXBJcalwmXE5cYVwpXBtY10CAAggCv3AAAAeJxjYGRgYPBlmMfAwwACTEDMBYQMDP/BfAYAIOsCDgB4nHWRPU7DQBCFnxMniBghJCREx1Y0SM5PQZEuFHGfIgWdE68dR7bXWm8ipeMYnIBjUHIETsEheDFTREjZ1a6/+fbNNAZwgy94OC4PV+19XB1csPrjLulW2Cc/CPcQ4Em4T/8sPKB9EQ7YWXKC51/S3ONNuINrvAt36T+EffKncA93+Bbu0/8ID7D0fOEAj95rnEU2T2ZFnVd6obNdEdtTdcpLbZvcVGocjk51pCttY6cTtTqoZp9NnEtVak2p5qZyuiiMqq3Z6rULN87V0+EwFR+uTYkYGSJY5EgwQ4GaVEFjwZNhRxPz9VzqnF/yWDSsDGuFMUKMzqYjnqrtiOH4TdixwoF3gz17JrQOKeuUGcO/ojBvJx/TBbehqdu3Lc2aPsSm7aoxxZA7/ZcPmeKkXwK+aWkAAAB4nG2SB2/bMBSE/cWS7dhp46ZtuvceapvuvXeb/geGomUiEimQlO3k15e1gwAB+gASd4eHe8cHtpZai+q3/l+bLNEmIaVDlx7L9BmwwiEOs8qQI6xxlGMcZ50TnOQUpznDWc5xngtc5BKXucJVrnGdG9zkFre5w10y7nGfB2zwkEc85glPecZzXvCSV7zmDW95x3s+8JFPfOYLX/nGd37wk1/8ZpM/rYEoCqcKEbQ1HeGcnfq28LIjhZGqTOVYuDCUYyW3t+wsmwOVr+8L2uQqKFdpI4Ja25cbs9e5Im1pXVbrSFw3kqYyvi+tCU7IoPJE2nonlc5635Z+ksaTbSS58jJVsxigO7+zjZ6a1SLOypfVjsp8Kfy4HVFnpMs4Ph1p50NSOF2nhbNNncSGkJRqFDqlNjFHt7Qi16boVWKmK72rkkqZphdzL5hRs5AYa9TA2JCJsrRTlad1dFHtWpu01hMberVTE20bP3TRzGZbTQjWZHY0Wj0omNTpYhwSLyaq76tol+V2avbgv1iDBZy39RY4pg5xTWvBKXVwr8tzydbK9BqzeA+CAocioLEYpngkJWO22WIW/0ZORUPNDhNG7LZafwFegLa2AAAA\") format(\"woff\");\n font-weight: normal;\n font-style: normal;\n}\n.ag-icon {\n font-family: \"agGridAlpine\";\n font-size: 16px;\n line-height: 16px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.ag-icon-aggregation::before {\n content: \"\\f101\";\n}\n\n.ag-icon-arrows::before {\n content: \"\\f102\";\n}\n\n.ag-icon-asc::before {\n content: \"\\f103\";\n}\n\n.ag-icon-cancel::before {\n content: \"\\f104\";\n}\n\n.ag-icon-chart::before {\n content: \"\\f105\";\n}\n\n.ag-icon-color-picker::before {\n content: \"\\f109\";\n}\n\n.ag-icon-columns::before {\n content: \"\\f10a\";\n}\n\n.ag-icon-contracted::before {\n content: \"\\f10b\";\n}\n\n.ag-icon-copy::before {\n content: \"\\f10c\";\n}\n\n.ag-icon-cross::before {\n content: \"\\f10d\";\n}\n\n.ag-icon-csv::before {\n content: \"\\f10e\";\n}\n\n.ag-icon-desc::before {\n content: \"\\f10f\";\n}\n\n.ag-icon-excel::before {\n content: \"\\f110\";\n}\n\n.ag-icon-expanded::before {\n content: \"\\f111\";\n}\n\n.ag-icon-eye-slash::before {\n content: \"\\f112\";\n}\n\n.ag-icon-eye::before {\n content: \"\\f113\";\n}\n\n.ag-icon-filter::before {\n content: \"\\f114\";\n}\n\n.ag-icon-first::before {\n content: \"\\f115\";\n}\n\n.ag-icon-grip::before {\n content: \"\\f116\";\n}\n\n.ag-icon-group::before {\n content: \"\\f117\";\n}\n\n.ag-icon-last::before {\n content: \"\\f118\";\n}\n\n.ag-icon-left::before {\n content: \"\\f119\";\n}\n\n.ag-icon-linked::before {\n content: \"\\f11a\";\n}\n\n.ag-icon-loading::before {\n content: \"\\f11b\";\n}\n\n.ag-icon-maximize::before {\n content: \"\\f11c\";\n}\n\n.ag-icon-menu::before {\n content: \"\\f11d\";\n}\n\n.ag-icon-minimize::before {\n content: \"\\f11e\";\n}\n\n.ag-icon-next::before {\n content: \"\\f11f\";\n}\n\n.ag-icon-none::before {\n content: \"\\f120\";\n}\n\n.ag-icon-not-allowed::before {\n content: \"\\f121\";\n}\n\n.ag-icon-paste::before {\n content: \"\\f122\";\n}\n\n.ag-icon-pin::before {\n content: \"\\f123\";\n}\n\n.ag-icon-pivot::before {\n content: \"\\f124\";\n}\n\n.ag-icon-previous::before {\n content: \"\\f125\";\n}\n\n.ag-icon-right::before {\n content: \"\\f128\";\n}\n\n.ag-icon-save::before {\n content: \"\\f129\";\n}\n\n.ag-icon-small-down::before {\n content: \"\\f12a\";\n}\n\n.ag-icon-small-left::before {\n content: \"\\f12b\";\n}\n\n.ag-icon-small-right::before {\n content: \"\\f12c\";\n}\n\n.ag-icon-small-up::before {\n content: \"\\f12d\";\n}\n\n.ag-icon-tick::before {\n content: \"\\f12e\";\n}\n\n.ag-icon-tree-closed::before {\n content: \"\\f12f\";\n}\n\n.ag-icon-tree-indeterminate::before {\n content: \"\\f130\";\n}\n\n.ag-icon-tree-open::before {\n content: \"\\f131\";\n}\n\n.ag-icon-unlinked::before {\n content: \"\\f132\";\n}\n\n.ag-icon-row-drag::before {\n content: \"\\f116\";\n}\n\n.ag-left-arrow::before {\n content: \"\\f119\";\n}\n\n.ag-right-arrow::before {\n content: \"\\f128\";\n}\n", ""]);
58573// Exports
58574module.exports = exports;
58575
58576
58577/***/ }),
58578/* 299 */
58579/***/ (function(module, exports, __webpack_require__) {
58580
58581var api = __webpack_require__(276);
58582 var content = __webpack_require__(300);
58583
58584 content = content.__esModule ? content.default : content;
58585
58586 if (typeof content === 'string') {
58587 content = [[module.i, content, '']];
58588 }
58589
58590var options = {};
58591
58592options.insert = "head";
58593options.singleton = false;
58594
58595var update = api(content, options);
58596
58597
58598
58599module.exports = content.locals || {};
58600
58601/***/ }),
58602/* 300 */
58603/***/ (function(module, exports, __webpack_require__) {
58604
58605// Imports
58606var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58607exports = ___CSS_LOADER_API_IMPORT___(false);
58608// Module
58609exports.push([module.i, "@font-face {\n font-family: \"agGridBalham\";\n src: url(\"data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABgoAAsAAAAALEgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAAmMAAAR2YfRkQU9TLzIAAANsAAAAQQAAAFZWUFLwY21hcAAAA7AAAAIMAAAFnGSNxkJnbHlmAAAFvAAADpIAABo4y6JNTGhlYWQAABRQAAAANAAAADZ2zcSBaGhlYQAAFIQAAAAaAAAAJAfQBDFobXR4AAAUoAAAABoAAAEgs7L//WxvY2EAABS8AAAAawAAAJJHu0GKbWF4cAAAFSgAAAAfAAAAIAFeAKpuYW1lAAAVSAAAATUAAAJG0OP3eXBvc3QAABaAAAABqAAAAm9qOX49eJx9lM1SE1EQhc8wAYFEoDQqRkRQ/IvKMD8Zk/CTkJBoWS5cWJYLN1hWWVZRrngOH8AnYOkT+AAufAIfwIVL15ZfdwaDLMitTO50n+4+fW7fKJA0qw3taGJv+Pyl5g72Dz+qppJGH/Of3AcHH97va/r4DV/Jf6cVlCqa00291qG+BXPBYXA0UQ1r4avwXfg5/BL+UghqReugy1TcUKyEZ6RUmRrKNaEpbDH7x2qCDnm23HpBVzXpnp76WqRmTEzfM9b1THe0QJ6u5+loG1TKspwdnkPWXc2fgch1j/wZbDaxllBkmf2WqprRHiw7MGkT38R/kZo71I6I6uLrwm4SS4t9W5fgZBElV/Wp3ugRfuvUsmRFTMo31q6/R/5WZh2jWuRpUMty12FwbG9QNSHiIdkzUFuFonVUL+NNwUTEtl1Biy6DTOCWapWd9ZnAtaI1MC/01qvuFjEd13SkQB32Y3vX8+V0ftLaJtcQ7AM4jK12PvepFWngXS2COdAnHemrvuuHfuq3/uicLlMn8R62yb5zpjbTKHga3cPb+me1XqeYgdOo/xEzdN5wdWJ8/UJDq1amM1MnZR9hTR0/C0/D92CTcx4lakRe1056krXJewz6fDGdTVbFle4zBfM+wQOfhRoTlui6ZxzNYY7WS2S03YhfzXVrku+an5upazdswd/sLth51zj/ZX4jOsxcpyd4V7BYprHlhkflsLcc6/hzWI+rGaslWGU+0TZjA78dPSrdop8Rk0S3/WYMfL7WYJAVN7XKGRr7dnFiVxwXe1TAP0FU3PDUtbOZ7sLN5mP4F/iHapMAeJxjYGSqZ5zAwMrAwFTFtIeBgaEHQjM+YDBkZAKKMrAyM2AFAWmuKQwHGHQ/GjG/AHKjmN8wsABpRpAcANz2CuAAAAB4nLXUZ1IbQRCG4VeBKIEDOeNEVkAgssjhh0+BM4UDhTPn8Nl8jz4B/ma7fQBc5al61Duzo9FMrb4F2oCCLEkR8p3kdEUur9FcNl6gOxsv8lv9Mp3kdV3hgiturHF7q9EK51xybbms97flNLvMODOsqbdHjRab7NPglDrbrLLDFge62+SIZTZY4ZAT1tnlmDN9P+2iqD2206Hf7dJOSlqxh17u84A++hlgkCGGGWGUMf3WBJNMMa15j3jME57yTPNmmGWOeRZ0XWJRpyppzwtUtcl27tb27jg/tVprc79xWt/WibcO1po67MbK4cn67vHZPyz2H1o5fRR+Re856Ym6dNrzUJMXoSUvw6a8CvvyOjTkTTiVt6Eu78K2XIRVuQw78j5syYdwIB9D+ld9Ck25CkdyHZblc9iQL2FFvoZD+RZO5HtYlx9hV36GY7kJeoCWcykvlnekWnApX1Z0KWPW5lL2rN2Raocj1U5Hql2OVLtdyqSVHKmWXXqS1uNItdeR6j2n7GBBKcKCsoE9dEoW1ueUMazfKW3YgFPusEGnBGJDTlnEhp1SiY045RMbdUoqNuaUWWzcKb3YhFOOsUmnRGNTLjvvtFPKsaC8Y0HJx4LeAVjQ2wAL2XlnHKnOOlKdc6Q670h1wZHqosvWWXLZ3iqOdL/q0vvVai6bU3cpY7bssjUbjuofQy2jW3ic7VlrkBzVde5ze2d6et7d04+Z2Z33a3deu/OWZnd79EDL7gr0YldCBqQoEnKwVhgpwsJCC7ZwBBI4JlIBdkXxq8qmoCouJ65QlC3ZKeKCpYIWhUAShCs/sBML4mAcq1LljaaVc3t6VlqhAPa/VLLT3ff07XvPPfecc8/57l2GZfCP/Q77HUZlSsx2hoEwUUXWTbieVJFkiE8jjaQlbvWAVZbUMKg9KQ0aIluETDoRt1oStYSsqObPyhk/uVKryLFMtVFvYNt6o57O0F8txgr9a7LQ0wPZNf36T/WfXnmDkP7z1DIAtodUExCGcKJKHA6kp+5a8V/wZGsBfI5o2K04vHa/J5p2qwst/Rj0cLJ7pVu2WsORITEEcJB95nqsIWS8raqnbv/6+j/6VJe1OQzLLrRYj+hUFKdP7FuluPwht+ptzToG5aTkHHL6PEKfPylFE6upqsDQ15fZLzMRhvGpXKahcjHBKDJCzCgaMcEoVGFuPH/yZH4cXEtL/dfm+xvXr1/87jLHIy+yEmPDF3OcBLxxtPDaa4WjGjl1NP/aa/mj+jIqliHbHnYPIzEDTA3bx6k5JGqaMrVDldqBK9N3iX4x7FKnX3zIFzkj/0wDLu7eMl2uVMrTW17pErunJ8ayuVx2bOJZSkAWqelvFb797cK3jCe7Z0lzg9CWNjco/dfdHvhkFmX2s36kOMaBOq0ICXo3KnLi3OzsuwcOvHPvveQu/ZNkvP38woLR/PJlfFxg32F8TIZBNgMQL0JNqGpQiZXDIAuSG9hY3E2pMK3T6NcicID6A7ba/lzplqGhW0qkUw62Z0PlEF7kIaPs17e9UvkKfPpKi5LRg/1mqBRqH8YHXuQL+PgVtix/Be65Vqbcx5eJjeG6+CiJVrZ/TEY+Why9OG64y2X8Q1kuGLIw0B0+EVsUyXI9SapXMaeDHblGCvbC1V9pOXatBKY972N3MRb0WD/D8MCpPLCNCHRig6SU6zXqiOTf9O3NnXobtLm5l77rcAQ8SmlNSfEE4AX4xjB+0P8GRufmNJcr3JsOxEuleCDVF6bse4wxCqzb9BkPw6QSQsVn3kDv51qtH2ja6VarfVbT3iLl9vyVe3Edk5OsBeVEGanfkxP6+/mf/SwPFzulOZebcT35mAQzREfpKnB4UaksRkEkFKyp46c0jm7YXI5hPfnzi7mJXHYiT4vcRPpSul43HnrPiuxEDp7QP5mqzeI3qBgNcvpZfJByPa3/mDaFkXRddxIxN55r1VJX5H6RvEjXCixZtVctRxK9eplZGebyJfZu9heMF2cSYsaZzzF/hr3p8rd0pEcvqNfYRA2EmGpVcTK+lOQmON2eWlUjFTpZyRpPZ4pAp4tuU6axvayo1K3iWF2r1sthtkJti6mhSKgOymFidur0iYCihklDxYBT0qgCJdkDboI6HWSxu8Lu5XbfY9HXZRqNDKlnGmPf01fBMQKsxXue6Nt5MSx5Vclrt7j8MZ+a9Nldth6b5FH7nGpUsRKb2/4XYlwJCS4v77ZxNo9TUByiV+oVxIgi+gWb3cX1WDxh0eqwiKLDJdpHclnCEpvDZiE1wtk9TiupsGAXbeTnts8csZBlmUuvGsIcO3fpOHvfGwFeaD/+j85I2GcTe6MpOV5LS30ZkffYXbJULUdzit9v97g9gQHF40iJDrcjIDhV0S3YrJwvVkz5XLJf9todHtHn4h08y3EWzhf64x+c5h1WO+eyW/jXeY+Nd/PzHt7uFamp/992/3tttzR3m5igQnxm7oabOrkb5joxbYmdJz7Sxg2avKv1SlmJQItQkymy5AHEaGjXeHoQOOoE6Vr1w01T2LqW5yySR/B5R1bY3VaXzeOT10057bwoiT23bunhBaz5MKXOfXaP2+VQvD7/Jz7hES0Wr1MI7f2sRxbdPG998JDVZhU8IvN/ZI5L8gqmPo4HcgKTif4+eMk/0eziBS82sRi55Wm2iZllOXMTM81sw/b1RgXhdwdF08juhkwHOzcMlIZhXnWDBwywTV+tRkKqNkCDFhQJ9ql31juXMlZtpdwCY1Un4hwktt8l3v7M55MuQewNRtOj+Ym1z26cumFjyevjHQ6vN98ayWtDN6mQ3rh+x523K1Jfc2Jk13AeHh5aq0L4wBNfW5toTgzf2czp88HcjbnBTD6YHc8OZsivSiy77pFb++LhbF8sgIxToiSXmpt7i5JfDsujudH8U5Fba2SrNirJYau9Lze8a3iiqf9ddGuNjN89ysbjWDMy0TzfP4gcg/nMYA6LK7n+aTbB9DJFZhg1ZexQTBVZr1YP7jVUN+lqp6MRrtxxlSJgUFOpJhD3hIAGQUQ90F7Ux9q9n/r0/q0byqYuWn89Azd98e6IqYuNn09QBYw3dzSbOw7sWL58xz9kx6fGs8aDTSxOfl0y4fasaG4xJz69q6dFRmfWdCYeCt67ns42shxZdPj8PWQpkyzpFNR1TGxTwP0Yokgw5xkCrlE3J5sehZhFMvdccqPWcQ1cOgUY8K9q+G2nAQhw/vqqwADZ1z5rMyh0kc5XciEzFBoeCvLOP3xsen/TYQuURsNDyTUtgQ+WRkNDqSODU9iiWQrygikPWTD8me96tEVICOQ3plfrv6ctOraiO+Ei4+zMgby3iM98OJte3DElDGw8yDCNRK2iXnWnPuJ9wcByVxDd9V8WZjt/LbPUzBLFsS3Z59ZwzY0yK5k1Rgz6rXa8PpTGgpg9dU35O+5tT83OwkH9JViuH1uknEhd1Cfhud9tO9v+d03TWubNMB+wYQftUpRMcibi/WdN66Le9n+iBbt+uJ/tRc0J1O4IaKnpWbWRwdlieMy04Jh+sHVcPw/p+fnSLLyth2dL5HHttHYc0pDWz8+X0QLlLq99iKOzzBbDp1GtHCoYwxvVar0FtXSmhH7uBnTpMDSwRqOhzxc3WmEljXZF8wPtLeEHrC4Z697gkiB+3GvEeu32vpnQLf3JKmdVAqKTFVPePo/bm8gdXp6NzBT8ITW7K3tzaM+g2qfmwjbgUgHZIdIuuQaokggOVky4+yS7Y3UxnSVreKeld9NAOrQn5HO5RtOJsaDIJlJiUs7sHColc72qJ7qn+PBwMQJ8FLl+YXgoGuYdlsiugopcfW7P+mKoJhl9Yr7kHYXSep+364+Pso9+YI0w1KMoprfgbXgX3g3znUMaPVS7Zy4/By/k5/IQWFhozy8srEWabMNaXCnbFiJI4JUvowdswxKvuWcWrvhCm7QRWbpwtx2hzsClBgF3Eo1fsG+O7d+4H/7WLOfOs7T8aqcw90MF8mp3rw7oCd0fW2h/CaONeUOghbZvdW0fx/htjGcOZA4Lr/YYA/1JZ7z/eLMHi33wozfZsX2b9pt9n8V9XscHuwgKXbdzEALNx4pvnS8+thL+aiVSbw0+Bhseyp09m3sIzrTn4UyHphga+RxhDzIKRp8G02LWMlPIj7qaqhhul0kb3tXQiEpfOavphxh0qW9hK1qZQcTBg2KE20FATAJGp3pDNYK02kjDwh2bN+61O7Ppmyeev/WO1aMrCElF73505YbxG27j+VR607oz66azCZtt69jkU1Grdf3oqslqKQOH9F9WZgayCFHOrFrerx9NOvzBenMTr1XLsiJejrCfIdXS09vuvG3DslpKVlrLvjq1ZXLlznqL5LNf3DB98/pizpItbJ6Y3vh4rvDy6MTYbDzJWYIK3K8/5e1NpavN4VdIWNGPtk6sXD1QsGjsQP+INnzZvngGM8Pej97Xz4ygZoyDIuPwSE588KAgwZUVujmo1iGG4Euo1odBjtUoOBMkK9nndAcimyMBt3M2vjyOF1zslAtCIBAPBMChO4PJZLAFB7VgKsWGRMnvFkW3XxKxkT5pdnoOH4I/6ser/fVUAJ4LJmdnk0F9MpBajE+HDZmbKHEXIdXRCFhQY3E0QdIwg4uJ5tEIcGmcEnSs11CVioGhYOMJID0WPtQcbOx0N0NRCMsr1vwB5lBWkgvqkxge/8XHO23eU/X+sgBBm0rARp6w4VbALXpfhwdOIGLwOPsdvGNHcTQs62/3TTvvtFoCtdyQ6sDu5Eter8+tnHKzbK/+r1Yp46+KT2Iw52zi64z9qrwURe2vZMYM77yN2cHs/h9yU0xQjINVC01PEYQxndUgI9DhEp0jScVQRkpSK7WMlavUGllARVQwscoV6tEpa4KTK410Qq58WOKCQ+2XfvkeZhW+bQPMMVH4vj0/PZXns2P9B/j89HTeviJZDoah/TIcvh9gtlVdi5nuUAvOHKLtURfLsw/+aNmND35oKrvUftnKY/P3zgpeHAzuB4/BnL+n/8Yc4fNTOA7gdkvJhseWPfDDydqDv6mntrcOH47ThAdweBYeWPQJeu5Fzz/N008v9YIoVYf3mtPPuLG5oF/g4iMH9q2+4YbV+w6At0s9cnD3zubISHPn7veQGB5Ggr1AP+jvL22sLWlDiZHumurKov1W0lxzNmu0+bgiwnevc+r6seXWJ6eX9qTMrsUCFD9gwMdkpCIowGieYffp54+39INwrHW8NKuH4e3Z0vw8IorzxykaOE5hwPy8yYeeT7swEjO4z0Mcae77BEs3urP+9vO3lOJkPF7SvzfTPHeuOTOFrH4CSf0n9BQQkn0zw+fODc/AycXzeAs5aZzj0QMKtkd/34AyZDeFp0gw17YDemaGeCzfga1HOuVimxe6Z4IqttFP/CVu0VeRJ5AoPAyrFnkViESt7EMdnDaSnk9bjKV72Rm0ew7xJeOLI5BEtI6Zhm7GMLJiPvEhpgkTBDMZ7goGygBFO6qxtOk/Uzq0cW7zNCFJQv4Ulr1LLAalz71LvEU1pGz6/Z1JraAl7sr6Y5xNDmoF+MbAuhBWCYXA4GZRECJIR6JWpXfnMnYPdraQU/rcO8gQrOQUNN4l+n0IX7B9xGDk7PUW+5KTvchoMmrwUVhLOd+/Ffm0Iptv7y8N4wz/G4A9L1cAAHicY2BkYGAAYgWvvDnx/DZfGbiZXwAFojgf72uA0f/////D/IL5DVAlBwMTkGQAAHb/DvN4nGNgZGBgfsHAACL//wezGRlQgQcAdFMFCgAAeJxjYGBgYH6BDf//j8C41AwspgcAANyGMDUAAHicY2AAghkMFxieMTowRjEuYXzFpMEUxVTD1Md0g+kT8wWWdSxHWM1YV7DuYQtgO8EuwK7FXsL+iYOHw4hjD8cPTjFOA04/ziIuJq4YrgPcadxreIR4zHgSeEp42nhm8azglSEdAgCdlRu1AHicY2BkYGDwYJjHwMMAAkxAzAWEDAz/wXwGACBkAgkAeJx1jz9OwzAYxV9oWkSLEBISYsMTC1L6Z2Do2KHZO3RgcxsnbZXEkeNW6sYxOAHHYOQInIJD8BK+oUKqLTk///zeJwXALb4QoFkBrtuzWRe45O2PO6Q74ZD8KNzFAM/CPfoX4T7tTHjAZsEJQXhF84A34Qvc4F24Q/8hHJI/hbu4x7dwj/5HuI9lEAoP8BS86ix222Sm840uFibb59qdqlNeGldvbanG0ehUx6Y0TnuTqNVR1Yds4n2qUmcLNbelN3luVeXszqx9tPG+mg6HqfhobQtoZIjhsEXCP9fIseFZYAHDlz3vmq/nUuf8km2Hmt6ihMIYEUZn0zHTZdvQ8PwmbKxw5FnjwM6E1iPlPWXGsqEwbyc36Zzb0lTt245mTR9xdtOqMMWQO/2Xj5jipF9al2jJAAAAeJxtkQdv2zAQhf3Fku3YaeO6bbr3Hmrr7p3upj+DpmiZiEQKJOWRX18iLgIE6AE8vPdwvHu4a2201tFv/T/22KBNQkqHLj026TNgixOcZJshpxhxmjOcZYdznOcCF7nEZa5wlWtc5wY3ucVt7nCXe9znAQ95xGMynvCUZ4x5zgte8orXvOEt73jPBz7yic/s8oWvfOM7P/jJL36zx5/WQBSFU4UI2pqOcM4ufFt42ZHCSFWmciZcGMqZkvsTu8wOgcp3jgRtchWUq7QRQY2O5Mb8q9yStrQuq3UkrhtJUxnfl9YEJ2RQeSJtvUqls963pZ+n8WXjJFdepmoZDXQPczbuqWUt4qx8U61U5kvhZ+2IOlNdxvHpVDsfksLpOi2cbeokFoSkVNPQKbWJPrqlFbk2Ra8SS13pA5VUyjS96HvNjDVqYGzIRFnahcrTOjZQ7VqbtNZzG4YufrfZpAnBmsxOp9vHBZM6XcxC4sVc9X0Vu2S5XZjeGkZDIW5gFJxSx1fWa8zaIIIChyKgsRgWeCQlM/aZsIwnzqloqFkxZ8pBq/UXq/Gj5g==\") format(\"woff\");\n font-weight: normal;\n font-style: normal;\n}\n.ag-icon {\n font-family: \"agGridBalham\";\n font-size: 16px;\n line-height: 16px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.ag-icon-aggregation::before {\n content: \"\\f101\";\n}\n\n.ag-icon-arrows::before {\n content: \"\\f102\";\n}\n\n.ag-icon-asc::before {\n content: \"\\f103\";\n}\n\n.ag-icon-cancel::before {\n content: \"\\f104\";\n}\n\n.ag-icon-chart::before {\n content: \"\\f105\";\n}\n\n.ag-icon-color-picker::before {\n content: \"\\f109\";\n}\n\n.ag-icon-columns::before {\n content: \"\\f10a\";\n}\n\n.ag-icon-contracted::before {\n content: \"\\f10b\";\n}\n\n.ag-icon-copy::before {\n content: \"\\f10c\";\n}\n\n.ag-icon-cross::before {\n content: \"\\f10d\";\n}\n\n.ag-icon-csv::before {\n content: \"\\f10e\";\n}\n\n.ag-icon-desc::before {\n content: \"\\f10f\";\n}\n\n.ag-icon-excel::before {\n content: \"\\f110\";\n}\n\n.ag-icon-expanded::before {\n content: \"\\f111\";\n}\n\n.ag-icon-eye-slash::before {\n content: \"\\f112\";\n}\n\n.ag-icon-eye::before {\n content: \"\\f113\";\n}\n\n.ag-icon-filter::before {\n content: \"\\f114\";\n}\n\n.ag-icon-first::before {\n content: \"\\f115\";\n}\n\n.ag-icon-grip::before {\n content: \"\\f116\";\n}\n\n.ag-icon-group::before {\n content: \"\\f117\";\n}\n\n.ag-icon-last::before {\n content: \"\\f118\";\n}\n\n.ag-icon-left::before {\n content: \"\\f119\";\n}\n\n.ag-icon-linked::before {\n content: \"\\f11a\";\n}\n\n.ag-icon-loading::before {\n content: \"\\f11b\";\n}\n\n.ag-icon-maximize::before {\n content: \"\\f11c\";\n}\n\n.ag-icon-menu::before {\n content: \"\\f11d\";\n}\n\n.ag-icon-minimize::before {\n content: \"\\f11e\";\n}\n\n.ag-icon-next::before {\n content: \"\\f11f\";\n}\n\n.ag-icon-none::before {\n content: \"\\f120\";\n}\n\n.ag-icon-not-allowed::before {\n content: \"\\f121\";\n}\n\n.ag-icon-paste::before {\n content: \"\\f122\";\n}\n\n.ag-icon-pin::before {\n content: \"\\f123\";\n}\n\n.ag-icon-pivot::before {\n content: \"\\f124\";\n}\n\n.ag-icon-previous::before {\n content: \"\\f125\";\n}\n\n.ag-icon-right::before {\n content: \"\\f128\";\n}\n\n.ag-icon-save::before {\n content: \"\\f129\";\n}\n\n.ag-icon-small-down::before {\n content: \"\\f12a\";\n}\n\n.ag-icon-small-left::before {\n content: \"\\f12b\";\n}\n\n.ag-icon-small-right::before {\n content: \"\\f12c\";\n}\n\n.ag-icon-small-up::before {\n content: \"\\f12d\";\n}\n\n.ag-icon-tick::before {\n content: \"\\f12e\";\n}\n\n.ag-icon-tree-closed::before {\n content: \"\\f12f\";\n}\n\n.ag-icon-tree-indeterminate::before {\n content: \"\\f130\";\n}\n\n.ag-icon-tree-open::before {\n content: \"\\f131\";\n}\n\n.ag-icon-unlinked::before {\n content: \"\\f132\";\n}\n\n.ag-icon-row-drag::before {\n content: \"\\f116\";\n}\n\n.ag-left-arrow::before {\n content: \"\\f119\";\n}\n\n.ag-right-arrow::before {\n content: \"\\f128\";\n}\n", ""]);
58610// Exports
58611module.exports = exports;
58612
58613
58614/***/ }),
58615/* 301 */
58616/***/ (function(module, exports, __webpack_require__) {
58617
58618var api = __webpack_require__(276);
58619 var content = __webpack_require__(302);
58620
58621 content = content.__esModule ? content.default : content;
58622
58623 if (typeof content === 'string') {
58624 content = [[module.i, content, '']];
58625 }
58626
58627var options = {};
58628
58629options.insert = "head";
58630options.singleton = false;
58631
58632var update = api(content, options);
58633
58634
58635
58636module.exports = content.locals || {};
58637
58638/***/ }),
58639/* 302 */
58640/***/ (function(module, exports, __webpack_require__) {
58641
58642// Imports
58643var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58644exports = ___CSS_LOADER_API_IMPORT___(false);
58645// Module
58646exports.push([module.i, "@font-face {\n font-family: \"agGridClassic\";\n src: url(\"data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABXwAAsAAAAAKrgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAAmMAAAR2Zoxou09TLzIAAANsAAAAQQAAAFZWVlMSY21hcAAAA7AAAAIbAAAFnIlT7KJnbHlmAAAFzAAADBkAABg4HeN0mGhlYWQAABHoAAAANAAAADZ2z8SBaGhlYQAAEhwAAAAeAAAAJAfTBCxobXR4AAASPAAAABgAAAE4yyH/7GxvY2EAABJUAAAAdgAAAJ5JCULobWF4cAAAEswAAAAfAAAAIAFkAKpuYW1lAAAS7AAAATMAAAJS8kTiWnBvc3QAABQgAAABzQAAArBhTs2TeJx9lMtOU1EUhv/DaREoAlG8pCIiGi+oiMrxXHpoy6WH1tbEgTEOnGBMjAlxxHP4AD4BQ5/AB3DgE/gADhw6Nn5r9WCFAey03Xtd/vXvf62NAklTWlNTYzvF4KVm9vcOPqquioZ/5v9/H+x/eL+niaMTvor/TiioTGtGy3qtA30LZoKD4HBsPqyHr8J34efwS/hLIVFLWiW6pqesWAnfkVJlaijXmMaxxew34BOymmq59RyMqu7pqqfL1IzJ6Tniip7xmQOncJyOtolKWYbZ4XvAuqfZUyJy3Qc/g80m1gqKLKJJrnlNgp4Q01Sb/Cb+89TcoXaEv8BXwK6KpcW+rQtwsoyKq9rVGz3Bbzc1lKzMSfnE2vVz5Kc1NDmKaoHToJZhr8LgyN6gakLGY9AzorZKRVd0k+wGOB3Q2p694dnLRCZwS3WDnd0zges08Zle6K1X3S1zOq7pUIFV2I/shePlenjM2gZrQOwjOIys1p8H1IrUx1+jV4X29UmH+qrv+qGf+q0/OqOL1En8Dtug75yqzQQKnozu4m39s9pdx5mBk1HHIya5ecPVifH1Sg2tWo2bmTop+whr6vFT8LT4Lmxy+lGhRuR1rdNV1ibnmOiz5XQ2WdOudI8pmPUJ7vss1HWHvi064nAOc7S+CqLthvyuuG5N8Ba8b6auvbA5P9lbsH7XmdVr/EbcMHOdnuO9jsWQRpYlz8phbxjr+HNYj6oZqwVYresuPpuxvr+OLpVucZ8hk4QIexl9n6/bMMjKlzpPD419u+zYJY+LPSvgP0FUvvDUtbOZLuBm8zH4C3G+c6UAeJxjYGSazTiBgZWBgamKaQ8DA0MPhGZ8wGDIyAQUZWBlZsAKAtJcUxgOMOh+NGJ+AeRGMX9i4ALSjCA5AOaCCwgAAAB4nLXUB1IbQRCF4V+BLMA22eQcBQaTcxAiHwJnCgcKZ87hs/kefQL8Rt0+AK7yVn3bO1Or3ZlavQaqgJzMSB6ytWR0RSar2UxlPkd9ZT7Pb40L1JLVdZErbrizhft7zRa55Jpby1RGf4+M7i7QwxjLGh2yxAE7lFnlXDN7rLPPLkdsssEJK2yzxjFnbFHilAv9Pq0irzVWU6P31mklDXpiI0084jEttNJGOx100kW33tRLH/0MMMgQw4wwyjgTTDLFtHZSZJY5njHPgs7PNVrUIqt52HH4wPvTsXSwU149X97TjnePNje02e2147Ot0unFPzzsPxyFdMr9itEZ6Yu6tNvLsCQvwoG8DDvyKpTldViVN+Fc3ob0b3gX9uQqrMt12Jf3YVc+hCP5GDblU9iQm3Ait2FFPodt+RLW5Gs4lm8h7f172JIfoSQ/w6ncBX1Ay7iUF8s6Us25lC/Lu5Qxq3Ipe1btSLXGkWqtI9U6R6r1LmXSGhypFlz6ktboSLXJkWqzU3awoBRhQXnCnjglC2txyhjW6pQ2rM0pd1i7UwKxDqcsYp1OqcS6nPKJPXVKKtbtlFmsxym9WK9TjrE+p0Rj/U7ZxgacUo4NOuUdG3JKPjbs1AOwEadugI069QVszKlDYONOvQKbcKkv2qRLebApp96BTTv1FGzGqa9gRac+g806dRxszlXuCepC2LyrPHPBsfgHpKymyQB4nO1Ye2wUxxnfmfXt3t57d+92zxycvXf4FkNico+99QMMGOOzcWzTnIMJaQ04GMWYRDEESJqktAElJErSShFVqUmAqj0XmlQFI+XRBxKpGleRGqePNKnyKn+0Sdq4pHXS6uRb+s3eww8ooPSfVu3Zu/P6Zuabb34z3+9bClHwo5P0IMVRFFJkVvEpIq3QSWN4717Un7v/9dfxAfzT8fERtBftBRFT/n36faoSChqr6jKr8oqZ6ApvJjKvmAmroHNdqbGxlnWIXgdpap2RW9cCaZdhkPpUF8J0JdcFVS1dlzblu1LFOdfTj1FWKLAqBw8fRt9+th/1ob7+Z47jXc9uRX3G01ufyX1YlMcTeIKym/KgC2gD+uCJljOjqTNnUqNnWkbRqmJutOUMZaGoiwas6wNKpMKUSi2hllKURQnVII1PNKK4EgsiH+91IVoJMZCRoCYJTREU58NVcV+YhpTenhOV+lCoXsEfwUupV3Iej9/vwRd4Wc59N51GHen0SHc3DtWF8Mfwgv+cG17012U+x/N+P4//wsvGqPF2JoOOGZth2bP0WgzrKSoSnlbOMkcnFsF6RZnebioRKik1MUOdAWPi74kT59fSHxSVKCp180xdXjRsP1t1EB1dRM3VRb02XWhFU66oyO+N06jzKloYzgzZ0lnzX9vsV5r5KpOS9cKi76G3AjqslJ+iAHgyh2i9AjEs/Pm8EsySUCMq/pOxqf42I4cax8Ze/oHdXu6WomuikrscnUPHG6DBeAktHxtrdDqDgUh5KBoNlVfND5LhGXOOQ/QhmI0FvLphbTJFVfnAbPDQc1J03DhNNxmnM7OS7Aj8UEcGfqiT5KmC7h8UbLX02qyFAMe+sBbW4lqcHgwRi4Hl8hYkljMtQyxnvDJi/vIWFAoWnChYUAQJHn8E23aGqDRCUUV9mugmc5U86BPnFS0MN4XCK7Sm8HEND2cMRwZNpo1R1DFijKbxsFnOQvk4VGap0l3wAP0AOdscgu1gOQQ3go4mkbDHmDBfxsQeJMALb59VRAIU8za/OEXfSf+Z8oB1FlCt1Jepp2DoCOykZYZF6LCGQEFGlhqQWOV14XCopkxLNOI4saWXCUXUGhSGDt4giiX1RhSTZGLgEFRriWQsSMcJPmqQWoOJuWNBXOiU71OBJDmI4WZK6tFGsj9enxu5MGzPUhq6S/Qd7La7LEanqusqTqp6y6jRhB7BiLZ4foeNTZwQ9Hpkr8dmcfoVUV4o2pzWMqvXLc93yJUSg60u2ykhJC3gnR7OZWWtbgcv2QWPN8ALFZLg5602J1tmcQcFxm4RBLtTsC1bshjT2Gq3WrCGWZvbweA4jWyCFf/RuudBC65Vp141lXlkfOpR+p7flHN87mu/dVQERasQqKzyhbSId74qcG6b0+dNxCqXSH6/ze1yl1dLbnuVYHfZy3mHLLh4K8OKSk2V6PT5fR6b3S2ITs7O0SxrYcUFT/zwR5ydsbFOm4X7Nee2ci7uF27O5hGo/+/df/XeFf34QdOP83FgC+TgfufYM/3G08bT/ehe7MpNQuEo2tIPomVz9rrtqvusQ2skkYzHpAq0ApNtk3xeN5Jhe1woFFmKWAKEiJa48vZcf0s7x1q8bl70LFtpczFOq1v0dXY7bJzgFco29JRxPNRcybBj9w66nHbJI/o3bnQLFovHwS+44163T3BxHLPvi4yV4d2mTf4X1vjZeAPxelfy3k8YjquxhtFMZtr3vEzrVDkVpZbB/LqcjEuyJLvAoQM7RMkVSAuHwKerYg1WGTaIZEmXGWJp+EuCgGl1FeSRkoisaHr4vqEN1Xc0aqsqXcYva9pVW+OS2uv3/SH5+WW25kT0sc7052Jf2LhlfWPd0tjG3eiNdS0uQQoq9obraNeiG4Sym9r3L7890hxfZEf7bBilLYwrYLzN1G7QYq3Nt0l++8r5Ni5R1Rhb+9CNxuForyjLFfPi3YHptcjgQxdRSVgLWYdJRwq6JiFP6iS9qDS5ldSqyHIUJnIyiOhoiqyga8/9D371fqLkLbu+cldzYmVv3+13bV6/1lTW0XL73oGUDa1Ftq5kKlm1KBlZRvvodPuDezq6HI61keWx9gPtN5+MtW7QaxlGj20VZamyvPbWRLK3nnbOX4ys9nntXiuLqTx3M3nODuBSEGmICuJVLeqLa2mTx2ToQWC9m0ay3d0FWTwF/J02oxI+zAOhVVkZrUhjz0sv1WazeMJwoEmj+dw5KBBxR4FfnJ3FowJUxTSb14HdFB90lbwCHGgkk8ma/8BC/lUOHctkxjMm8Tp2aQIqWQrrPgtnW6GqqGrqesJ9TDIHXKtA60oPH9YUFPZBLJF/quBBx4HVgY2A4ZGUsCMz3dyNOgvTmerQg2kwXyadhSSbxqlsTkij493AndLp/xg95uxtVZiPIxKdsXgqnc5dMDc3O2Nn8z7jGL3e9BkykD0SoqJtJ/Je4iSuR8dO5OPAk4Ro4oufXvyU/hv9VypBDeZPB+MmdB08txrR4aCDc5bztS4UxFDRiIhb16IRkoUmcv+yZjORk+MS6aQm1CgRM+WDuNgM5AEa9aQawV+q83oX1R6o62y/sWOnF351rbZyAWEelzHlAa+gtbUF9s8XxADnx+XVVskmCUis67ixvbPuQO0iEBd8yCZZF/ux084FRDGwP9DWpgneQDlTBoMgodzWWkfGhZk62w/DTKSw0xyglfO4tJhVYOYFWtuSXjFwINDaGuB4T8hfbcWMh8xkqnSg9jCIC24WW6v9IQ/H2ojggYDoTba1BuYxgjWmuTxcq7mKmef2EJymCvPmZOF4wKUJcQLcnHBMYPMgWojrmhpmfTh1eM/hN96AV6aU+cajfX2P9uEfz6okmdzzfaTJ9IEzY9zoNUberBnUIx3ucFm/cuz90bup6HDtEfR26r3oU7VPXSUAzzWm3rnhCIg/8F4qCmnJh0zHaWaEhgoPfWjqJ3RT/snmIzEShxX9+2dZm25+toAlkovvymu7753UDUf0YZRIvUuUvtrasoW1PQkmOaIfKX0veRzOpIXsMDmN6FbzJKJY8YLNn8MA/SvKOf0NxuRvMhoe6EcqUvsHBvqNN403+wfwqe1QA7ntxkPboQ7athd4wEWwxYeUl1pIxQkPICfMQ5xXJXFVHvBMSQs5s/EYyZLYeik5jqZvBt5NTufkwbuHmtasaRq62/h491BTc3PT0G40nnsuuaopNbRlk14ny4vbtFWrodBbW+eXF9MfgvBu48LunUR4527kgW5rPsk9t1iW6/TevqFU08pkW76wZai1aVWyhPsmehB2252PViFEjcvkpoSoldxq27KZkbRxOo0maX+uHw+nR8j992/2RaU4GUoozMthVg3r5DrGE72nsul09lQvmgT3NzaQzQ6g2nTex5QwpgArqKVWXB5lhOSYMGsAn6pZIPIm7DL/Dc881OR0i8QBkC8nczCXu3Mfwdy+EXpl7kUc5OV/OBuGhhocZx1msmM8dx63yJegD1/I5OGHU3DBv+Dn0TLHjH5OnMp8iZfnYND09vjxORjEM/BTDVImKDwEQpUELR4CIdaElJe0hEyiTFrQ5MMlpLiL6DlogqVO37TlPAAFfr1bLo+Umwkuzvf1EuHePhDW62ZjudrkYZfDsmyqSGArmYAm34oiIuHpNShhho2XhfPDQ0WNzhd1fGT1roO7Vpuva9bS2Nxc6LJ613T8dbTgS1Wdg0fR8P7v9aMtxtH+E7mf49TJfCh2YqSE40HAsZOSCA8DWlC6oyyFT71xAPDz6WgIt4aixuiO+vHx+h3d4MDfQguNt8iXLrRw/o6G8fGGHejJaXzjYTI6sMAR/E1jFA8bp0v30DBgH5NvOzzhF2gSdeS2zW3DeepBrwLSODpnTA4RgtKRlyi0ZegUwRUHATuiM7nXjFf2nEUv4NdyryFtN+Sm9WolO0uOACiW2wbgJNUlThGmUlQP3P2Sdy6nqECkrsAokjGZlmIlpsB4obXAE0gP1qyTEcEDioTyBSmGb2LZnhn0oYcV2U6G2QBcgDjnHtbLhuDpIS4e6MEGhukEiZ4ZNKCHZbH/Opdr6luuiAtSutcVefVSmY7Zo6Dvz56k41I1pj65DkaE4WBU1QnD/xPnjHQ0AAAAeJxjYGRgYADiY81JvPH8Nl8ZuJlfAAWiOB/va4DR/7/9/8b8mfkTUCUHAxOQZAAAhKEPOXicY2BkYGB+wcAAIv9/+/+V+TMDIwMq8AMAnl4HBgAAeJxjYGBgYH5Bb/z/Gy3NZqADAAB/FDOneJxjYAACCYYghiyGFoYLjGKMYYx9jAcY3zCZMEUwVTFHsJix+LEcYDViLWK9wWbC5sWWwraB7Qu7BXsAewaHAIcTxxSODZxMnCKcZpw9nKs4T3A+4nLhCuOaw/WNm4/bgtuNO4Q7ibuAu4V7Eo8M6RAAslkbZAAAeJxjYGRgYPBjmMfAwwACTEDMBYQMDP/BfAYAIQYCDwB4nH2QvU7DMBSFT/qHaAWqBGJgMgsLUvqz0bVSs3foniZ2miqNg+NW6s5z8AQ8R5+Dp2DmxHgpErUl57vfPfcOATDECQGaE+DGvc1p4YrVL7dJ95475CfPXQwQeu7Rv3ru4wULzwPc4Y0bgs41zSPePbdwiw/PbfpPzx3yyXMXD/jy3KP/9tzHKhh6HuA5UHEWmTydF3Fd58lSZvsiNmfurFhJU+e6FJNwfOYjWUoTW5mK9VHUh2xqrRLK6J1Y6NLKotCiMnorExturK1mo5HyPkz0DjEyRDDIkWKOgnXNmyPBEpK9vXPmQu7/zoobjGONEgIT/vfxhXzEfOlmYlh+U86sceRb48CpKa2FYq2Y0diRFm53ky54NU3leluahD7Exk1VmGHEq/7kQ6a46QfFq20TAHicbZIHb9swEIX9xZKt2GmTpm269x5q6+6990h/A0PRMhGZFEjKdvLry9pBgQA9gIf3Dod37w5sLbUW0Wv9PzZZok1CSocuGcv06LPCAQ6yyhqHWOcwRzjKBsc4zglOcorTnOEs5zjPBS5yictc4SrXuM4NbnKL2+Tc4S73GHCfBzzkEY95wlOe8ZwXvOQVr3nDW97xng985BOf+cJXvvGdH/zkF5v8bvVFWTpViqCt6Qjn7NS3hZcdKYxUVSpHwoU1OVJye8vO8jlQxca/gjaFCsqNtRFBrf8rN2avc0Xayrq81pG4biTN2PietCY4IYMqEmnrnVQ6631b+kkaXz5ICuVlqmbRQHee80GmZrWIs4pltaNyXwk/akfUGeoqjk+H2vmQlE7XaelsU3fnOSrFxpBUahg6lTbRT7eyotCmzMZipsd6VyVjZZos+l8wo2YhMdaovrEhF1Vlp6pI66iiuvOcD9q1NmmtJzZktVMTbRu/5qKozbeaEKzJ7XC4ur9gUqfLUUi8mKieH0fZvLBTswf/2usv4LwtW+CmTkI823pwSu2/c9aYxTYIShyKgMZimOKRVIzYZotZ/CMFYxpqdpgwZLfV+gPpZLiDAAAA\") format(\"woff\");\n font-weight: normal;\n font-style: normal;\n}\n.ag-icon {\n font-family: \"agGridClassic\";\n font-size: 12px;\n line-height: 12px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.ag-icon-aggregation::before {\n content: \"\\f101\";\n}\n\n.ag-icon-arrows::before {\n content: \"\\f102\";\n}\n\n.ag-icon-asc::before {\n content: \"\\f103\";\n}\n\n.ag-icon-cancel::before {\n content: \"\\f104\";\n}\n\n.ag-icon-chart::before {\n content: \"\\f105\";\n}\n\n.ag-icon-color-picker::before {\n content: \"\\f109\";\n}\n\n.ag-icon-columns::before {\n content: \"\\f10a\";\n}\n\n.ag-icon-contracted::before {\n content: \"\\f10b\";\n}\n\n.ag-icon-copy::before {\n content: \"\\f10c\";\n}\n\n.ag-icon-cross::before {\n content: \"\\f10d\";\n}\n\n.ag-icon-csv::before {\n content: \"\\f10e\";\n}\n\n.ag-icon-desc::before {\n content: \"\\f10f\";\n}\n\n.ag-icon-excel::before {\n content: \"\\f110\";\n}\n\n.ag-icon-expanded::before {\n content: \"\\f111\";\n}\n\n.ag-icon-eye-slash::before {\n content: \"\\f112\";\n}\n\n.ag-icon-eye::before {\n content: \"\\f113\";\n}\n\n.ag-icon-filter::before {\n content: \"\\f114\";\n}\n\n.ag-icon-first::before {\n content: \"\\f115\";\n}\n\n.ag-icon-grip::before {\n content: \"\\f116\";\n}\n\n.ag-icon-group::before {\n content: \"\\f117\";\n}\n\n.ag-icon-last::before {\n content: \"\\f118\";\n}\n\n.ag-icon-left::before {\n content: \"\\f119\";\n}\n\n.ag-icon-linked::before {\n content: \"\\f11a\";\n}\n\n.ag-icon-loading::before {\n content: \"\\f11b\";\n}\n\n.ag-icon-maximize::before {\n content: \"\\f11c\";\n}\n\n.ag-icon-menu::before {\n content: \"\\f11d\";\n}\n\n.ag-icon-minimize::before {\n content: \"\\f11e\";\n}\n\n.ag-icon-next::before {\n content: \"\\f11f\";\n}\n\n.ag-icon-none::before {\n content: \"\\f120\";\n}\n\n.ag-icon-not-allowed::before {\n content: \"\\f121\";\n}\n\n.ag-icon-paste::before {\n content: \"\\f122\";\n}\n\n.ag-icon-pin::before {\n content: \"\\f123\";\n}\n\n.ag-icon-pivot::before {\n content: \"\\f124\";\n}\n\n.ag-icon-previous::before {\n content: \"\\f125\";\n}\n\n.ag-icon-right::before {\n content: \"\\f128\";\n}\n\n.ag-icon-save::before {\n content: \"\\f129\";\n}\n\n.ag-icon-small-down::before {\n content: \"\\f12a\";\n}\n\n.ag-icon-small-left::before {\n content: \"\\f12b\";\n}\n\n.ag-icon-small-right::before {\n content: \"\\f12c\";\n}\n\n.ag-icon-small-up::before {\n content: \"\\f12d\";\n}\n\n.ag-icon-tick::before {\n content: \"\\f12e\";\n}\n\n.ag-icon-tree-closed::before {\n content: \"\\f12f\";\n}\n\n.ag-icon-tree-indeterminate::before {\n content: \"\\f130\";\n}\n\n.ag-icon-tree-open::before {\n content: \"\\f131\";\n}\n\n.ag-icon-unlinked::before {\n content: \"\\f132\";\n}\n\n.ag-icon-row-drag::before {\n content: \"\\f116\";\n}\n\n.ag-left-arrow::before {\n content: \"\\f119\";\n}\n\n.ag-right-arrow::before {\n content: \"\\f128\";\n}\n", ""]);
58647// Exports
58648module.exports = exports;
58649
58650
58651/***/ }),
58652/* 303 */
58653/***/ (function(module, exports, __webpack_require__) {
58654
58655var api = __webpack_require__(276);
58656 var content = __webpack_require__(304);
58657
58658 content = content.__esModule ? content.default : content;
58659
58660 if (typeof content === 'string') {
58661 content = [[module.i, content, '']];
58662 }
58663
58664var options = {};
58665
58666options.insert = "head";
58667options.singleton = false;
58668
58669var update = api(content, options);
58670
58671
58672
58673module.exports = content.locals || {};
58674
58675/***/ }),
58676/* 304 */
58677/***/ (function(module, exports, __webpack_require__) {
58678
58679// Imports
58680var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(278);
58681exports = ___CSS_LOADER_API_IMPORT___(false);
58682// Module
58683exports.push([module.i, "@font-face {\n font-family: \"agGridMaterial\";\n src: url(\"data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAABPwAAsAAAAAJjAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAAmMAAAR2ZOVnMk9TLzIAAANsAAAAQQAAAFZWUFMDY21hcAAAA7AAAAIRAAAFnH0V34BnbHlmAAAFxAAACj0AABO8Q1oUYmhlYWQAABAEAAAAMQAAADZ2zsSBaGhlYQAAEDgAAAAWAAAAJAfRBDVobXR4AAAQUAAAABIAAAEww1AAAGxvY2EAABBkAAAAcwAAAJoHSQMCbWF4cAAAENgAAAAfAAAAIAFfAKpuYW1lAAAQ+AAAATIAAAJebBQ2inBvc3QAABIsAAABwgAAAqTvU9OHeJx9lEtyElEUhv+mm0gCklSMGjFq1PhCjZpO09DhYUIHAjpwYFkOnMSyyrKKcsQ6XIAryNAVuAAHrsAFOHDo2PK7h0ZMBuEWl3vP4z//eVzkSVrQY7WVS3vPX6o8Ohx/VEWBJh+n///sjT68P1RhekMX2G9BXlBSWTf0WmN988re2DvKrfgV/5X/zv/sf/F/ycdqXZtYF7XNilRjDxWrroYS5TSHLOK8oybWPnvLpMswypump74uETPCp2+IVQ11R0vgpIbT1S5WMcthdtmHrLtaPMUi0T3w67DpIA2oyFVq0tR5zesAll3Obfyb6M8Rc4/YIV4puhR2eSQtzm1dgJPzCKyqB3rDvmyZOpR65hPzjbRv99BuRdbUqgVOg1gO+wkMpvIGUWt4PAK9jtXTrKJV3cS7AU4XtLZ575h3Ecsa3GL6ElieNbiWtMHphd7qIRb7mU/XajqpwH3Yz+Sp4SV6cEzaBmuI7SYcZlLXnyqxQg0sq1UkI33Skb7qu37op37rj85Qpw56l8Mu6Hun1qZABU9a99C2/kldrnPMwEmr4xbzZN6w6kTo+lkNXbQimbnqxJxDpLHZL8DT2fdgk9CPgBihxXWdzrM63COsz2bT2WSVrNJ9er9oEzywWagwgVtMlUOczGFCra+A6E4Tfpetbk3w1qxvrrruhS3Zzb0F1+8KfbjGb0iGdavTM7TXkTikmWTdvBLYO4wt9AmsZ9EcqzVYbdtEuxkb2OvoEWmDfCZMarptL2Ng83ULBvXspa7oorFvZx1bNbvIvDz+CcLshcdWOzfTKdzcfAz/Au6DcHUAeJxjYGSaxDiBgZWBgamKaQ8DA0MPhGZ8wGDIyAQUZWBlZsAKAtJcUxgOMOh+NGJ+AeRGMb9hYAHSjCA5AOMfCvMAAAB4nLXUB1IbQRCF4V+BLMC2MDknR9kgBCIHIUDAKXCmcKBw5hw+m+/RJ8Bv1O0D4Cpv1afeGa12Z7T1GmgBcvJU8pBtJ6MzMlnNZprzOTqb83l+a1ygnazOS5xzybWVb240W+KMC64s0xz9PTK6usAo86xotM8Se2xR1+iECjussss2B6yzxhHLbFLlkGM2qNHgVL9Pq8hrja206bkdWkmX7thND3e4S5E++hlgkCGGGdGTxhhngkmmdN00M8wyp6cXecBDHvGYJ9pPiWc81/cLLFLWIlu53bF/y+vTsbS3VV85qexox9sH62va7Gb18Hij1jj9h5v9h6OQPnK/YpQWVQppt2dhSV6EPXkZtuRVqMvrkN76m3Aib0NF3oUdOQ+rchF25X3Ylg/hQD6GdfkU1uQyHMlVWJbPYVO+hKp8DYfyLRzL97AhP0JNfoaGXAf9V5ZxKS+WdaSacylflncpY9biUvas1ZFqmyPVdkeqHY5UO13KpHU5Ui249Cat25FqjyPVXqfsYEEpwoJygt1zShZWdMoY1ueUNuy+U+6wfqcEYgNOWcQGnVKJDTnlExt2Sio24pRZbNQpvdiYU46xcadEYxOuud9Jp5RjU055x6adko/NOPUAbNapG2BzrrnfeacOgQX1Ciyoa2BB/QML6iRYSL3TQsqMBfUZLKjjYKG5/gVHqouOVMuO8h8D8KVRAAAAeJztWH1sG+UZv+e92Ofz99m+O3tN7NgX+0qTGsXn88V2miZN2mSMpJ1sOvpFCqwtkNK0UAaFRTDEpDJGizTCH6BJoEmONAkGyz9lQy3qQHRC2lzRMQl13cQ/JIxFRYpAMvVtz3ux04ZmjP2JtuTe9557P557Pn73Ps9jBhj8IwvsJsbFMBAXPSDG9bihxsmC6Qaf+SksmhfPn4cOdqBUq5WmqlWGaaF72NfY1xg742FCzBrcqemaymmconOyriVVURE1UVVERTYUeKkyefbsZA/tyPDZyckZ65k8iv0MpUpnJyuTBlLI1pKH3YTyOBgmKBuCJsgGzBTmy3NFcxYWi/OmDb6YL8Ioim2tnWanUYZ23Jrg7Jw9JEuylDFyRi6rptRUkFM51VAN2ZA5WDxy+7iRzxvjt3/YJMYLzz1XmJ62enZ6xZRF1H/fnMWevs56Z5gNI8VRmwU1QaHN0ESlOjX18dGj8w88QO42D5CR+qlazTKvtWeOnWOCTIRaOeEFUQhFQYtn+kAXsmngwZBBZo9d+SyqRfFinda9vmB+PHYOKmPsHD6vmLzyGUhj70Bl60r+8ur8WXTqddyfrl8gXddzrl84fC1P1uIpxIXkanyRJ+v8Et+lwckv823Y7iH2+4wNvRtmGB44mQfWiIGduk4MSZmcTt1G/m6OF+4069B37tw7r7pcEZ/Uvblb8kXgLLxUxAnzd7Dh3Lk+jye6JhVJdHcnIsnWKGXPL+NnyT8+yyZrmBijUF/pCm0cNh2bjM0QNd3WGBewzVQqNetq3M29jSfyQqW+H+/lSmMAZ/BqYpacJAuoF4MqcYjYZwunTxdqZKF45kyxtoybx9gzluatlpfsIqI7LltESEKj5tCmKTYuxMmrplvpLsPilKlT7eBd2ps6vMue7k7UXyfDpW6l/jodJMNKd30fGV7+dig26beMuLdEkQ2VDRfn55sX+cs1D/gFM/+8wh5iP2H8aKk2ZoR5jPk57sZPR7VdIxir6IgB2S5LRQgmQ16iJNIteraPaJkoiCF7IqWmQcENCI9MzuiDjCSHvDiCw3o2l4myGvVtGtQ0yfYB7iKNTUt7YiDJUYLC5oxu3ByFkOgDL0mk4UYWt0vsvdz+wzZzTDUMleRUY8usuQmeJMDa/B8Qc5wPREN+OeR32jzheFDuCDo9jhZHyCe3uuV2yU4cXudrgYTUJnj8vNfBOXxuQXIF/KE1QiAmBcKCw+nhWmy+aMDusgUCLk/A2du5jrDE4XLYiE44p89tJxoLzoCDfOT4weM20qNe+aMlzJPVKz9hH/pThBfqz/zZHYsGHYE17UkxoadCrWqA9zk9Yiibae+UwmGnz+uL3CD5XMmAy+uKCG454BUcdi4YTyeDHjEs+p0uXyDo4V08y3E2Lth24rdv8C67k/M4bfwF3ufgvfwffLzTH6Cu/r/vvrm+WxHn8FsVFEHlgB2wAh2M0kAHX5i2eQx6NN6u8PO3/6OPDRr6sjktI8VgI6Euk8SQD2R0jRcSqRuBoyBI6dmvds36Hd/hOVvIJwT9vf1Or93j8AXFsbLbyQdCgZZbv9fCCzjyVUY9d2zC63FJ/mB4505fwGbzu4W2e4/5xICX5+2PPmx32AWfZY//BR1Xxgk8nZHRiUKtVjhNZou1WvHMMi52kDmmiA9p1MDOqagkqiV7AUlDwQFFtqNqqhLFT9igNH6LOCXbOY0ulmTyLJceUuNFeXTHgW0jW+5plW/pGUvyg5ywbmzIwcezjkFu/Wa1o314cATnJ1pT393FtzxxQ9va9ixPhOQGJSKNarHYoeENd8RHk1o4sG4zqLFUn+Lb8i06vLd/dzC0tjUV/YbKzC7LHMDcYK2VPaKsKDEmj31goGwpFk+w7NKB5gU2YafpSTYFi5ZwrfdsGXkRibY2JLZ13dTVddOttOtam89vy+fJR/SNw4disebdnGiswA5YumZbvinHBGKikU8mMQehOThgxoaZc8W8SBbqJzELd9dK8FKpZF4sL+eU5HMLSzxFk4F4AsxDyedvvolgMvVyGXSafNTo3kY+t4kcsd5DM/24jeaEA/X95PlGO1KaKTXiCq69jXUi5WQERsSsNUb3oBk6gQpn0MAR14NWFoWZv0LDAhkGCdO8GZDMj2eQMN2T9O8STQRhlHZjhw9fwvtk/cLk5GE6fJ0eQZqxqHHU41NLDXiwXCazlhqoxHXnJhYqmDmrqMbSUQmj9Ngk0fmCOWvOFuab9p0mb2ONEGa68A0oahF0BXNZDF0WlQYZTZHEkmXJ1Z2AVB9gwPtFolepVPJ7e3r25isVpTfxSxgzfw0PUlpRludgUSkqW3vG7xvv2aoUuXIF+y10ZO+R8Z5mLu1Ee8qWHbEUwWJB5rBK0rE4oQY0sGpiNUNXFU4kXfu27n/mmf1b9x1eJvbvHhjYPUAeXjFICfORATrVsMsEO0E1DqJ3pxA2AXaixKyCMQPVtf7Rh9a6pYblXblaKjXOqQXmPN1pIC8LQlULG6vyEhp4naLrmvyuwpW9pk6LM+l/U6lBlpL0IIA04AGuAk1O6MLV6jZz0/qum0d35e/qNNcnOmAUCXgv0UEHVyvjzPFdozd3re9ImOs77zI/6UjAe5135a2xpk4HMTeX0D8qyqfQ1IZTVibmSjwj0bwnm4O4oKHKGhv+lad/W7/3FSsRH7Fy9ItCJJKIRECvnyrDi2V2IplOJzFn32eteSHRHVbCeKGNXpiaamKjn+1DKXy0elCNIFiZO61ZVdj1lPrUX6ErGr3cu/3yLb3HopDDEfibeSEaPdZ7y+XtvZevqXtoTb5U7yioR5rJMDmmgGdKHDGOKvTRyi1KazgvAMId9Ygnl16FyBO1pFUsy3SKfg0GNnpAxLS2Ni1Gnrfu9X9UKujmIXjD/HDjRvXAAfV9HPhE7d+49sABM4S0dOnSpUql5+qWmMUCxAr82HzklY39uGktvD9zo9pPSXiaFlOVFXVyiLmhiRI/RUk7hYafooRNWGGfPmfoTAMgx48eGRwaGjxyFPxN6vi9e3bqhqHv3PNBk2Dn6IR5eeXiKz9cscgiGpigsrgRszkqjXVgLJ0L6n8h2tD9g4P3H6fd0NeTkiw01mNX+9oCX3c2cjJ+uRgTrv3NxMov5wsw2rA1PS88iHqrvleWsW4zLEwICPD6qdIStM3Zg4VqtXCwTH8Qgg7zolWXdrQeLFarxYPws+X85m2yh3IHLII7qlWym/5i1Jzbg+cwsWSj4+St1eYQ9D+tVule5jqeiE0cp/NX9b2TdTfzKVDh0MvFOVgsQOnlwjzemzUxiTbPxSr9XYZEy8u8F8jJpbqdJmSNWENO0Or9at0+jXaicTBDzwaxUTZxch/QqohTZI0mOuLVeIJVkyHjQhkvA8hbVrww1m3IbuzZe8fusqN+6vHCSDOmbOreHrtvfGQmWx8mb2HkULo2uzasuaM3P95TKcPBH4Xv7s9bgUXpvsm2vXwbriS/Qan+BR+vOg4AAAB4nGNgZGBgAGKpH/rO8fw2Xxm4mV8ABaI4H+9rQND//zC/YH4DVMnBwAQkGQBX3Q0FAAAAeJxjYGRgYH7BwIBEMjKgAh8ARYYDEAAAeJxjYGBgYH4xPDA9AAANeC3nAAB4nGNgAAIpBg+GOIYZDJsYHjHyMJoxZjAuYtzC+IyJgeke8x7mSywuLNtYTrAqsdawHmC9w/qFjYvNgS2CrYBtE9sTtk/sXOwS7EbsTewH2J9wuHH0cDzj+MOpxmnC6cQZwBnHWcBZxzmB8x7pEAB+RDEmAHicY2BkYGDwYZjHwMkAAkxAzAWEDAz/wXwGACCLAgoAeJx9kD1qw0AQhZ/8F2JDCIS4UrEQSBOQf0qT2oKAGxfuZWsly6y1YrU2+AY5SE6QQ6TMQXKKPK23sQvPwvC9N2+mWACP+EGApgI8uN5UC3dUZ26Tnj13yC+euxhg4rlH/91zH2/48DzAEw68EHTu6YT49Nxi/stzm/635w7513MXQ/x57iEM4LmPVRB6HuA1MEkemyJdJFaaIlFLmR9UcmVeqpU0daFLMYnGl4NYltKQU7E+ifqYT63NRGb0Xsx1aaVSWlRG7+TGRltrq9lolHk/2ug9EuSIYVAgxYLKQjqVQGFJzvkXisrcTN6arRzXVBolBP8/wvjmRkwunT77KbfWOLHXOHJvStcio86Y0diT5u56k1Z8mk7lZjs6G/oRtm6rwgwjvuwqHzHFS/808m/eAAB4nG2SB2/bMBCF/cWS7dhpk6Ztuvceauvune6Z/giGomUiEimQlO3k15e1gwABegCJ9x7uju8ObC21FtFv/T+2WKJNQkqHLj2W6TNghSMcZZU1jrHOcU5wkg1OcZoznOUc57nARS5xmStc5RrXucFNbnGbO9zlHvfJeMBDHjHkMU94yjOe84KXvOI1b3jLO96zyQc+8onPfOEr3/jOD37yi99s8ac1EEXhVCGCtqYjnLNT3xZedqQwUpWpHAsX1uRYyZ1tO8vmQOUbB4I2uQrKVdqIoNYP5MbsZ65IW1qX1ToS142kqYzvS2uCEzKoPJG23k2ls963pZ+k8WTDJFdepmoWDXTndzbsqVkt4lv5stpVmS+FHw8OUDZsR9wZ6TJaSUfa+ZAUTtdp4WxTJzElJKUahU6pTfTULa3ItSl6lZjpSu+ppFKm6cUZFsxYowbGhkyUpZ2qPK1jA9WutUlrPbFhzcVym203IViT2dFo9bBgUqeLcUi8mKi+r2KXLLdTsw//GRks4Dytt8DRZ4hLWg9OqcNbXZ5Ltlam15jFBAgKHIqAxmKY4pGUjNlhm1n8FzkVDTW7TBix12r9BZxqtRIAAA==\") format(\"woff\");\n font-weight: normal;\n font-style: normal;\n}\n.ag-icon {\n font-family: \"agGridMaterial\";\n font-size: 18px;\n line-height: 18px;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.ag-icon-aggregation::before {\n content: \"\\f101\";\n}\n\n.ag-icon-arrows::before {\n content: \"\\f102\";\n}\n\n.ag-icon-asc::before {\n content: \"\\f103\";\n}\n\n.ag-icon-cancel::before {\n content: \"\\f104\";\n}\n\n.ag-icon-chart::before {\n content: \"\\f105\";\n}\n\n.ag-icon-color-picker::before {\n content: \"\\f109\";\n}\n\n.ag-icon-columns::before {\n content: \"\\f10a\";\n}\n\n.ag-icon-contracted::before {\n content: \"\\f10b\";\n}\n\n.ag-icon-copy::before {\n content: \"\\f10c\";\n}\n\n.ag-icon-cross::before {\n content: \"\\f10d\";\n}\n\n.ag-icon-csv::before {\n content: \"\\f10e\";\n}\n\n.ag-icon-desc::before {\n content: \"\\f10f\";\n}\n\n.ag-icon-excel::before {\n content: \"\\f110\";\n}\n\n.ag-icon-expanded::before {\n content: \"\\f111\";\n}\n\n.ag-icon-eye-slash::before {\n content: \"\\f112\";\n}\n\n.ag-icon-eye::before {\n content: \"\\f113\";\n}\n\n.ag-icon-filter::before {\n content: \"\\f114\";\n}\n\n.ag-icon-first::before {\n content: \"\\f115\";\n}\n\n.ag-icon-grip::before {\n content: \"\\f116\";\n}\n\n.ag-icon-group::before {\n content: \"\\f117\";\n}\n\n.ag-icon-last::before {\n content: \"\\f118\";\n}\n\n.ag-icon-left::before {\n content: \"\\f119\";\n}\n\n.ag-icon-linked::before {\n content: \"\\f11a\";\n}\n\n.ag-icon-loading::before {\n content: \"\\f11b\";\n}\n\n.ag-icon-maximize::before {\n content: \"\\f11c\";\n}\n\n.ag-icon-menu::before {\n content: \"\\f11d\";\n}\n\n.ag-icon-minimize::before {\n content: \"\\f11e\";\n}\n\n.ag-icon-next::before {\n content: \"\\f11f\";\n}\n\n.ag-icon-none::before {\n content: \"\\f120\";\n}\n\n.ag-icon-not-allowed::before {\n content: \"\\f121\";\n}\n\n.ag-icon-paste::before {\n content: \"\\f122\";\n}\n\n.ag-icon-pin::before {\n content: \"\\f123\";\n}\n\n.ag-icon-pivot::before {\n content: \"\\f124\";\n}\n\n.ag-icon-previous::before {\n content: \"\\f125\";\n}\n\n.ag-icon-right::before {\n content: \"\\f128\";\n}\n\n.ag-icon-save::before {\n content: \"\\f129\";\n}\n\n.ag-icon-small-down::before {\n content: \"\\f12a\";\n}\n\n.ag-icon-small-left::before {\n content: \"\\f12b\";\n}\n\n.ag-icon-small-right::before {\n content: \"\\f12c\";\n}\n\n.ag-icon-small-up::before {\n content: \"\\f12d\";\n}\n\n.ag-icon-tick::before {\n content: \"\\f12e\";\n}\n\n.ag-icon-tree-closed::before {\n content: \"\\f12f\";\n}\n\n.ag-icon-tree-indeterminate::before {\n content: \"\\f130\";\n}\n\n.ag-icon-tree-open::before {\n content: \"\\f131\";\n}\n\n.ag-icon-unlinked::before {\n content: \"\\f132\";\n}\n\n.ag-icon-row-drag::before {\n content: \"\\f116\";\n}\n\n.ag-left-arrow::before {\n content: \"\\f119\";\n}\n\n.ag-right-arrow::before {\n content: \"\\f128\";\n}\n", ""]);
58684// Exports
58685module.exports = exports;
58686
58687
58688/***/ })
58689/******/ ])});;
\No newline at end of file